diff --git a/README.md b/README.md index d835544..9b825d3 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,13 @@ ## Overview ## *Recent changes Gamepedia compatible Discord webhook* is a project made from earlier recent changes module of IRC bot. It has been remade as independent script for public use. -Screenshots of the script can be found [on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Presentation). +Screenshots of the script in action can be found [on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Presentation). ### Features ### * Fetch recent changes from Gamepedia wiki and send them to Discord channel using a webhook +* Two appearance modes - embed and compact * Send daily overviews, that show general information about wiki activity * Supports multiple languages (included EN, PL, BR, RU, FR) -* Re-sends missed edits after down-time +* Re-sends missed edits after start ### Dependencies ### * **Python 3.6>** @@ -15,11 +16,11 @@ Screenshots of the script can be found [on the wiki](https://gitlab.com/piotrex4 * schedule 0.5.0> * lxml 4.2.1> -### Settings.json ### +### settings.json ### [Explanation for settings](https://gitlab.com/piotrex43/RcGcDw/wikis/settings.json) ### How to use ### -[Refer to the guide on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Guide) +[Refer to the guide on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Guide). If you don't have the means to host it you can request me to host it for you. ### Contributors ### * MarkusRost for enormous help with pointing out bugs, space for improvements and contributing to the code. diff --git a/locale/de/LC_MESSAGES/rcgcdw.mo b/locale/de/LC_MESSAGES/rcgcdw.mo index 22ce0e8..8e2fcbb 100644 Binary files a/locale/de/LC_MESSAGES/rcgcdw.mo and b/locale/de/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/de/LC_MESSAGES/rcgcdw.po b/locale/de/LC_MESSAGES/rcgcdw.po index df41d07..76e1913 100644 --- a/locale/de/LC_MESSAGES/rcgcdw.po +++ b/locale/de/LC_MESSAGES/rcgcdw.po @@ -1,60 +1,462 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR ORGANIZATION -# FIRST AUTHOR , YEAR. -# msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-09 13:58+0100\n" -"PO-Revision-Date: 2019-03-09 15:12+0100\n" +"POT-Creation-Date: 2019-04-22 12:20+0200\n" +"PO-Revision-Date: 2019-04-22 12:29+0200\n" "Last-Translator: Frisk \n" -"Language-Team: \n" +"Language-Team: German\n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Loco-Source-Locale: de_DE\n" "Generated-By: pygettext.py 1.5\n" "X-Generator: Poedit 2.2.1\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Loco-Parser: loco_parse_po\n" + +#: rcgcdw.py:175 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" +"[{author}]({author_url}) bearbeitete [{article}]({edit_link}){comment} " +"({sign}{edit_size})" + +#: rcgcdw.py:177 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" +"[{author}]({author_url}) erstellte [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" + +#: rcgcdw.py:181 +#, python-brace-format +msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" +msgstr "[{author}]({author_url}) lud [{file}]({file_link}) hoch{comment}" + +#: rcgcdw.py:189 +#, python-brace-format +msgid "" +"[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" +"{comment}" +msgstr "" +"[{author}]({author_url}) lud eine neue Version von [{file}]({file_link}) " +"hoch{comment}" + +#: rcgcdw.py:193 +#, python-brace-format +msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" +msgstr "[{author}]({author_url}) löschte [{page}]({page_link}){comment}" + +#: rcgcdw.py:198 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted redirect by overwriting [{page}]" +"({page_link}){comment}" +msgstr "" +"[{author}]({author_url}) löschte die Weiterleitung [{page}]({page_link}) " +"durch Überschreiben{comment}" + +#: rcgcdw.py:203 rcgcdw.py:209 +msgid "without making a redirect" +msgstr "ohne eine Weiterleitung zu erstellen" + +#: rcgcdw.py:203 rcgcdw.py:210 +msgid "with a redirect" +msgstr "und erstellte eine Weiterleitung" #: rcgcdw.py:204 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" +"({target_url}) {made_a_redirect}{comment}" +msgstr "" +"[{author}]({author_url}) verschob {redirect}*{article}* nach [{target}]" +"({target_url}) {made_a_redirect}{comment}" + +#: rcgcdw.py:211 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* over redirect to " +"[{target}]({target_url}) {made_a_redirect}{comment}" +msgstr "" +"[{author}]({author_url}) verschob {redirect}*{article}* nach [{target}]" +"({target_url}) und überschrieb eine Weiterleitung {made_a_redirect}{comment}" + +#: rcgcdw.py:217 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved protection settings from {redirect}*{article}" +"* to [{target}]({target_url}){comment}" +msgstr "" +"[{author}]({author_url}) verschob die Schutzeinstellungen von {redirect}" +"*{article}* nach [{target}]({target_url}){comment}" + +#: rcgcdw.py:224 rcgcdw.py:580 +msgid "infinity and beyond" +msgstr "alle Ewigkeit" + +#: rcgcdw.py:239 +#, python-brace-format +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +msgstr "" +"[{author}]({author_url}) sperrte [{user}]({user_url}) für {time}{comment}" + +#: rcgcdw.py:244 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed block settings for [{blocked_user}]" +"({user_url}){comment}" +msgstr "" +"[{author}]({author_url}) änderte die Sperreinstellungen für [{blocked_user}]" +"({user_url}){comment}" + +#: rcgcdw.py:249 +#, python-brace-format +msgid "" +"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" +msgstr "" +"[{author}]({author_url}) hob die Sperre von [{blocked_user}]({user_url}) " +"auf{comment}" + +#: rcgcdw.py:253 +#, python-brace-format +msgid "" +"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" +msgstr "" +"[{author}]({author_url}) hinterließ ein [Kommentar]({comment}) auf dem " +"Profil von {target}" + +#: rcgcdw.py:253 +msgid "their own profile" +msgstr "das eigene Profil" + +#: rcgcdw.py:258 +#, python-brace-format +msgid "" +"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " +"profile" +msgstr "" +"[{author}]({author_url}) antwortete auf ein [Kommentar]({comment}) auf dem " +"Profil von {target}" + +#: rcgcdw.py:261 rcgcdw.py:269 rcgcdw.py:276 rcgcdw.py:307 +msgid "their own" +msgstr "sich selbst" + +#: rcgcdw.py:266 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" +msgstr "" +"[{author}]({author_url}) bearbeitete ein [Kommentar]({comment}) auf dem " +"Profil von {target}" + +#: rcgcdw.py:274 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a comment on {target} profile" +msgstr "" +"[{author}]({author_url}) löschte ein Kommentar auf dem Profil von {target}" + +#: rcgcdw.py:282 rcgcdw.py:630 +msgid "Location" +msgstr "Wohnort" + +#: rcgcdw.py:284 rcgcdw.py:632 +msgid "About me" +msgstr "\"Über mich\"-Abschnitt" + +#: rcgcdw.py:286 rcgcdw.py:634 +msgid "Google link" +msgstr "Google-Link" + +#: rcgcdw.py:288 rcgcdw.py:636 +msgid "Facebook link" +msgstr "Facebook-Link" + +#: rcgcdw.py:290 rcgcdw.py:638 +msgid "Twitter link" +msgstr "Twitter-Link" + +#: rcgcdw.py:292 rcgcdw.py:640 +msgid "Reddit link" +msgstr "Reddit-Link" + +#: rcgcdw.py:294 rcgcdw.py:642 +msgid "Twitch link" +msgstr "Twitch-Link" + +#: rcgcdw.py:296 rcgcdw.py:644 +msgid "PSN link" +msgstr "PSN-Link" + +#: rcgcdw.py:298 rcgcdw.py:646 +msgid "VK link" +msgstr "VK-Link" + +#: rcgcdw.py:300 rcgcdw.py:648 +msgid "XVL link" +msgstr "Xbox-Live-Link" + +#: rcgcdw.py:302 rcgcdw.py:650 +msgid "Steam link" +msgstr "Steam-Link" + +#: rcgcdw.py:304 +msgid "unknown" +msgstr "unbekannt" + +#: rcgcdw.py:305 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the {field} on [{target}]({target_url})'s " +"profile. *({desc})*" +msgstr "" +"[{author}]({author_url}) bearbeitete den {field} auf dem Profil von " +"[{target}]({target_url}). *({desc})*" + +#: rcgcdw.py:320 rcgcdw.py:322 rcgcdw.py:681 rcgcdw.py:683 +msgid "none" +msgstr "keine" + +#: rcgcdw.py:328 rcgcdw.py:668 +msgid "System" +msgstr "System" + +#: rcgcdw.py:334 +#, python-brace-format +msgid "" +"[{author}]({author_url}) protected [{article}]({article_url}) with the " +"following settings: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) schützte [{article}]({article_url}) {settings}" +"{comment}" + +#: rcgcdw.py:336 rcgcdw.py:345 rcgcdw.py:692 rcgcdw.py:699 +msgid " [cascading]" +msgstr " [kaskadierend]" + +#: rcgcdw.py:342 +#, python-brace-format +msgid "" +"[{author}]({author_url}) modified protection settings of [{article}]" +"({article_url}) to: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) änderte den Schutzstatus von [{article}]" +"({article_url}) {settings}{comment}" + +#: rcgcdw.py:350 +#, python-brace-format +msgid "" +"[{author}]({author_url}) removed protection from [{article}]({article_url})" +"{comment}" +msgstr "" +"[{author}]({author_url}) entfernte den Schutz von [{article}]({article_url})" +"{comment}" + +#: rcgcdw.py:355 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed visibility of revision on page [{article}]" +"({article_url}){comment}" +msgid_plural "" +"[{author}]({author_url}) changed visibility of {amount} revisions on page " +"[{article}]({article_url}){comment}" +msgstr[0] "" +"[{author}]({author_url}) änderte die Sichtbarkeit einer Version von " +"[{article}]({article_url}){comment}" +msgstr[1] "" +"[{author}]({author_url}) änderte die Sichtbarkeit von {amount} Versionen von " +"[{article}]({article_url}){comment}" + +#: rcgcdw.py:361 +#, python-brace-format +msgid "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revision{comment}" +msgid_plural "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revisions{comment}" +msgstr[0] "" +"[{author}]({author_url}) importierte [{article}]({article_url}) mit einer " +"Version{comment}" +msgstr[1] "" +"[{author}]({author_url}) importierte [{article}]({article_url}) mit {count} " +"Versionen{comment}" + +#: rcgcdw.py:367 +#, python-brace-format +msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" +msgstr "" +"[{author}]({author_url}) stellte [{article}]({article_url}) wieder " +"her{comment}" + +#: rcgcdw.py:369 +#, python-brace-format +msgid "[{author}]({author_url}) changed visibility of log events{comment}" +msgstr "" +"[{author}]({author_url}) änderte die Sichtbarkeit eines " +"Logbucheintrags{comment}" + +#: rcgcdw.py:371 +#, python-brace-format +msgid "[{author}]({author_url}) imported interwiki{comment}" +msgstr "[{author}]({author_url}) importierte Interwiki{comment}" + +#: rcgcdw.py:374 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) änderte [Missbrauchsfilter {number}]({filter_url})" + +#: rcgcdw.py:377 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) erstellte [Missbrauchsfilter {number}]({filter_url})" + +#: rcgcdw.py:383 +#, python-brace-format +msgid "" +"[{author}]({author_url}) merged revision histories of [{article}]" +"({article_url}) into [{dest}]({dest_url}){comment}" +msgstr "" +"[{author}]({author_url}) vereinigte Versionen von [{article}]({article_url}) " +"in [{dest}]({dest_url}){comment}" + +#: rcgcdw.py:387 +#, python-brace-format +msgid "" +"[{author}]({author_url}) added an entry to the [interwiki table]" +"({table_url}) pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) erstellte den [Interwiki-Präfix]({table_url}) " +"{prefix} nach {website}" + +#: rcgcdw.py:393 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " +"pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) bearbeitete den [Interwiki-Präfix]({table_url}) " +"{prefix} nach {website}" + +#: rcgcdw.py:399 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" +msgstr "[{author}]({author_url}) entfernte ein [Interwiki-Präfix]({table_url})" + +#: rcgcdw.py:403 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed the content model of the page [{article}]" +"({article_url}) from {old} to {new}{comment}" +msgstr "" +"[{author}]({author_url}) änderte das Inhaltsmodell der Seite [{article}]" +"({article_url}) von {old} zu {new}{comment}" + +#: rcgcdw.py:408 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" +msgstr "" +"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" + +#: rcgcdw.py:412 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created the sprite sheet for [{article}]" +"({article_url})" +msgstr "" +"[{author}]({author_url}) erstellte das Sprite-sheet für [{article}]" +"({article_url})" + +#: rcgcdw.py:416 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the slice for [{article}]({article_url})" +msgstr "" +"[{author}]({author_url}) edited the slice for [{article}]({article_url})" + +#: rcgcdw.py:419 +#, python-brace-format +msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgstr "" +"[{author}]({author_url}) erstellte eine [Markierung]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:423 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" +msgstr "" +"[{author}]({author_url}) löschte eine [Markierung]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:427 +#, python-brace-format +msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" +msgstr "" +"[{author}]({author_url}) aktivierte eine [Markierung]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:430 +#, python-brace-format +msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" +msgstr "" +"[{author}]({author_url}) deaktivierte eine [Markierung]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:433 +msgid "An action has been hidden by administration." +msgstr "Eine Aktion wurde versteckt." + +#: rcgcdw.py:441 rcgcdw.py:684 +msgid "No description provided" +msgstr "Keine Zusammenfassung angegeben" + +#: rcgcdw.py:489 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:205 +#: rcgcdw.py:490 msgid "m " msgstr "K " -#: rcgcdw.py:230 rcgcdw.py:262 +#: rcgcdw.py:514 rcgcdw.py:546 msgid "Options" msgstr "Optionen" -#: rcgcdw.py:230 +#: rcgcdw.py:514 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([Vorschau]({link}) | [zurücksetzen]({undolink}))" -#: rcgcdw.py:232 +#: rcgcdw.py:516 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Neue Dateiversion {name}" -#: rcgcdw.py:234 +#: rcgcdw.py:518 #, python-brace-format msgid "Uploaded {name}" msgstr "Neue Datei {name}" -#: rcgcdw.py:249 +#: rcgcdw.py:533 msgid "**No license!**" msgstr "**Keine Lizenz!**" -#: rcgcdw.py:262 +#: rcgcdw.py:546 #, python-brace-format msgid "([preview]({link}))" msgstr "([Vorschau]({link}))" -#: rcgcdw.py:263 +#: rcgcdw.py:547 #, python-brace-format msgid "" "{desc}\n" @@ -63,536 +465,476 @@ msgstr "" "{desc}\n" "Lizenz: {license}" -#: rcgcdw.py:268 +#: rcgcdw.py:552 #, python-brace-format msgid "Deleted page {article}" msgstr "Löschte {article}" -#: rcgcdw.py:272 +#: rcgcdw.py:556 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Löschte die Weiterleitung {article} um Platz zu machen" -#: rcgcdw.py:277 +#: rcgcdw.py:561 msgid "No redirect has been made" msgstr "Die Erstellung einer Weiterleitung wurde unterdrückt" -#: rcgcdw.py:279 +#: rcgcdw.py:562 msgid "A redirect has been made" msgstr "Eine Weiterleitung wurde erstellt" -#: rcgcdw.py:280 +#: rcgcdw.py:563 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Verschob {redirect}{article} nach {target}" -#: rcgcdw.py:284 +#: rcgcdw.py:567 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" -msgstr "Verschob {redirect}{article} nach {title} und überschrieb eine Weiterleitung" +msgstr "" +"Verschob {redirect}{article} nach {title} und überschrieb eine Weiterleitung" -#: rcgcdw.py:289 +#: rcgcdw.py:572 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Verschob die Schutzeinstellungen von {redirect}{article} nach {title}" -#: rcgcdw.py:297 -msgid "infinity and beyond" -msgstr "alle Ewigkeit" - -#: rcgcdw.py:307 +#: rcgcdw.py:590 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Sperrte {blocked_user} für {time}" -#: rcgcdw.py:313 +#: rcgcdw.py:596 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Änderte die Sperreinstellungen für {blocked_user}" -#: rcgcdw.py:319 +#: rcgcdw.py:602 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Hob die Sperre von {blocked_user} auf" -#: rcgcdw.py:324 +#: rcgcdw.py:607 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Hinterließ ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:328 +#: rcgcdw.py:609 msgid "Left a comment on their own profile" -msgstr "Hinterließ ein Kommentar auf seinem eigenen Profil" +msgstr "Hinterließ ein Kommentar auf dem eigenen Profil" -#: rcgcdw.py:333 +#: rcgcdw.py:614 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Antwortete auf ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:337 +#: rcgcdw.py:616 msgid "Replied to a comment on their own profile" -msgstr "Antwortete auf ein Kommentar auf seinem eigenen Profil" +msgstr "Antwortete auf ein Kommentar auf dem eigenen Profil" -#: rcgcdw.py:342 +#: rcgcdw.py:621 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Bearbeitete ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:346 +#: rcgcdw.py:623 msgid "Edited a comment on their own profile" -msgstr "Bearbeitete ein Kommentar auf seinem eigenen Profil" +msgstr "Bearbeitete ein Kommentar auf dem eigenen Profil" -#: rcgcdw.py:353 -msgid "Location" -msgstr "Wohnort" - -#: rcgcdw.py:355 -msgid "About me" -msgstr "\"Über mich\"-Abschnitt" - -#: rcgcdw.py:357 -msgid "Google link" -msgstr "Google-Konto" - -#: rcgcdw.py:359 -msgid "Facebook link" -msgstr "Facebook-Seite" - -#: rcgcdw.py:361 -msgid "Twitter link" -msgstr "Twitter-Benutzernamen" - -#: rcgcdw.py:363 -msgid "Reddit link" -msgstr "Reddit-Benutzernamen" - -#: rcgcdw.py:365 -msgid "Twitch link" -msgstr "Twitch-Account" - -#: rcgcdw.py:367 -msgid "PSN link" -msgstr "PSN-Account" - -#: rcgcdw.py:369 -msgid "VK link" -msgstr "VK-Account" - -#: rcgcdw.py:371 -msgid "XVL link" -msgstr "Xbox-Live-Tag" - -#: rcgcdw.py:373 -msgid "Steam link" -msgstr "Steam-Account" - -#: rcgcdw.py:375 +#: rcgcdw.py:652 rcgcdw.py:791 msgid "Unknown" msgstr "Unbekannt" -#: rcgcdw.py:376 +#: rcgcdw.py:653 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Bearbeitete das Profil von {target}" -#: rcgcdw.py:377 +#: rcgcdw.py:653 msgid "Edited their own profile" msgstr "Bearbeitete das eigene Profil" -#: rcgcdw.py:378 +#: rcgcdw.py:655 +#, python-brace-format +msgid "Cleared the {field} field" +msgstr "Entfernte den {field}" + +#: rcgcdw.py:657 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "{field} geändert zu: {desc}" -#: rcgcdw.py:383 +#: rcgcdw.py:662 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Löschte ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:387 +#: rcgcdw.py:666 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Änderte die Gruppenzugehörigkeit von {target}" -#: rcgcdw.py:389 -msgid "System" -msgstr "System" - -#: rcgcdw.py:391 +#: rcgcdw.py:670 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} got autopromoted to a new usergroup" -#: rcgcdw.py:402 rcgcdw.py:404 -msgid "none" -msgstr "keine" - -#: rcgcdw.py:405 rcgcdw.py:586 -msgid "No description provided" -msgstr "Keine Zusammenfassung angegeben" - -#: rcgcdw.py:406 +#: rcgcdw.py:685 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" -msgstr "Änderte die Gruppenzugehörigkeit von {old_groups} auf {new_groups}{reason}" +msgstr "" +"Änderte die Gruppenzugehörigkeit von {old_groups} auf {new_groups}{reason}" -#: rcgcdw.py:411 +#: rcgcdw.py:690 #, python-brace-format msgid "Protected {target}" msgstr "Schützte {target}" -#: rcgcdw.py:413 rcgcdw.py:420 -msgid " [cascading]" -msgstr " [kaskadierend]" - -#: rcgcdw.py:418 +#: rcgcdw.py:697 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Änderte den Schutzstatus von {article}" -#: rcgcdw.py:425 +#: rcgcdw.py:704 #, python-brace-format msgid "Removed protection from {article}" msgstr "Entfernte den Schutz von {article}" -#: rcgcdw.py:430 +#: rcgcdw.py:709 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " msgstr[0] "Änderte die Sichtbarkeit einer Versionen von {article} " msgstr[1] "Änderte die Sichtbarkeit von {amount} Versionen von {article} " -#: rcgcdw.py:436 +#: rcgcdw.py:715 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" msgstr[0] "Importierte {article} mit einer Version" msgstr[1] "Importierte {article} mit {count} Versionen" -#: rcgcdw.py:442 +#: rcgcdw.py:721 #, python-brace-format msgid "Restored {article}" msgstr "Stellte {article} wieder her" -#: rcgcdw.py:445 +#: rcgcdw.py:724 msgid "Changed visibility of log events" msgstr "Änderte die Sichtbarkeit eines Logbucheintrags" -#: rcgcdw.py:448 +#: rcgcdw.py:727 msgid "Imported interwiki" msgstr "Importierte Interwiki" -#: rcgcdw.py:451 +#: rcgcdw.py:730 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Änderte Missbrauchsfilter {number}" -#: rcgcdw.py:454 +#: rcgcdw.py:733 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Erstellte Missbrauchsfilter {number}" -#: rcgcdw.py:458 +#: rcgcdw.py:737 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" -msgstr "Vereinigte Versionsgeschichten von {article} in {dest}" +msgstr "Vereinigte Versionen von {article} in {dest}" -#: rcgcdw.py:462 +#: rcgcdw.py:741 msgid "Added an entry to the interwiki table" msgstr "Fügte ein Interwiki-Präfix hinzu" -#: rcgcdw.py:463 rcgcdw.py:469 +#: rcgcdw.py:742 rcgcdw.py:748 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Präfix: {prefix}, URL: {website} | {desc}" -#: rcgcdw.py:468 +#: rcgcdw.py:747 msgid "Edited an entry in interwiki table" msgstr "Änderte ein Interwiki-Präfix" -#: rcgcdw.py:474 +#: rcgcdw.py:753 msgid "Deleted an entry in interwiki table" msgstr "Entfernte ein Interwiki-Präfix" -#: rcgcdw.py:475 +#: rcgcdw.py:754 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Präfix: {prefix} | {desc}" -#: rcgcdw.py:479 +#: rcgcdw.py:758 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Änderte das Inhaltsmodell von {article}" -#: rcgcdw.py:480 +#: rcgcdw.py:759 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Modell geändert von {old} zu {new}: {reason}" -#: rcgcdw.py:486 +#: rcgcdw.py:765 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edited the sprite for {article}" -#: rcgcdw.py:490 +#: rcgcdw.py:769 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Created the sprite sheet for {article}" -#: rcgcdw.py:494 +#: rcgcdw.py:773 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Edited the slice for {article}" -#: rcgcdw.py:497 +#: rcgcdw.py:776 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Erstellte die Markierung \"{tag}\"" -#: rcgcdw.py:501 +#: rcgcdw.py:780 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Löschte die Markierung \"{tag}\"" -#: rcgcdw.py:505 +#: rcgcdw.py:784 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Aktivierte die Markierung \"{tag}\"" -#: rcgcdw.py:508 +#: rcgcdw.py:787 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Deaktivierte die Markierung \"{tag}\"" -#: rcgcdw.py:511 +#: rcgcdw.py:790 msgid "Action has been hidden by administration." msgstr "Aktion wurde versteckt" -#: rcgcdw.py:532 +#: rcgcdw.py:817 msgid "Tags" msgstr "Markierungen" -#: rcgcdw.py:538 +#: rcgcdw.py:823 msgid "**Added**: " msgstr "**Hinzugefügt:** " -#: rcgcdw.py:538 +#: rcgcdw.py:823 msgid " and {} more\n" msgstr " und {} mehr\n" -#: rcgcdw.py:539 +#: rcgcdw.py:824 msgid "**Removed**: " msgstr "**Entfernt:** " -#: rcgcdw.py:539 +#: rcgcdw.py:824 msgid " and {} more" msgstr " und {} mehr" -#: rcgcdw.py:540 +#: rcgcdw.py:825 msgid "Changed categories" msgstr "Geänderte Kategorien" -#: rcgcdw.py:582 +#: rcgcdw.py:866 msgid "~~hidden~~" msgstr "~~versteckt~~" -#: rcgcdw.py:591 +#: rcgcdw.py:872 msgid "hidden" msgstr "versteckt" -#: rcgcdw.py:722 -msgid "Unable to process the event" -msgstr "Ereignis kann nicht verabreitet werden" - -#: rcgcdw.py:722 -msgid "error" -msgstr "Fehler" - -#: rcgcdw.py:827 +#: rcgcdw.py:975 msgid "Daily overview" msgstr "Tägliche Übersicht" -#: rcgcdw.py:837 +#: rcgcdw.py:985 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " (eine Aktion)" msgstr[1] " ({} Aktionen)" -#: rcgcdw.py:841 +#: rcgcdw.py:989 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " (eine Änderung)" msgstr[1] " ({} Änderungen)" -#: rcgcdw.py:846 +#: rcgcdw.py:994 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC (eine Aktion)" msgstr[1] " UTC ({} Aktionen)" -#: rcgcdw.py:848 rcgcdw.py:849 rcgcdw.py:853 +#: rcgcdw.py:996 rcgcdw.py:997 rcgcdw.py:1001 msgid "But nobody came" msgstr "Keine Aktivität" -#: rcgcdw.py:856 +#: rcgcdw.py:1004 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Aktivster Benutzer" msgstr[1] "Aktivste Benutzer" -#: rcgcdw.py:857 +#: rcgcdw.py:1005 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Meist bearbeiteter Artikel" msgstr[1] "Meist bearbeitete Artikel" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "Edits made" msgstr "Bearbeitungen" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "New files" msgstr "Neue Dateien" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "Admin actions" msgstr "Admin-Aktionen" -#: rcgcdw.py:859 +#: rcgcdw.py:1007 msgid "Bytes changed" msgstr "Bytes geändert" -#: rcgcdw.py:859 +#: rcgcdw.py:1007 msgid "New articles" msgstr "Neue Artikel" -#: rcgcdw.py:860 +#: rcgcdw.py:1008 msgid "Unique contributors" msgstr "Einzelne Autoren" -#: rcgcdw.py:861 +#: rcgcdw.py:1009 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Aktivste Stunde" msgstr[1] "Aktivste Stunden" -#: rcgcdw.py:862 +#: rcgcdw.py:1010 msgid "Day score" msgstr "Tageswert" -#: rcgcdw.py:1009 +#: rcgcdw.py:1157 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "{wiki} scheint wieder erreichbar zu sein." -#: rcgcdw.py:1010 rcgcdw.py:1115 +#: rcgcdw.py:1158 rcgcdw.py:1269 msgid "Connection status" msgstr "Verbindungsstatus" -#: rcgcdw.py:1114 +#: rcgcdw.py:1268 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "Das {wiki} scheint unerreichbar zu sein." -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "director" msgstr "Direktor" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "bot" msgstr "Bot" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "editor" msgstr "editor" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "directors" msgstr "Direktor" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "sysop" msgstr "Administrator" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "bureaucrat" msgstr "Bürokrat" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "reviewer" msgstr "reviewer" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "autoreview" msgstr "autoreview" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "autopatrol" msgstr "autopatrol" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "wiki_guardian" msgstr "Wiki Guardian" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "second" msgid_plural "seconds" msgstr[0] "Sekunde" msgstr[1] "Sekunden" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "minute" msgid_plural "minutes" msgstr[0] "Minute" msgstr[1] "Minuten" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "hour" msgid_plural "hours" msgstr[0] "Stunde" msgstr[1] "Stunden" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "day" msgid_plural "days" msgstr[0] "Tag" msgstr[1] "Tage" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "week" msgid_plural "weeks" msgstr[0] "Woche" msgstr[1] "Wochen" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "month" msgid_plural "months" msgstr[0] "Monat" msgstr[1] "Monate" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "year" msgid_plural "years" msgstr[0] "Jahr" msgstr[1] "Jahre" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "millennium" msgid_plural "millennia" msgstr[0] "Jahrtausend" msgstr[1] "Jahrtausende" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "decade" msgid_plural "decades" msgstr[0] "Jahrzehnt" msgstr[1] "Jahrzehnte" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "century" msgid_plural "centuries" msgstr[0] "Jahrhundert" msgstr[1] "Jahrhunderte" -#~ msgid "{wiki} is back up!" -#~ msgstr "Das {wiki} ist wieder erreichbar." +#~ msgid "" +#~ "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " +#~ "[{target}]({target_url}){comment}" +#~ msgstr "" +#~ "[{author}]({author_url}) verschob {redirect}*{article}* nach [{target}]" +#~ "({target_url}) und überschrieb eine Weiterleitung {made_a_redirect}" +#~ "{comment}" diff --git a/locale/en/LC_MESSAGES/rcgcdw.mo b/locale/en/LC_MESSAGES/rcgcdw.mo index a357590..5e11898 100644 Binary files a/locale/en/LC_MESSAGES/rcgcdw.mo and b/locale/en/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/en/LC_MESSAGES/rcgcdw.po b/locale/en/LC_MESSAGES/rcgcdw.po index 679d944..d4f3eca 100644 --- a/locale/en/LC_MESSAGES/rcgcdw.po +++ b/locale/en/LC_MESSAGES/rcgcdw.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-09 13:58+0100\n" -"PO-Revision-Date: 2019-03-09 18:40+0100\n" +"POT-Creation-Date: 2019-04-17 20:13+0200\n" +"PO-Revision-Date: 2019-04-17 20:30+0200\n" "Last-Translator: Frisk \n" "Language-Team: \n" "Language: en\n" @@ -18,43 +18,436 @@ msgstr "" "X-Generator: Poedit 2.2.1\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: rcgcdw.py:204 +#: rcgcdw.py:174 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" +"[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" + +#: rcgcdw.py:176 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" +"[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" + +#: rcgcdw.py:180 +#, python-brace-format +msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" +msgstr "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" + +#: rcgcdw.py:188 +#, python-brace-format +msgid "" +"[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" +"{comment}" +msgstr "" +"[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" +"{comment}" + +#: rcgcdw.py:192 +#, python-brace-format +msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" +msgstr "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" + +#: rcgcdw.py:197 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted redirect by overwriting [{page}]" +"({page_link}){comment}" +msgstr "" +"[{author}]({author_url}) deleted redirect by overwriting [{page}]" +"({page_link}){comment}" + +#: rcgcdw.py:202 +msgid "without making a redirect" +msgstr "without making a redirect" + +#: rcgcdw.py:202 +msgid "with a redirect" +msgstr "with a redirect" + +#: rcgcdw.py:203 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" +"({target_url}) {made_a_redirect}{comment}" +msgstr "" +"[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" +"({target_url}) {made_a_redirect}{comment}" + +#: rcgcdw.py:208 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* over redirect to " +"[{target}]({target_url}){comment}" +msgstr "" +"[{author}]({author_url}) moved {redirect}*{article}* over redirect to " +"[{target}]({target_url}){comment}" + +#: rcgcdw.py:214 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved protection settings from {redirect}*{article}" +"* to [{target}]({target_url}){comment}" +msgstr "" +"[{author}]({author_url}) moved protection settings from {redirect}*{article}" +"* to [{target}]({target_url}){comment}" + +#: rcgcdw.py:221 rcgcdw.py:575 +msgid "infinity and beyond" +msgstr "infinity and beyond" + +#: rcgcdw.py:236 +#, python-brace-format +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +msgstr "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" + +#: rcgcdw.py:241 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed block settings for [{blocked_user}]" +"({user_url}){comment}" +msgstr "" +"[{author}]({author_url}) changed block settings for [{blocked_user}]" +"({user_url}){comment}" + +#: rcgcdw.py:246 +#, python-brace-format +msgid "" +"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" +msgstr "" +"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" + +#: rcgcdw.py:250 +#, python-brace-format +msgid "" +"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" +msgstr "" +"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" + +#: rcgcdw.py:250 rcgcdw.py:258 rcgcdw.py:266 rcgcdw.py:273 +msgid "their own profile" +msgstr "their own profile" + +#: rcgcdw.py:255 +#, python-brace-format +msgid "" +"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " +"profile" +msgstr "" +"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " +"profile" + +#: rcgcdw.py:263 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" +msgstr "" +"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" + +#: rcgcdw.py:271 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a comment on {target} profile" +msgstr "[{author}]({author_url}) deleted a comment on {target} profile" + +#: rcgcdw.py:279 rcgcdw.py:625 +msgid "Location" +msgstr "Location" + +#: rcgcdw.py:281 rcgcdw.py:627 +msgid "About me" +msgstr "About me" + +#: rcgcdw.py:283 rcgcdw.py:629 +msgid "Google link" +msgstr "Google link" + +#: rcgcdw.py:285 rcgcdw.py:631 +msgid "Facebook link" +msgstr "Facebook link" + +#: rcgcdw.py:287 rcgcdw.py:633 +msgid "Twitter link" +msgstr "Twitter link" + +#: rcgcdw.py:289 rcgcdw.py:635 +msgid "Reddit link" +msgstr "Reddit link" + +#: rcgcdw.py:291 rcgcdw.py:637 +msgid "Twitch link" +msgstr "Twitch link" + +#: rcgcdw.py:293 rcgcdw.py:639 +msgid "PSN link" +msgstr "PSN link" + +#: rcgcdw.py:295 rcgcdw.py:641 +msgid "VK link" +msgstr "VK link" + +#: rcgcdw.py:297 rcgcdw.py:643 +msgid "XVL link" +msgstr "XVL link" + +#: rcgcdw.py:299 rcgcdw.py:645 +msgid "Steam link" +msgstr "Steam link" + +#: rcgcdw.py:301 rcgcdw.py:647 +msgid "Unknown" +msgstr "Unknown" + +#: rcgcdw.py:302 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited {field} of [{target}]({target_url}) profile " +"to {desc}" +msgstr "" +"[{author}]({author_url}) edited {field} of [{target}]({target_url}) profile " +"to {desc}" + +#: rcgcdw.py:304 +msgid "their own" +msgstr "their own" + +#: rcgcdw.py:317 rcgcdw.py:319 rcgcdw.py:676 rcgcdw.py:678 +msgid "none" +msgstr "none" + +#: rcgcdw.py:325 rcgcdw.py:663 +msgid "System" +msgstr "System" + +#: rcgcdw.py:331 +#, python-brace-format +msgid "" +"[{author}]({author_url}) protected [{article}]({article_url}) with the " +"following settings: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) protected [{article}]({article_url}) with the " +"following settings: {settings}{comment}" + +#: rcgcdw.py:333 rcgcdw.py:342 rcgcdw.py:687 rcgcdw.py:694 +msgid " [cascading]" +msgstr " [cascading]" + +#: rcgcdw.py:339 +#, python-brace-format +msgid "" +"[{author}]({author_url}) modified protection settings of [{article}]" +"({article_url}) to: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) modified protection settings of [{article}]" +"({article_url}) to: {settings}{comment}" + +#: rcgcdw.py:347 +#, python-brace-format +msgid "" +"[{author}]({author_url}) removed protection from [{article}]({article_url})" +"{comment}" +msgstr "" +"[{author}]({author_url}) removed protection from [{article}]({article_url})" +"{comment}" + +#: rcgcdw.py:352 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed visibility of revision on page [{article}]" +"({article_url}){comment}" +msgid_plural "" +"[{author}]({author_url}) changed visibility of {amount} revisions on page " +"[{article}]({article_url}){comment}" +msgstr[0] "" +"[{author}]({author_url}) changed visibility of revision on page [{article}]" +"({article_url}){comment}" +msgstr[1] "" +"[{author}]({author_url}) changed visibility of {amount} revisions on page " +"[{article}]({article_url}){comment}" + +#: rcgcdw.py:358 +#, python-brace-format +msgid "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revision{comment}" +msgid_plural "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revisions{comment}" +msgstr[0] "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revision{comment}" +msgstr[1] "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revisions{comment}" + +#: rcgcdw.py:364 +#, python-brace-format +msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" +msgstr "[{author}]({author_url}) restored [{article}]({article_url}){comment}" + +#: rcgcdw.py:366 +#, python-brace-format +msgid "[{author}]({author_url}) changed visibility of log events{comment}" +msgstr "[{author}]({author_url}) changed visibility of log events{comment}" + +#: rcgcdw.py:368 +#, python-brace-format +msgid "[{author}]({author_url}) imported interwiki{comment}" +msgstr "[{author}]({author_url}) imported interwiki{comment}" + +#: rcgcdw.py:371 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" + +#: rcgcdw.py:374 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" + +#: rcgcdw.py:380 +#, python-brace-format +msgid "" +"[{author}]({author_url}) merged revision histories of [{article}]" +"({article_url}) into [{dest}]({dest_url}){comment}" +msgstr "" +"[{author}]({author_url}) merged revision histories of [{article}]" +"({article_url}) into [{dest}]({dest_url}){comment}" + +#: rcgcdw.py:384 +#, python-brace-format +msgid "" +"[{author}]({author_url}) added an entry to the [interwiki table]" +"({table_url}) pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) added an entry to the [interwiki table]" +"({table_url}) pointing to {website} with {prefix} prefix" + +#: rcgcdw.py:390 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " +"pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " +"pointing to {website} with {prefix} prefix" + +#: rcgcdw.py:396 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" +msgstr "" +"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" + +#: rcgcdw.py:400 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed the content model of the page [{article}]" +"({article_url}) from {old} to {new}{comment}" +msgstr "" +"[{author}]({author_url}) changed the content model of the page [{article}]" +"({article_url}) from {old} to {new}{comment}" + +#: rcgcdw.py:405 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" +msgstr "" +"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" + +#: rcgcdw.py:409 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created the sprite sheet for [{article}]" +"({article_url})" +msgstr "" +"[{author}]({author_url}) created the sprite sheet for [{article}]" +"({article_url})" + +#: rcgcdw.py:413 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the slice for [{article}]({article_url})" +msgstr "" +"[{author}]({author_url}) edited the slice for [{article}]({article_url})" + +#: rcgcdw.py:416 +#, python-brace-format +msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:420 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:424 +#, python-brace-format +msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:427 +#, python-brace-format +msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:430 +msgid "An action has been hidden by administration." +msgstr "An action has been hidden by administration." + +#: rcgcdw.py:439 rcgcdw.py:679 +msgid "No description provided" +msgstr "No description provided" + +#: rcgcdw.py:484 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:205 +#: rcgcdw.py:485 msgid "m " msgstr "m " -#: rcgcdw.py:230 rcgcdw.py:262 +#: rcgcdw.py:509 rcgcdw.py:541 msgid "Options" msgstr "Options" -#: rcgcdw.py:230 +#: rcgcdw.py:509 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([preview]({link}) | [undo]({undolink}))" -#: rcgcdw.py:232 +#: rcgcdw.py:511 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Uploaded a new version of {name}" -#: rcgcdw.py:234 +#: rcgcdw.py:513 #, python-brace-format msgid "Uploaded {name}" msgstr "Uploaded {name}" -#: rcgcdw.py:249 +#: rcgcdw.py:528 msgid "**No license!**" msgstr "**No license!**" -#: rcgcdw.py:262 +#: rcgcdw.py:541 #, python-brace-format msgid "([preview]({link}))" msgstr "([preview]({link}))" -#: rcgcdw.py:263 +#: rcgcdw.py:542 #, python-brace-format msgid "" "{desc}\n" @@ -63,533 +456,468 @@ msgstr "" "{desc}\n" "License: {license}" -#: rcgcdw.py:268 +#: rcgcdw.py:547 #, python-brace-format msgid "Deleted page {article}" msgstr "Deleted page {article}" -#: rcgcdw.py:272 +#: rcgcdw.py:551 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Deleted redirect {article} by overwriting" -#: rcgcdw.py:277 +#: rcgcdw.py:556 msgid "No redirect has been made" msgstr "No redirect has been made" -#: rcgcdw.py:279 +#: rcgcdw.py:557 msgid "A redirect has been made" msgstr "A redirect has been made" -#: rcgcdw.py:280 +#: rcgcdw.py:558 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Moved {redirect}{article} to {target}" -#: rcgcdw.py:284 +#: rcgcdw.py:562 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "Moved {redirect}{article} to {title} over redirect" -#: rcgcdw.py:289 +#: rcgcdw.py:567 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Moved protection settings from {redirect}{article} to {title}" -#: rcgcdw.py:297 -msgid "infinity and beyond" -msgstr "infinity and beyond" - -#: rcgcdw.py:307 +#: rcgcdw.py:585 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Blocked {blocked_user} for {time}" -#: rcgcdw.py:313 +#: rcgcdw.py:591 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Changed block settings for {blocked_user}" -#: rcgcdw.py:319 +#: rcgcdw.py:597 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Unblocked {blocked_user}" -#: rcgcdw.py:324 +#: rcgcdw.py:602 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Left a comment on {target}'s profile" -#: rcgcdw.py:328 +#: rcgcdw.py:604 msgid "Left a comment on their own profile" msgstr "Left a comment on their own profile" -#: rcgcdw.py:333 +#: rcgcdw.py:609 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Replied to a comment on {target}'s profile" -#: rcgcdw.py:337 +#: rcgcdw.py:611 msgid "Replied to a comment on their own profile" msgstr "Replied to a comment on their own profile" -#: rcgcdw.py:342 +#: rcgcdw.py:616 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Edited a comment on {target}'s profile" -#: rcgcdw.py:346 +#: rcgcdw.py:618 msgid "Edited a comment on their own profile" msgstr "Edited a comment on their own profile" -#: rcgcdw.py:353 -msgid "Location" -msgstr "Location" - -#: rcgcdw.py:355 -msgid "About me" -msgstr "About me" - -#: rcgcdw.py:357 -msgid "Google link" -msgstr "Google link" - -#: rcgcdw.py:359 -msgid "Facebook link" -msgstr "Facebook link" - -#: rcgcdw.py:361 -msgid "Twitter link" -msgstr "Twitter link" - -#: rcgcdw.py:363 -msgid "Reddit link" -msgstr "Reddit link" - -#: rcgcdw.py:365 -msgid "Twitch link" -msgstr "Twitch link" - -#: rcgcdw.py:367 -msgid "PSN link" -msgstr "PSN link" - -#: rcgcdw.py:369 -msgid "VK link" -msgstr "VK link" - -#: rcgcdw.py:371 -msgid "XVL link" -msgstr "XVL link" - -#: rcgcdw.py:373 -msgid "Steam link" -msgstr "Steam link" - -#: rcgcdw.py:375 -msgid "Unknown" -msgstr "Unknown" - -#: rcgcdw.py:376 +#: rcgcdw.py:648 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Edited {target}'s profile" -#: rcgcdw.py:377 +#: rcgcdw.py:648 msgid "Edited their own profile" msgstr "Edited their own profile" -#: rcgcdw.py:378 +#: rcgcdw.py:650 +#, python-brace-format +msgid "Cleared the {field} field" +msgstr "Cleared the {field} field" + +#: rcgcdw.py:652 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "{field} field changed to: {desc}" -#: rcgcdw.py:383 +#: rcgcdw.py:657 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Deleted a comment on {target}'s profile" -#: rcgcdw.py:387 +#: rcgcdw.py:661 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Changed group membership for {target}" -#: rcgcdw.py:389 -msgid "System" -msgstr "System" - -#: rcgcdw.py:391 +#: rcgcdw.py:665 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} got autopromoted to a new usergroup" -#: rcgcdw.py:402 rcgcdw.py:404 -msgid "none" -msgstr "none" - -#: rcgcdw.py:405 rcgcdw.py:586 -msgid "No description provided" -msgstr "No description provided" - -#: rcgcdw.py:406 +#: rcgcdw.py:680 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "Groups changed from {old_groups} to {new_groups}{reason}" -#: rcgcdw.py:411 +#: rcgcdw.py:685 #, python-brace-format msgid "Protected {target}" msgstr "Protected {target}" -#: rcgcdw.py:413 rcgcdw.py:420 -msgid " [cascading]" -msgstr " [cascading]" - -#: rcgcdw.py:418 +#: rcgcdw.py:692 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Changed protection level for {article}" -#: rcgcdw.py:425 +#: rcgcdw.py:699 #, python-brace-format msgid "Removed protection from {article}" msgstr "Removed protection from {article}" -#: rcgcdw.py:430 +#: rcgcdw.py:704 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " msgstr[0] "Changed visibility of revision on page {article} " msgstr[1] "Changed visibility of {amount} revisions on page {article} " -#: rcgcdw.py:436 +#: rcgcdw.py:710 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" msgstr[0] "Imported {article} with {count} revision" msgstr[1] "Imported {article} with {count} revisions" -#: rcgcdw.py:442 +#: rcgcdw.py:716 #, python-brace-format msgid "Restored {article}" msgstr "Restored {article}" -#: rcgcdw.py:445 +#: rcgcdw.py:719 msgid "Changed visibility of log events" msgstr "Changed visibility of log events" -#: rcgcdw.py:448 +#: rcgcdw.py:722 msgid "Imported interwiki" msgstr "Imported interwiki" -#: rcgcdw.py:451 +#: rcgcdw.py:725 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Edited abuse filter number {number}" -#: rcgcdw.py:454 +#: rcgcdw.py:728 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Created abuse filter number {number}" -#: rcgcdw.py:458 +#: rcgcdw.py:732 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Merged revision histories of {article} into {dest}" -#: rcgcdw.py:462 +#: rcgcdw.py:736 msgid "Added an entry to the interwiki table" msgstr "Added an entry to the interwiki table" -#: rcgcdw.py:463 rcgcdw.py:469 +#: rcgcdw.py:737 rcgcdw.py:743 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Prefix: {prefix}, website: {website} | {desc}" -#: rcgcdw.py:468 +#: rcgcdw.py:742 msgid "Edited an entry in interwiki table" msgstr "Edited an entry in interwiki table" -#: rcgcdw.py:474 +#: rcgcdw.py:748 msgid "Deleted an entry in interwiki table" msgstr "Deleted an entry in interwiki table" -#: rcgcdw.py:475 +#: rcgcdw.py:749 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Prefix: {prefix} | {desc}" -#: rcgcdw.py:479 +#: rcgcdw.py:753 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Changed the content model of the page {article}" -#: rcgcdw.py:480 +#: rcgcdw.py:754 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Model changed from {old} to {new}: {reason}" -#: rcgcdw.py:486 +#: rcgcdw.py:760 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edited the sprite for {article}" -#: rcgcdw.py:490 +#: rcgcdw.py:764 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Created the sprite sheet for {article}" -#: rcgcdw.py:494 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Edited the slice for {article}" -#: rcgcdw.py:497 +#: rcgcdw.py:771 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Created a tag \"{tag}\"" -#: rcgcdw.py:501 +#: rcgcdw.py:775 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Deleted a tag \"{tag}\"" -#: rcgcdw.py:505 +#: rcgcdw.py:779 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Activated a tag \"{tag}\"" -#: rcgcdw.py:508 +#: rcgcdw.py:782 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Deactivated a tag \"{tag}\"" -#: rcgcdw.py:511 +#: rcgcdw.py:785 msgid "Action has been hidden by administration." msgstr "Action has been hidden by administration." -#: rcgcdw.py:532 +#: rcgcdw.py:813 msgid "Tags" msgstr "Tags" -#: rcgcdw.py:538 +#: rcgcdw.py:819 msgid "**Added**: " msgstr "**Added**: " -#: rcgcdw.py:538 +#: rcgcdw.py:819 msgid " and {} more\n" msgstr " and {} more\n" -#: rcgcdw.py:539 +#: rcgcdw.py:820 msgid "**Removed**: " msgstr "**Removed**: " -#: rcgcdw.py:539 +#: rcgcdw.py:820 msgid " and {} more" msgstr " and {} more" -#: rcgcdw.py:540 +#: rcgcdw.py:821 msgid "Changed categories" msgstr "Changed categories" -#: rcgcdw.py:582 +#: rcgcdw.py:861 msgid "~~hidden~~" msgstr "~~hidden~~" -#: rcgcdw.py:591 +#: rcgcdw.py:867 msgid "hidden" msgstr "hidden" -#: rcgcdw.py:722 -msgid "Unable to process the event" -msgstr "Unable to process the event" - -#: rcgcdw.py:722 -msgid "error" -msgstr "error" - -#: rcgcdw.py:827 +#: rcgcdw.py:970 msgid "Daily overview" msgstr "Daily overview" -#: rcgcdw.py:837 +#: rcgcdw.py:980 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} action)" msgstr[1] " ({} actions)" -#: rcgcdw.py:841 +#: rcgcdw.py:984 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} edit)" msgstr[1] " ({} edits)" -#: rcgcdw.py:846 +#: rcgcdw.py:989 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} action)" msgstr[1] " UTC ({} actions)" -#: rcgcdw.py:848 rcgcdw.py:849 rcgcdw.py:853 +#: rcgcdw.py:991 rcgcdw.py:992 rcgcdw.py:996 msgid "But nobody came" msgstr "But nobody came" -#: rcgcdw.py:856 +#: rcgcdw.py:999 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Most active user" msgstr[1] "Most active users" -#: rcgcdw.py:857 +#: rcgcdw.py:1000 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Most edited article" msgstr[1] "Most edited articles" -#: rcgcdw.py:858 +#: rcgcdw.py:1001 msgid "Edits made" msgstr "Edits made" -#: rcgcdw.py:858 +#: rcgcdw.py:1001 msgid "New files" msgstr "New files" -#: rcgcdw.py:858 +#: rcgcdw.py:1001 msgid "Admin actions" msgstr "Admin actions" -#: rcgcdw.py:859 +#: rcgcdw.py:1002 msgid "Bytes changed" msgstr "Bytes changed" -#: rcgcdw.py:859 +#: rcgcdw.py:1002 msgid "New articles" msgstr "New articles" -#: rcgcdw.py:860 +#: rcgcdw.py:1003 msgid "Unique contributors" msgstr "Unique contributors" -#: rcgcdw.py:861 +#: rcgcdw.py:1004 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Most active hour" msgstr[1] "Most active hours" -#: rcgcdw.py:862 +#: rcgcdw.py:1005 msgid "Day score" msgstr "Day score" -#: rcgcdw.py:1009 +#: rcgcdw.py:1152 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "Connection to {wiki} seems to be stable now." -#: rcgcdw.py:1010 rcgcdw.py:1115 +#: rcgcdw.py:1153 rcgcdw.py:1264 msgid "Connection status" msgstr "Connection status" -#: rcgcdw.py:1114 +#: rcgcdw.py:1263 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} seems to be down or unreachable." -#: rcgcdw.py:1152 +#: rcgcdw.py:1317 msgid "director" msgstr "Director" -#: rcgcdw.py:1152 +#: rcgcdw.py:1317 msgid "bot" msgstr "Bot" -#: rcgcdw.py:1152 +#: rcgcdw.py:1317 msgid "editor" msgstr "Editor" -#: rcgcdw.py:1152 +#: rcgcdw.py:1317 msgid "directors" msgstr "Directors" -#: rcgcdw.py:1152 +#: rcgcdw.py:1317 msgid "sysop" msgstr "Administrator" -#: rcgcdw.py:1152 +#: rcgcdw.py:1317 msgid "bureaucrat" msgstr "Bureaucrat" -#: rcgcdw.py:1152 +#: rcgcdw.py:1317 msgid "reviewer" msgstr "Reviewer" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "autoreview" msgstr "Autoreview" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "autopatrol" msgstr "Autopatrol" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "wiki_guardian" msgstr "Wiki guardian" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "second" msgid_plural "seconds" msgstr[0] "second" msgstr[1] "seconds" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "minute" msgid_plural "minutes" msgstr[0] "minute" msgstr[1] "minutes" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "hour" msgid_plural "hours" msgstr[0] "hour" msgstr[1] "hours" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "day" msgid_plural "days" msgstr[0] "day" msgstr[1] "days" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "week" msgid_plural "weeks" msgstr[0] "week" msgstr[1] "weeks" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "month" msgid_plural "months" msgstr[0] "month" msgstr[1] "months" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "year" msgid_plural "years" msgstr[0] "year" msgstr[1] "years" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "millennium" msgid_plural "millennia" msgstr[0] "millennium" msgstr[1] "millennia" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "decade" msgid_plural "decades" msgstr[0] "decade" msgstr[1] "decades" -#: rcgcdw.py:1153 +#: rcgcdw.py:1318 msgid "century" msgid_plural "centuries" msgstr[0] "century" msgstr[1] "centuries" + +#~ msgid "Unable to process the event" +#~ msgstr "Unable to process the event" + +#~ msgid "error" +#~ msgstr "error" diff --git a/locale/pl/LC_MESSAGES/rcgcdw.mo b/locale/pl/LC_MESSAGES/rcgcdw.mo index 1bc8800..478d62d 100644 Binary files a/locale/pl/LC_MESSAGES/rcgcdw.mo and b/locale/pl/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/pl/LC_MESSAGES/rcgcdw.po b/locale/pl/LC_MESSAGES/rcgcdw.po index b687c36..f26275a 100644 --- a/locale/pl/LC_MESSAGES/rcgcdw.po +++ b/locale/pl/LC_MESSAGES/rcgcdw.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: RcGcDw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-09 13:58+0100\n" -"PO-Revision-Date: 2019-03-09 14:07+0100\n" +"POT-Creation-Date: 2019-04-22 12:20+0200\n" +"PO-Revision-Date: 2019-04-22 12:26+0200\n" "Last-Translator: Frisk \n" "Language-Team: \n" "Language: pl\n" @@ -19,43 +19,445 @@ msgstr "" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" +#: rcgcdw.py:175 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" +"[{author}]({author_url}) editował(-a) [{article}]({edit_link}){comment} " +"({sign}{edit_size})" + +#: rcgcdw.py:177 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" +"[{author}]({author_url}) stworzył(-a) [{article}]({edit_link}){comment} " +"({sign}{edit_size})" + +#: rcgcdw.py:181 +#, python-brace-format +msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" +msgstr "[{author}]({author_url}) przesłał(-a) [{file}]({file_link}){comment}" + +#: rcgcdw.py:189 +#, python-brace-format +msgid "" +"[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" +"{comment}" +msgstr "" +"[{author}]({author_url}) przesłał(-a) nową wersję [{file}]({file_link})" +"{comment}" + +#: rcgcdw.py:193 +#, python-brace-format +msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" +msgstr "[{author}]({author_url}) usunął/usunęła [{page}]({page_link}){comment}" + +#: rcgcdw.py:198 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted redirect by overwriting [{page}]" +"({page_link}){comment}" +msgstr "" +"[{author}]({author_url}) usunął/usunęła przekierowanie przez nadpisanie " +"[{page}]({page_link}){comment}" + +#: rcgcdw.py:203 rcgcdw.py:209 +msgid "without making a redirect" +msgstr "bez utworzenia przekierowania przekierowania" + +#: rcgcdw.py:203 rcgcdw.py:210 +msgid "with a redirect" +msgstr "z przekierowaniem" + #: rcgcdw.py:204 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" +"({target_url}) {made_a_redirect}{comment}" +msgstr "" +"[{author}]({author_url}) przeniósł/przeniosła {redirect}*{article}* do " +"[{target}]({target_url}) {made_a_redirect}{comment}" + +#: rcgcdw.py:211 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* over redirect to " +"[{target}]({target_url}) {made_a_redirect}{comment}" +msgstr "" +"[{author}]({author_url}) przeniósł/przeniosła {redirect}*{article}* do " +"przekierowania [{target}]({target_url}) {made_a_redirect}{comment}" + +#: rcgcdw.py:217 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved protection settings from {redirect}*{article}" +"* to [{target}]({target_url}){comment}" +msgstr "" +"[{author}]({author_url}) przeniósł/przeniosła ustawienia zabezpieczeń z " +"{redirect}*{article}* do [{target}]({target_url}){comment}" + +#: rcgcdw.py:224 rcgcdw.py:580 +msgid "infinity and beyond" +msgstr "wieczność" + +#: rcgcdw.py:239 +#, python-brace-format +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +msgstr "" +"[{author}]({author_url}) zablokował(-a) [{user}]({user_url}) na {time}" +"{comment}" + +#: rcgcdw.py:244 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed block settings for [{blocked_user}]" +"({user_url}){comment}" +msgstr "" +"[{author}]({author_url}) zmienił(-a) ustawienia blokady dla [{blocked_user}]" +"({user_url}){comment}" + +#: rcgcdw.py:249 +#, python-brace-format +msgid "" +"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" +msgstr "" +"[{author}]({author_url}) odblokował(-a) [{blocked_user}]({user_url}){comment}" + +#: rcgcdw.py:253 +#, python-brace-format +msgid "" +"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" +msgstr "" +"[{author}]({author_url}) pozostawił(-a) [komentarz]({comment}) na {target}" + +#: rcgcdw.py:253 +msgid "their own profile" +msgstr "swoim własnym profilu" + +#: rcgcdw.py:258 +#, python-brace-format +msgid "" +"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " +"profile" +msgstr "" +"[{author}]({author_url}) odpowiedział(-a) na [komentarz]({comment}) na " +"{target}" + +#: rcgcdw.py:261 rcgcdw.py:269 rcgcdw.py:276 rcgcdw.py:307 +msgid "their own" +msgstr "swój własny" + +#: rcgcdw.py:266 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" +msgstr "" +"[{author}]({author_url}) edytował(-a) [komentarz]({comment}) na {target}" + +#: rcgcdw.py:274 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a comment on {target} profile" +msgstr "[{author}]({author_url}) usunął/usunęła komentarz na {target}" + +#: rcgcdw.py:282 rcgcdw.py:630 +msgid "Location" +msgstr "Lokacja" + +#: rcgcdw.py:284 rcgcdw.py:632 +msgid "About me" +msgstr "O mnie" + +#: rcgcdw.py:286 rcgcdw.py:634 +msgid "Google link" +msgstr "link Google" + +#: rcgcdw.py:288 rcgcdw.py:636 +msgid "Facebook link" +msgstr "link Facebook" + +#: rcgcdw.py:290 rcgcdw.py:638 +msgid "Twitter link" +msgstr "link Twitter" + +#: rcgcdw.py:292 rcgcdw.py:640 +msgid "Reddit link" +msgstr "link Reddit" + +#: rcgcdw.py:294 rcgcdw.py:642 +msgid "Twitch link" +msgstr "link Twitch" + +#: rcgcdw.py:296 rcgcdw.py:644 +msgid "PSN link" +msgstr "link PSN" + +#: rcgcdw.py:298 rcgcdw.py:646 +msgid "VK link" +msgstr "link VK" + +#: rcgcdw.py:300 rcgcdw.py:648 +msgid "XVL link" +msgstr "link XVL" + +#: rcgcdw.py:302 rcgcdw.py:650 +msgid "Steam link" +msgstr "link Steam" + +#: rcgcdw.py:304 +msgid "unknown" +msgstr "nieznana sekcja" + +#: rcgcdw.py:305 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the {field} on [{target}]({target_url})'s " +"profile. *({desc})*" +msgstr "" +"[{author}]({author_url}) edytował(-a) pole {field} profilu użytkownika " +"[{target}]({target_url}). *({desc})*" + +#: rcgcdw.py:320 rcgcdw.py:322 rcgcdw.py:681 rcgcdw.py:683 +msgid "none" +msgstr "brak" + +#: rcgcdw.py:328 rcgcdw.py:668 +msgid "System" +msgstr "System" + +#: rcgcdw.py:334 +#, python-brace-format +msgid "" +"[{author}]({author_url}) protected [{article}]({article_url}) with the " +"following settings: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) zabezpieczył(-a) [{article}]({article_url}) z " +"następującymi ustawieniami: {settings}{comment}" + +#: rcgcdw.py:336 rcgcdw.py:345 rcgcdw.py:692 rcgcdw.py:699 +msgid " [cascading]" +msgstr " [kaskadowo]" + +#: rcgcdw.py:342 +#, python-brace-format +msgid "" +"[{author}]({author_url}) modified protection settings of [{article}]" +"({article_url}) to: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) modyfikował(-a) ustawienia zabezpieczeń [{article}]" +"({article_url}) na: {settings}{comment}" + +#: rcgcdw.py:350 +#, python-brace-format +msgid "" +"[{author}]({author_url}) removed protection from [{article}]({article_url})" +"{comment}" +msgstr "" +"[{author}]({author_url}) usunął/usunęła zabezpieczenia z [{article}]" +"({article_url}){comment}" + +#: rcgcdw.py:355 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed visibility of revision on page [{article}]" +"({article_url}){comment}" +msgid_plural "" +"[{author}]({author_url}) changed visibility of {amount} revisions on page " +"[{article}]({article_url}){comment}" +msgstr[0] "" +"[{author}]({author_url}) zmienił(-a) widoczność wersji strony [{article}]" +"({article_url}){comment}" +msgstr[1] "" +"[{author}]({author_url}) zmienił(-a) widoczność {amount} wersji strony " +"[{article}]({article_url}){comment}" +msgstr[2] "" +"[{author}]({author_url}) zmienił(-a) widoczność {amount} wersji strony " +"[{article}]({article_url}){comment}" + +#: rcgcdw.py:361 +#, python-brace-format +msgid "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revision{comment}" +msgid_plural "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revisions{comment}" +msgstr[0] "" +"[{author}]({author_url}) zaimportował(-a) [{article}]({article_url}) z jedną " +"wersją{comment}" +msgstr[1] "" +"[{author}]({author_url}) zaimportował(-a) [{article}]({article_url}) {count} " +"wersjami{comment}" +msgstr[2] "" +"[{author}]({author_url}) zaimportował(-a) [{article}]({article_url}) {count} " +"wersjami{comment}" + +#: rcgcdw.py:367 +#, python-brace-format +msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" +msgstr "" +"[{author}]({author_url}) przywrócił(-a) [{article}]({article_url}){comment}" + +#: rcgcdw.py:369 +#, python-brace-format +msgid "[{author}]({author_url}) changed visibility of log events{comment}" +msgstr "[{author}]({author_url}) zmienił(-a) widoczność wydarzeń{comment}" + +#: rcgcdw.py:371 +#, python-brace-format +msgid "[{author}]({author_url}) imported interwiki{comment}" +msgstr "[{author}]({author_url}) zaimportował(-a) interwiki{comment}" + +#: rcgcdw.py:374 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) edytował(-a) filtr nadużyć [numer {number}]" +"({filter_url})" + +#: rcgcdw.py:377 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) stworzył(-a) filtr nadużyć [numer {number}]" +"({filter_url})" + +#: rcgcdw.py:383 +#, python-brace-format +msgid "" +"[{author}]({author_url}) merged revision histories of [{article}]" +"({article_url}) into [{dest}]({dest_url}){comment}" +msgstr "" +"[{author}]({author_url}) połączył(-a) historie zmian [{article}]" +"({article_url}) z [{dest}]({dest_url}){comment}" + +#: rcgcdw.py:387 +#, python-brace-format +msgid "" +"[{author}]({author_url}) added an entry to the [interwiki table]" +"({table_url}) pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) dodał(-a) wpis do [tabeli interwiki]({table_url}), " +"który prowadzi do {website} z prefixem {prefix}" + +#: rcgcdw.py:393 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " +"pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) edytował(-a) wpis w [tabeli interwiki]" +"({table_url}), który prowadzi do {website} z prefixem {prefix}" + +#: rcgcdw.py:399 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" +msgstr "" +"[{author}]({author_url}) usunął/usunęła wpis z [tabeli interwiki]" +"({table_url})" + +#: rcgcdw.py:403 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed the content model of the page [{article}]" +"({article_url}) from {old} to {new}{comment}" +msgstr "" +"[{author}]({author_url}) zmienił(-a) model zawartości [{article}]" +"({article_url}) z {old} na {new}{comment}" + +#: rcgcdw.py:408 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" +msgstr "" +"[{author}]({author_url}) edytował(-a) sprite [{article}]({article_url})" + +#: rcgcdw.py:412 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created the sprite sheet for [{article}]" +"({article_url})" +msgstr "" +"[{author}]({author_url}) utworzył(-a) sprite sheet [{article}]({article_url})" + +#: rcgcdw.py:416 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the slice for [{article}]({article_url})" +msgstr "[{author}]({author_url}) edytował(-a) slice [{article}]({article_url})" + +#: rcgcdw.py:419 +#, python-brace-format +msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) utworzył(-a) [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:423 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) usunął/usunęła [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:427 +#, python-brace-format +msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) aktywował(-a) [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:430 +#, python-brace-format +msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" +msgstr "[{author}]({author_url}) dezaktywował(-a) [tag]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:433 +msgid "An action has been hidden by administration." +msgstr "Akcja została ukryta przez administrację." + +#: rcgcdw.py:441 rcgcdw.py:684 +msgid "No description provided" +msgstr "Nie podano opisu zmian" + +#: rcgcdw.py:489 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:205 +#: rcgcdw.py:490 msgid "m " msgstr "d " -#: rcgcdw.py:230 rcgcdw.py:262 +#: rcgcdw.py:514 rcgcdw.py:546 msgid "Options" msgstr "Opcje" -#: rcgcdw.py:230 +#: rcgcdw.py:514 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([podgląd]({link}) | [wycofaj]({undolink}))" -#: rcgcdw.py:232 +#: rcgcdw.py:516 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Przesłał(a) nową wersję {name}" -#: rcgcdw.py:234 +#: rcgcdw.py:518 #, python-brace-format msgid "Uploaded {name}" msgstr "Przesłał(a) {name}" -#: rcgcdw.py:249 +#: rcgcdw.py:533 msgid "**No license!**" msgstr "**Brak licencji!**" -#: rcgcdw.py:262 +#: rcgcdw.py:546 #, python-brace-format msgid "([preview]({link}))" msgstr "([podgląd]({link}))" -#: rcgcdw.py:263 +#: rcgcdw.py:547 #, python-brace-format msgid "" "{desc}\n" @@ -64,210 +466,151 @@ msgstr "" "{desc}\n" "Licencja: {license}" -#: rcgcdw.py:268 +#: rcgcdw.py:552 #, python-brace-format msgid "Deleted page {article}" msgstr "Usunął/usunęła {article}" -#: rcgcdw.py:272 +#: rcgcdw.py:556 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "" "Usunął/usunęła przekierowanie ({article}) aby utworzyć miejsce dla " "przenoszonej strony" -#: rcgcdw.py:277 +#: rcgcdw.py:561 msgid "No redirect has been made" msgstr "Nie utworzono przekierowania" -#: rcgcdw.py:279 +#: rcgcdw.py:562 msgid "A redirect has been made" msgstr "Zostało utworzone przekierowanie" -#: rcgcdw.py:280 +#: rcgcdw.py:563 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Przeniósł/przeniosła {redirect}{article} do {target}" -#: rcgcdw.py:284 +#: rcgcdw.py:567 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "" "Przeniósł/przeniosła {redirect}{article} do strony przekierowującej {title}" -#: rcgcdw.py:289 +#: rcgcdw.py:572 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Przeniesiono ustawienia zabezpieczeń z {redirect}{article} do {title}" -#: rcgcdw.py:297 -msgid "infinity and beyond" -msgstr "wieczność" - -#: rcgcdw.py:307 +#: rcgcdw.py:590 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Zablokowano {blocked_user} na {time}" -#: rcgcdw.py:313 +#: rcgcdw.py:596 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Zmienił ustawienia blokady {blocked_user}" -#: rcgcdw.py:319 +#: rcgcdw.py:602 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Odblokował {blocked_user}" -#: rcgcdw.py:324 +#: rcgcdw.py:607 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Pozostawiono komentarz na profilu użytkownika {target}" -#: rcgcdw.py:328 +#: rcgcdw.py:609 msgid "Left a comment on their own profile" msgstr "Pozostawił(a) komentarz na swoim profilu" -#: rcgcdw.py:333 +#: rcgcdw.py:614 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Odpowiedziano na komentarz na profilu użytkownika {target}" -#: rcgcdw.py:337 +#: rcgcdw.py:616 msgid "Replied to a comment on their own profile" msgstr "Odpowiedział(a) na komentarz na swoim profilu" -#: rcgcdw.py:342 +#: rcgcdw.py:621 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Edytowano komentarz na profilu użytkownika {target}" -#: rcgcdw.py:346 +#: rcgcdw.py:623 msgid "Edited a comment on their own profile" msgstr "Edytował(a) komentarz na swoim profilu" -#: rcgcdw.py:353 -msgid "Location" -msgstr "Lokacja" - -#: rcgcdw.py:355 -msgid "About me" -msgstr "O mnie" - -#: rcgcdw.py:357 -msgid "Google link" -msgstr "link Google" - -#: rcgcdw.py:359 -msgid "Facebook link" -msgstr "link Facebook" - -#: rcgcdw.py:361 -msgid "Twitter link" -msgstr "link Twitter" - -#: rcgcdw.py:363 -msgid "Reddit link" -msgstr "link Reddit" - -#: rcgcdw.py:365 -msgid "Twitch link" -msgstr "link Twitch" - -#: rcgcdw.py:367 -msgid "PSN link" -msgstr "link PSN" - -#: rcgcdw.py:369 -msgid "VK link" -msgstr "link VK" - -#: rcgcdw.py:371 -msgid "XVL link" -msgstr "link XVL" - -#: rcgcdw.py:373 -msgid "Steam link" -msgstr "link Steam" - -#: rcgcdw.py:375 +#: rcgcdw.py:652 rcgcdw.py:791 msgid "Unknown" msgstr "Nieznana" -#: rcgcdw.py:376 +#: rcgcdw.py:653 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Edytowano profil użytkownika {target}" -#: rcgcdw.py:377 +#: rcgcdw.py:653 msgid "Edited their own profile" msgstr "Edytował(a) swój profil" -#: rcgcdw.py:378 +#: rcgcdw.py:655 +#, python-brace-format +msgid "Cleared the {field} field" +msgstr "Wyczyszczono pole {field}" + +#: rcgcdw.py:657 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "pole \"{field}\" zostało zmienione na: {desc}" -#: rcgcdw.py:383 +#: rcgcdw.py:662 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Usunął komentarz na profilu użytkownika {target}" -#: rcgcdw.py:387 +#: rcgcdw.py:666 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Zmieniono przynależność do grup dla {target}" -#: rcgcdw.py:389 -msgid "System" -msgstr "System" - -#: rcgcdw.py:391 +#: rcgcdw.py:670 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} automatycznie otrzymał nową grupę użytkownika" -#: rcgcdw.py:402 rcgcdw.py:404 -msgid "none" -msgstr "brak" - -#: rcgcdw.py:405 rcgcdw.py:586 -msgid "No description provided" -msgstr "Nie podano opisu zmian" - -#: rcgcdw.py:406 +#: rcgcdw.py:685 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "Grupy zmienione z {old_groups} do {new_groups}{reason}" -#: rcgcdw.py:411 +#: rcgcdw.py:690 #, python-brace-format msgid "Protected {target}" msgstr "Zabezpieczono {target}" -#: rcgcdw.py:413 rcgcdw.py:420 -msgid " [cascading]" -msgstr " [kaskadowo]" - -#: rcgcdw.py:418 +#: rcgcdw.py:697 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Zmieniono poziom zabezpieczeń {article}" -#: rcgcdw.py:425 +#: rcgcdw.py:704 #, python-brace-format msgid "Removed protection from {article}" msgstr "Usunięto zabezpieczenie {article}" -#: rcgcdw.py:430 +#: rcgcdw.py:709 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " -msgstr[0] "Zmieniono widoczność wersji na stronie {article}" -msgstr[1] "Zmieniono widoczność {amount} wersji na stronie {article}" -msgstr[2] "Zmieniono widoczność {amount} wersji na stronie {article}" +msgstr[0] "Zmieniono widoczność wersji na stronie {article} " +msgstr[1] "Zmieniono widoczność {amount} wersji na stronie {article} " +msgstr[2] "Zmieniono widoczność {amount} wersji na stronie {article} " -#: rcgcdw.py:436 +#: rcgcdw.py:715 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" @@ -275,347 +618,352 @@ msgstr[0] "Zaimportowano {article} z {count} wersją" msgstr[1] "Zaimportowano {article} z {count} wersjami" msgstr[2] "Zaimportowano {article} z {count} wersjami" -#: rcgcdw.py:442 +#: rcgcdw.py:721 #, python-brace-format msgid "Restored {article}" msgstr "Przywrócono {article}" -#: rcgcdw.py:445 +#: rcgcdw.py:724 msgid "Changed visibility of log events" msgstr "Zmieniono widoczność logów" -#: rcgcdw.py:448 +#: rcgcdw.py:727 msgid "Imported interwiki" msgstr "Zaimportowano interwiki" -#: rcgcdw.py:451 +#: rcgcdw.py:730 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Edytowano filtr nadużyć numer {number}" -#: rcgcdw.py:454 +#: rcgcdw.py:733 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Utworzono filtr nadużyć numer {number}" -#: rcgcdw.py:458 +#: rcgcdw.py:737 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Połączono historie {article} z {dest}" -#: rcgcdw.py:462 +#: rcgcdw.py:741 msgid "Added an entry to the interwiki table" msgstr "Dodano wpis do tabeli interwiki" -#: rcgcdw.py:463 rcgcdw.py:469 +#: rcgcdw.py:742 rcgcdw.py:748 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Prefix: {prefix}, strona: {website} | {desc}" -#: rcgcdw.py:468 +#: rcgcdw.py:747 msgid "Edited an entry in interwiki table" msgstr "Edytowano wpis interwiki" -#: rcgcdw.py:474 +#: rcgcdw.py:753 msgid "Deleted an entry in interwiki table" msgstr "Usunięto wpis interwiki" -#: rcgcdw.py:475 +#: rcgcdw.py:754 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Prefix: {prefix} | {desc}" -#: rcgcdw.py:479 +#: rcgcdw.py:758 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Zmieniono model zawartości {article}" -#: rcgcdw.py:480 +#: rcgcdw.py:759 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Model został zmieniony z {old} na {new}: {reason}" -#: rcgcdw.py:486 +#: rcgcdw.py:765 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edytowano sprite dla {article}" -#: rcgcdw.py:490 +#: rcgcdw.py:769 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Utworzono sprite sheet dla {article}" -#: rcgcdw.py:494 +#: rcgcdw.py:773 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Edytowano część sprite dla {article}" -#: rcgcdw.py:497 +#: rcgcdw.py:776 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Utworzono tag \"{tag}\"" -#: rcgcdw.py:501 +#: rcgcdw.py:780 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Usunięto tag \"{tag}\"" -#: rcgcdw.py:505 +#: rcgcdw.py:784 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Aktywowano tag \"{tag}\"" -#: rcgcdw.py:508 +#: rcgcdw.py:787 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Dezaktywowano tag \"{tag}\"" -#: rcgcdw.py:511 +#: rcgcdw.py:790 msgid "Action has been hidden by administration." -msgstr "Akcja została ukryta przez personel administrację." +msgstr "Akcja została ukryta przez administrację." -#: rcgcdw.py:532 +#: rcgcdw.py:817 msgid "Tags" msgstr "Tagi" -#: rcgcdw.py:538 +#: rcgcdw.py:823 msgid "**Added**: " msgstr "**Dodane**: " -#: rcgcdw.py:538 +#: rcgcdw.py:823 msgid " and {} more\n" msgstr " oraz {} innych\n" -#: rcgcdw.py:539 +#: rcgcdw.py:824 msgid "**Removed**: " msgstr "**Usunięte**: " -#: rcgcdw.py:539 +#: rcgcdw.py:824 msgid " and {} more" msgstr " oraz {} innych" -#: rcgcdw.py:540 +#: rcgcdw.py:825 msgid "Changed categories" msgstr "Zmienione kategorie" -#: rcgcdw.py:582 +#: rcgcdw.py:866 msgid "~~hidden~~" msgstr "~~ukryte~~" -#: rcgcdw.py:591 +#: rcgcdw.py:872 msgid "hidden" msgstr "ukryte" -#: rcgcdw.py:722 -msgid "Unable to process the event" -msgstr "Nie udało się odczytać wydarzenia" - -#: rcgcdw.py:722 -msgid "error" -msgstr "błąd" - -#: rcgcdw.py:827 +#: rcgcdw.py:975 msgid "Daily overview" msgstr "Podsumowanie dnia" -#: rcgcdw.py:837 +#: rcgcdw.py:985 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} akcja)" msgstr[1] " ({} akcje)" msgstr[2] " ({} akcji)" -#: rcgcdw.py:841 +#: rcgcdw.py:989 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} edycja)" msgstr[1] " ({} edycje)" msgstr[2] " ({} edycji)" -#: rcgcdw.py:846 +#: rcgcdw.py:994 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} akcja)" msgstr[1] " UTC ({} akcje)" msgstr[2] " UTC ({} akcji)" -#: rcgcdw.py:848 rcgcdw.py:849 rcgcdw.py:853 +#: rcgcdw.py:996 rcgcdw.py:997 rcgcdw.py:1001 msgid "But nobody came" msgstr "Ale nikt nie przyszedł" -#: rcgcdw.py:856 +#: rcgcdw.py:1004 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Najbardziej aktywny użytkownik" msgstr[1] "Najbardziej aktywni użytkownicy" msgstr[2] "Najbardziej aktywni użytkownicy" -#: rcgcdw.py:857 +#: rcgcdw.py:1005 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Najczęściej edytowany artykuł" msgstr[1] "Najczęściej edytowane artykuły" msgstr[2] "Najczęściej edytowane artykuły" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "Edits made" msgstr "Zrobionych edycji" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "New files" msgstr "Nowych plików" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "Admin actions" msgstr "Akcji administratorskich" -#: rcgcdw.py:859 +#: rcgcdw.py:1007 msgid "Bytes changed" msgstr "Zmienionych bajtów" -#: rcgcdw.py:859 +#: rcgcdw.py:1007 msgid "New articles" msgstr "Nowych artykułów" -#: rcgcdw.py:860 +#: rcgcdw.py:1008 msgid "Unique contributors" msgstr "Unikalnych edytujących" -#: rcgcdw.py:861 +#: rcgcdw.py:1009 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Najbardziej aktywna godzina" msgstr[1] "Najbardziej aktywne godziny" msgstr[2] "Najbardziej aktywne godziny" -#: rcgcdw.py:862 +#: rcgcdw.py:1010 msgid "Day score" msgstr "Wynik dnia" -#: rcgcdw.py:1009 +#: rcgcdw.py:1157 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "Połączenie z {wiki} wygląda na stabilne." -#: rcgcdw.py:1010 rcgcdw.py:1115 +#: rcgcdw.py:1158 rcgcdw.py:1269 msgid "Connection status" msgstr "Problem z połączeniem" -#: rcgcdw.py:1114 +#: rcgcdw.py:1268 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} nie działa lub jest nieosiągalna." -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "director" msgstr "Dyrektor" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "bot" msgstr "Bot" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "editor" msgstr "Redaktor" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "directors" msgstr "Dyrektorzy" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "sysop" msgstr "Administrator" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "bureaucrat" msgstr "Biurokrata" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "reviewer" msgstr "Przeglądający" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "autoreview" msgstr "Automatycznie przeglądający" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "autopatrol" msgstr "Automatycznie zatwierdzający" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "wiki_guardian" msgstr "Strażnik wiki" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekund" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" msgstr[1] "minuty" msgstr[2] "minut" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "hour" msgid_plural "hours" msgstr[0] "godzina" msgstr[1] "godziny" msgstr[2] "godzin" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "day" msgid_plural "days" msgstr[0] "dzień" msgstr[1] "dni" msgstr[2] "dni" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "week" msgid_plural "weeks" msgstr[0] "tydzień" msgstr[1] "tygodnie" msgstr[2] "tygodni" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "month" msgid_plural "months" msgstr[0] "miesiąc" msgstr[1] "miesiące" msgstr[2] "miesięcy" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "year" msgid_plural "years" msgstr[0] "rok" msgstr[1] "lata" msgstr[2] "lat" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "millennium" msgid_plural "millennia" msgstr[0] "tysiąclecie" msgstr[1] "tysiąclecia" msgstr[2] "tysiącleci" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "decade" msgid_plural "decades" msgstr[0] "dekada" msgstr[1] "dekady" msgstr[2] "dekad" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "century" msgid_plural "centuries" msgstr[0] "stulecie" msgstr[1] "stulecia" msgstr[2] "stuleci" +#~ msgid "" +#~ "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " +#~ "[{target}]({target_url}){comment}" +#~ msgstr "" +#~ "[{author}]({author_url}) przeniósł/przeniosła {redirect}*{article}* " +#~ "nadpisując przekierowanie do [{target}]({target_url}){comment}" + +#~ msgid "Unable to process the event" +#~ msgstr "Nie udało się odczytać wydarzenia" + +#~ msgid "error" +#~ msgstr "błąd" + #~ msgid "{wiki} is back up!" #~ msgstr "{wiki} jest ponownie osiągalna!" diff --git a/rcgcdw.pot b/rcgcdw.pot index 40053b8..a33009d 100644 --- a/rcgcdw.pot +++ b/rcgcdw.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-03-09 13:58+0100\n" +"POT-Creation-Date: 2019-04-22 12:20+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,575 +18,848 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" +#: rcgcdw.py:175 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" + +#: rcgcdw.py:177 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" +"{edit_size})" +msgstr "" + +#: rcgcdw.py:181 +#, python-brace-format +msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" +msgstr "" + +#: rcgcdw.py:189 +#, python-brace-format +msgid "" +"[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" +"{comment}" +msgstr "" + +#: rcgcdw.py:193 +#, python-brace-format +msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" +msgstr "" + +#: rcgcdw.py:198 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted redirect by overwriting [{page}]" +"({page_link}){comment}" +msgstr "" + +#: rcgcdw.py:203 rcgcdw.py:209 +msgid "without making a redirect" +msgstr "" + +#: rcgcdw.py:203 rcgcdw.py:210 +msgid "with a redirect" +msgstr "" + #: rcgcdw.py:204 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" +"({target_url}) {made_a_redirect}{comment}" +msgstr "" + +#: rcgcdw.py:211 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved {redirect}*{article}* over redirect to " +"[{target}]({target_url}) {made_a_redirect}{comment}" +msgstr "" + +#: rcgcdw.py:217 +#, python-brace-format +msgid "" +"[{author}]({author_url}) moved protection settings from {redirect}*{article}" +"* to [{target}]({target_url}){comment}" +msgstr "" + +#: rcgcdw.py:224 rcgcdw.py:580 +msgid "infinity and beyond" +msgstr "" + +#: rcgcdw.py:239 +#, python-brace-format +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +msgstr "" + +#: rcgcdw.py:244 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed block settings for [{blocked_user}]" +"({user_url}){comment}" +msgstr "" + +#: rcgcdw.py:249 +#, python-brace-format +msgid "" +"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" +msgstr "" + +#: rcgcdw.py:253 +#, python-brace-format +msgid "" +"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" +msgstr "" + +#: rcgcdw.py:253 +msgid "their own profile" +msgstr "" + +#: rcgcdw.py:258 +#, python-brace-format +msgid "" +"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " +"profile" +msgstr "" + +#: rcgcdw.py:261 rcgcdw.py:269 rcgcdw.py:276 rcgcdw.py:307 +msgid "their own" +msgstr "" + +#: rcgcdw.py:266 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" +msgstr "" + +#: rcgcdw.py:274 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a comment on {target} profile" +msgstr "" + +#: rcgcdw.py:282 rcgcdw.py:630 +msgid "Location" +msgstr "" + +#: rcgcdw.py:284 rcgcdw.py:632 +msgid "About me" +msgstr "" + +#: rcgcdw.py:286 rcgcdw.py:634 +msgid "Google link" +msgstr "" + +#: rcgcdw.py:288 rcgcdw.py:636 +msgid "Facebook link" +msgstr "" + +#: rcgcdw.py:290 rcgcdw.py:638 +msgid "Twitter link" +msgstr "" + +#: rcgcdw.py:292 rcgcdw.py:640 +msgid "Reddit link" +msgstr "" + +#: rcgcdw.py:294 rcgcdw.py:642 +msgid "Twitch link" +msgstr "" + +#: rcgcdw.py:296 rcgcdw.py:644 +msgid "PSN link" +msgstr "" + +#: rcgcdw.py:298 rcgcdw.py:646 +msgid "VK link" +msgstr "" + +#: rcgcdw.py:300 rcgcdw.py:648 +msgid "XVL link" +msgstr "" + +#: rcgcdw.py:302 rcgcdw.py:650 +msgid "Steam link" +msgstr "" + +#: rcgcdw.py:304 +msgid "unknown" +msgstr "" + +#: rcgcdw.py:305 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the {field} on [{target}]({target_url})'s " +"profile. *({desc})*" +msgstr "" + +#: rcgcdw.py:320 rcgcdw.py:322 rcgcdw.py:681 rcgcdw.py:683 +msgid "none" +msgstr "" + +#: rcgcdw.py:328 rcgcdw.py:668 +msgid "System" +msgstr "" + +#: rcgcdw.py:334 +#, python-brace-format +msgid "" +"[{author}]({author_url}) protected [{article}]({article_url}) with the " +"following settings: {settings}{comment}" +msgstr "" + +#: rcgcdw.py:336 rcgcdw.py:345 rcgcdw.py:692 rcgcdw.py:699 +msgid " [cascading]" +msgstr "" + +#: rcgcdw.py:342 +#, python-brace-format +msgid "" +"[{author}]({author_url}) modified protection settings of [{article}]" +"({article_url}) to: {settings}{comment}" +msgstr "" + +#: rcgcdw.py:350 +#, python-brace-format +msgid "" +"[{author}]({author_url}) removed protection from [{article}]({article_url})" +"{comment}" +msgstr "" + +#: rcgcdw.py:355 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed visibility of revision on page [{article}]" +"({article_url}){comment}" +msgid_plural "" +"[{author}]({author_url}) changed visibility of {amount} revisions on page " +"[{article}]({article_url}){comment}" +msgstr[0] "" +msgstr[1] "" + +#: rcgcdw.py:361 +#, python-brace-format +msgid "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revision{comment}" +msgid_plural "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revisions{comment}" +msgstr[0] "" +msgstr[1] "" + +#: rcgcdw.py:367 +#, python-brace-format +msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" +msgstr "" + +#: rcgcdw.py:369 +#, python-brace-format +msgid "[{author}]({author_url}) changed visibility of log events{comment}" +msgstr "" + +#: rcgcdw.py:371 +#, python-brace-format +msgid "[{author}]({author_url}) imported interwiki{comment}" +msgstr "" + +#: rcgcdw.py:374 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" +msgstr "" + +#: rcgcdw.py:377 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" +msgstr "" + +#: rcgcdw.py:383 +#, python-brace-format +msgid "" +"[{author}]({author_url}) merged revision histories of [{article}]" +"({article_url}) into [{dest}]({dest_url}){comment}" +msgstr "" + +#: rcgcdw.py:387 +#, python-brace-format +msgid "" +"[{author}]({author_url}) added an entry to the [interwiki table]" +"({table_url}) pointing to {website} with {prefix} prefix" +msgstr "" + +#: rcgcdw.py:393 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " +"pointing to {website} with {prefix} prefix" +msgstr "" + +#: rcgcdw.py:399 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" +msgstr "" + +#: rcgcdw.py:403 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed the content model of the page [{article}]" +"({article_url}) from {old} to {new}{comment}" +msgstr "" + +#: rcgcdw.py:408 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" +msgstr "" + +#: rcgcdw.py:412 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created the sprite sheet for [{article}]" +"({article_url})" +msgstr "" + +#: rcgcdw.py:416 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the slice for [{article}]({article_url})" +msgstr "" + +#: rcgcdw.py:419 +#, python-brace-format +msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgstr "" + +#: rcgcdw.py:423 +#, python-brace-format +msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" +msgstr "" + +#: rcgcdw.py:427 +#, python-brace-format +msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" +msgstr "" + +#: rcgcdw.py:430 +#, python-brace-format +msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" +msgstr "" + +#: rcgcdw.py:433 +msgid "An action has been hidden by administration." +msgstr "" + +#: rcgcdw.py:441 rcgcdw.py:684 +msgid "No description provided" +msgstr "" + +#: rcgcdw.py:489 msgid "(N!) " msgstr "" -#: rcgcdw.py:205 +#: rcgcdw.py:490 msgid "m " msgstr "" -#: rcgcdw.py:230 rcgcdw.py:262 +#: rcgcdw.py:514 rcgcdw.py:546 msgid "Options" msgstr "" -#: rcgcdw.py:230 +#: rcgcdw.py:514 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "" -#: rcgcdw.py:232 +#: rcgcdw.py:516 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "" -#: rcgcdw.py:234 +#: rcgcdw.py:518 #, python-brace-format msgid "Uploaded {name}" msgstr "" -#: rcgcdw.py:249 +#: rcgcdw.py:533 msgid "**No license!**" msgstr "" -#: rcgcdw.py:262 +#: rcgcdw.py:546 #, python-brace-format msgid "([preview]({link}))" msgstr "" -#: rcgcdw.py:263 +#: rcgcdw.py:547 #, python-brace-format msgid "" "{desc}\n" "License: {license}" msgstr "" -#: rcgcdw.py:268 +#: rcgcdw.py:552 #, python-brace-format msgid "Deleted page {article}" msgstr "" -#: rcgcdw.py:272 +#: rcgcdw.py:556 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "" -#: rcgcdw.py:277 +#: rcgcdw.py:561 msgid "No redirect has been made" msgstr "" -#: rcgcdw.py:279 +#: rcgcdw.py:562 msgid "A redirect has been made" msgstr "" -#: rcgcdw.py:280 +#: rcgcdw.py:563 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "" -#: rcgcdw.py:284 +#: rcgcdw.py:567 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "" -#: rcgcdw.py:289 +#: rcgcdw.py:572 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "" -#: rcgcdw.py:297 -msgid "infinity and beyond" -msgstr "" - -#: rcgcdw.py:307 +#: rcgcdw.py:590 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "" -#: rcgcdw.py:313 +#: rcgcdw.py:596 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "" -#: rcgcdw.py:319 +#: rcgcdw.py:602 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "" -#: rcgcdw.py:324 +#: rcgcdw.py:607 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:328 +#: rcgcdw.py:609 msgid "Left a comment on their own profile" msgstr "" -#: rcgcdw.py:333 +#: rcgcdw.py:614 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:337 +#: rcgcdw.py:616 msgid "Replied to a comment on their own profile" msgstr "" -#: rcgcdw.py:342 +#: rcgcdw.py:621 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:346 +#: rcgcdw.py:623 msgid "Edited a comment on their own profile" msgstr "" -#: rcgcdw.py:353 -msgid "Location" -msgstr "" - -#: rcgcdw.py:355 -msgid "About me" -msgstr "" - -#: rcgcdw.py:357 -msgid "Google link" -msgstr "" - -#: rcgcdw.py:359 -msgid "Facebook link" -msgstr "" - -#: rcgcdw.py:361 -msgid "Twitter link" -msgstr "" - -#: rcgcdw.py:363 -msgid "Reddit link" -msgstr "" - -#: rcgcdw.py:365 -msgid "Twitch link" -msgstr "" - -#: rcgcdw.py:367 -msgid "PSN link" -msgstr "" - -#: rcgcdw.py:369 -msgid "VK link" -msgstr "" - -#: rcgcdw.py:371 -msgid "XVL link" -msgstr "" - -#: rcgcdw.py:373 -msgid "Steam link" -msgstr "" - -#: rcgcdw.py:375 +#: rcgcdw.py:652 rcgcdw.py:791 msgid "Unknown" msgstr "" -#: rcgcdw.py:376 +#: rcgcdw.py:653 #, python-brace-format msgid "Edited {target}'s profile" msgstr "" -#: rcgcdw.py:377 +#: rcgcdw.py:653 msgid "Edited their own profile" msgstr "" -#: rcgcdw.py:378 +#: rcgcdw.py:655 +#, python-brace-format +msgid "Cleared the {field} field" +msgstr "" + +#: rcgcdw.py:657 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "" -#: rcgcdw.py:383 +#: rcgcdw.py:662 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:387 +#: rcgcdw.py:666 #, python-brace-format msgid "Changed group membership for {target}" msgstr "" -#: rcgcdw.py:389 -msgid "System" -msgstr "" - -#: rcgcdw.py:391 +#: rcgcdw.py:670 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "" -#: rcgcdw.py:402 rcgcdw.py:404 -msgid "none" -msgstr "" - -#: rcgcdw.py:405 rcgcdw.py:586 -msgid "No description provided" -msgstr "" - -#: rcgcdw.py:406 +#: rcgcdw.py:685 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "" -#: rcgcdw.py:411 +#: rcgcdw.py:690 #, python-brace-format msgid "Protected {target}" msgstr "" -#: rcgcdw.py:413 rcgcdw.py:420 -msgid " [cascading]" -msgstr "" - -#: rcgcdw.py:418 +#: rcgcdw.py:697 #, python-brace-format msgid "Changed protection level for {article}" msgstr "" -#: rcgcdw.py:425 +#: rcgcdw.py:704 #, python-brace-format msgid "Removed protection from {article}" msgstr "" -#: rcgcdw.py:430 +#: rcgcdw.py:709 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:436 +#: rcgcdw.py:715 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:442 +#: rcgcdw.py:721 #, python-brace-format msgid "Restored {article}" msgstr "" -#: rcgcdw.py:445 +#: rcgcdw.py:724 msgid "Changed visibility of log events" msgstr "" -#: rcgcdw.py:448 +#: rcgcdw.py:727 msgid "Imported interwiki" msgstr "" -#: rcgcdw.py:451 +#: rcgcdw.py:730 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "" -#: rcgcdw.py:454 +#: rcgcdw.py:733 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "" -#: rcgcdw.py:458 +#: rcgcdw.py:737 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "" -#: rcgcdw.py:462 +#: rcgcdw.py:741 msgid "Added an entry to the interwiki table" msgstr "" -#: rcgcdw.py:463 rcgcdw.py:469 +#: rcgcdw.py:742 rcgcdw.py:748 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "" -#: rcgcdw.py:468 +#: rcgcdw.py:747 msgid "Edited an entry in interwiki table" msgstr "" -#: rcgcdw.py:474 +#: rcgcdw.py:753 msgid "Deleted an entry in interwiki table" msgstr "" -#: rcgcdw.py:475 +#: rcgcdw.py:754 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "" -#: rcgcdw.py:479 +#: rcgcdw.py:758 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "" -#: rcgcdw.py:480 +#: rcgcdw.py:759 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "" -#: rcgcdw.py:486 +#: rcgcdw.py:765 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "" -#: rcgcdw.py:490 +#: rcgcdw.py:769 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "" -#: rcgcdw.py:494 +#: rcgcdw.py:773 #, python-brace-format msgid "Edited the slice for {article}" msgstr "" -#: rcgcdw.py:497 +#: rcgcdw.py:776 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:501 +#: rcgcdw.py:780 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:505 +#: rcgcdw.py:784 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:508 +#: rcgcdw.py:787 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:511 +#: rcgcdw.py:790 msgid "Action has been hidden by administration." msgstr "" -#: rcgcdw.py:532 +#: rcgcdw.py:817 msgid "Tags" msgstr "" -#: rcgcdw.py:538 +#: rcgcdw.py:823 msgid "**Added**: " msgstr "" -#: rcgcdw.py:538 +#: rcgcdw.py:823 msgid " and {} more\n" msgstr "" -#: rcgcdw.py:539 +#: rcgcdw.py:824 msgid "**Removed**: " msgstr "" -#: rcgcdw.py:539 +#: rcgcdw.py:824 msgid " and {} more" msgstr "" -#: rcgcdw.py:540 +#: rcgcdw.py:825 msgid "Changed categories" msgstr "" -#: rcgcdw.py:582 +#: rcgcdw.py:866 msgid "~~hidden~~" msgstr "" -#: rcgcdw.py:591 +#: rcgcdw.py:872 msgid "hidden" msgstr "" -#: rcgcdw.py:722 -msgid "Unable to process the event" -msgstr "" - -#: rcgcdw.py:722 -msgid "error" -msgstr "" - -#: rcgcdw.py:827 +#: rcgcdw.py:975 msgid "Daily overview" msgstr "" -#: rcgcdw.py:837 +#: rcgcdw.py:985 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:841 +#: rcgcdw.py:989 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:846 +#: rcgcdw.py:994 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:848 rcgcdw.py:849 rcgcdw.py:853 +#: rcgcdw.py:996 rcgcdw.py:997 rcgcdw.py:1001 msgid "But nobody came" msgstr "" -#: rcgcdw.py:856 +#: rcgcdw.py:1004 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:857 +#: rcgcdw.py:1005 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "Edits made" msgstr "" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "New files" msgstr "" -#: rcgcdw.py:858 +#: rcgcdw.py:1006 msgid "Admin actions" msgstr "" -#: rcgcdw.py:859 +#: rcgcdw.py:1007 msgid "Bytes changed" msgstr "" -#: rcgcdw.py:859 +#: rcgcdw.py:1007 msgid "New articles" msgstr "" -#: rcgcdw.py:860 +#: rcgcdw.py:1008 msgid "Unique contributors" msgstr "" -#: rcgcdw.py:861 +#: rcgcdw.py:1009 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:862 +#: rcgcdw.py:1010 msgid "Day score" msgstr "" -#: rcgcdw.py:1009 +#: rcgcdw.py:1157 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "" -#: rcgcdw.py:1010 rcgcdw.py:1115 +#: rcgcdw.py:1158 rcgcdw.py:1269 msgid "Connection status" msgstr "" -#: rcgcdw.py:1114 +#: rcgcdw.py:1268 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "director" msgstr "" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "bot" msgstr "" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "editor" msgstr "" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "directors" msgstr "" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "sysop" msgstr "" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "bureaucrat" msgstr "" -#: rcgcdw.py:1152 +#: rcgcdw.py:1322 msgid "reviewer" msgstr "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "autoreview" msgstr "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "autopatrol" msgstr "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "wiki_guardian" msgstr "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "second" msgid_plural "seconds" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "minute" msgid_plural "minutes" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "hour" msgid_plural "hours" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "day" msgid_plural "days" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "week" msgid_plural "weeks" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "month" msgid_plural "months" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "year" msgid_plural "years" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "millennium" msgid_plural "millennia" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "decade" msgid_plural "decades" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1153 +#: rcgcdw.py:1323 msgid "century" msgid_plural "centuries" msgstr[0] "" diff --git a/rcgcdw.py b/rcgcdw.py index 211ce23..12ee9fc 100644 --- a/rcgcdw.py +++ b/rcgcdw.py @@ -38,7 +38,7 @@ try: # load settings if settings["limitrefetch"] < settings["limit"] and settings["limitrefetch"] != -1: settings["limitrefetch"] = settings["limit"] if "user-agent" in settings["header"]: - settings["header"]["user-agent"] = settings["header"]["user-agent"].format(version="1.5.3.2") # set the version in the useragent + settings["header"]["user-agent"] = settings["header"]["user-agent"].format(version="1.6") # set the version in the useragent except FileNotFoundError: logging.critical("No config file could be found. Please make sure settings.json is in the directory.") sys.exit(1) @@ -58,6 +58,7 @@ except FileNotFoundError: lang.install() ngettext = lang.ngettext +supported_logs = ["protect/protect", "protect/modify", "protect/unprotect", "upload/overwrite", "upload/upload", "delete/delete", "delete/delete_redir", "delete/restore", "delete/revision", "delete/event", "import/upload", "import/interwiki", "merge/merge", "move/move", "move/move_redir", "protect/move_prot", "block/block", "block/unblock", "block/reblock", "rights/rights", "rights/autopromote", "abusefilter/modify", "abusefilter/create", "interwiki/iw_add", "interwiki/iw_edit", "interwiki/iw_delete", "curseprofile/comment-created", "curseprofile/comment-edited", "curseprofile/comment-deleted", "curseprofile/profile-edited", "curseprofile/comment-replied", "contentmodel/change", "sprite/sprite", "sprite/sheet", "sprite/slice", "managetags/create", "managetags/delete", "managetags/activate", "managetags/deactivate", "tag/update"] class MWError(Exception): pass @@ -79,7 +80,7 @@ class LinkParser(HTMLParser): def handle_data(self, data): 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 = "" else: self.new_string = self.new_string + data @@ -153,40 +154,322 @@ def send_to_discord(data): time.sleep(2.5) pass +def link_formatter(link): + return "<"+re.sub(r"([ \)])", "\\\\\\1", link)+">" -def webhook_formatter(action, STATIC, **params): - logging.debug("Received things: {thing}".format(thing=params)) - colornumber = None if isinstance(STATIC["color"], str) else STATIC["color"] +def compact_formatter(action, change, parsed_comment, categories): + if action != "suppressed": + author_url = link_formatter("https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"], user=change["user"])) + author = change["user"] + parsed_comment = "" if parsed_comment is None else " *("+parsed_comment+")*" + if action in ["edit", "new"]: + edit_link = link_formatter("https://{wiki}.gamepedia.com/index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format( + wiki=settings["wiki"], pageid=change["pageid"], diff=change["revid"], oldrev=change["old_revid"], + article=change["title"])) + edit_size = change["newlen"] - change["oldlen"] + if edit_size > 0: + sign = "+" + else: + sign = "" + if action == "edit": + content = _("[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}{edit_size})").format(author=author, author_url=author_url, article=change["title"], edit_link=edit_link, comment=parsed_comment, edit_size=edit_size, sign=sign) + else: + content = _("[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}{edit_size})").format(author=author, author_url=author_url, article=change["title"], edit_link=edit_link, comment=parsed_comment, edit_size=edit_size, sign=sign) + elif action =="upload/upload": + file_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) uploaded [{file}]({file_link}){comment}").format(author=author, + author_url=author_url, + file=change["title"], + file_link=file_link, + comment=parsed_comment) + elif action == "upload/overwrite": + file_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) uploaded a new version of [{file}]({file_link}){comment}").format(author=author, author_url=author_url, file=change["title"], file_link=file_link, comment=parsed_comment) + elif action == "delete/delete": + page_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) deleted [{page}]({page_link}){comment}").format(author=author, author_url=author_url, page=change["title"], page_link=page_link, + comment=parsed_comment) + elif action == "delete/delete_redir": + page_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) deleted redirect by overwriting [{page}]({page_link}){comment}").format(author=author, author_url=author_url, page=change["title"], page_link=page_link, + comment=parsed_comment) + elif action == "move/move": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["logparams"]['target_title'])) + redirect_status = _("without making a redirect") if "suppressredirect" in change["logparams"] else _("with a redirect") + content = _("[{author}]({author_url}) moved {redirect}*{article}* to [{target}]({target_url}) {made_a_redirect}{comment}").format(author=author, author_url=author_url, redirect="⤷ " if "redirect" in change else "", article=change["title"], + target=change["logparams"]['target_title'], target_url=link, comment=parsed_comment, made_a_redirect=redirect_status) + elif action == "move/move_redir": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["logparams"]["target_title"])) + redirect_status = _("without making a redirect") if "suppressredirect" in change["logparams"] else _( + "with a redirect") + content = _("[{author}]({author_url}) moved {redirect}*{article}* over redirect to [{target}]({target_url}) {made_a_redirect}{comment}").format(author=author, author_url=author_url, redirect="⤷ " if "redirect" in change else "", article=change["title"], + target=change["logparams"]['target_title'], target_url=link, comment=parsed_comment, made_a_redirect=redirect_status) + elif action == "protect/move_prot": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["logparams"]["oldtitle_title"])) + content = _( + "[{author}]({author_url}) moved protection settings from {redirect}*{article}* to [{target}]({target_url}){comment}").format(author=author, author_url=author_url, redirect="⤷ " if "redirect" in change else "", article=change["logparams"]["oldtitle_title"], + target=change["title"], target_url=link, comment=parsed_comment) + elif action == "block/block": + link = link_formatter("https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], + user=change["title"])) + user = change["title"].split(':')[1] + if change["logparams"]["duration"] == "infinite": + block_time = _("infinity and beyond") + else: + english_length = re.sub(r"(\d+)", "", change["logparams"][ + "duration"]) # note that translation won't work for millenia and century yet + english_length_num = re.sub(r"(\D+)", "", change["logparams"]["duration"]) + try: + english_length = english_length.rstrip("s").strip() + block_time = "{num} {translated_length}".format(num=english_length_num, + translated_length=ngettext(english_length, + english_length + "s", + int(english_length_num))) + except AttributeError: + logging.error("Could not strip s from the block event, seems like the regex didn't work?") + return + content = _( + "[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}").format(author=author, author_url=author_url, user=user, time=block_time, user_url=link, comment=parsed_comment) + elif action == "block/reblock": + link = link_formatter("https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], + user=change["title"])) + user = change["title"].split(':')[1] + content = _("[{author}]({author_url}) changed block settings for [{blocked_user}]({user_url}){comment}").format(author=author, author_url=author_url, blocked_user=user, user_url=link, comment=parsed_comment) + elif action == "block/unblock": + link = link_formatter("https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], + user=change["title"])) + user = change["title"].split(':')[1] + content = _("[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}").format(author=author, author_url=author_url, blocked_user=user, user_url=link, comment=parsed_comment) + elif action == "curseprofile/comment-created": + link = link_formatter("https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], + commentid=change["logparams"]["4:comment_id"])) + content = _("[{author}]({author_url}) left a [comment]({comment}) on {target} profile").format(author=author, author_url=author_url, comment=link, target=change["title"].split(':')[1]+"'s" if change["title"].split(':')[1] != change["user"] else _("their own profile")) + elif action == "curseprofile/comment-replied": + link = link_formatter("https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], + commentid=change["logparams"][ + "4:comment_id"])) + content = _("[{author}]({author_url}) replied to a [comment]({comment}) on {target} profile").format(author=author, + author_url=author_url, + comment=link, + target=change["title"].split(':')[1] if change["title"].split(':')[1] !=change["user"] else _("their own")) + elif action == "curseprofile/comment-edited": + link = link_formatter("https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], + commentid=change["logparams"][ + "4:comment_id"])) + content = _("[{author}]({author_url}) edited a [comment]({comment}) on {target} profile").format(author=author, + author_url=author_url, + comment=link, + target=change["title"].split(':')[1] if change["title"].split(':')[1] !=change["user"] else _("their own")) + elif action == "curseprofile/comment-deleted": + link = link_formatter("https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], + commentid=change["logparams"]["4:comment_id"])) + # link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) + content = _("[{author}]({author_url}) deleted a comment on {target} profile").format(author=author, + author_url=author_url, + target=change["title"].split(':')[1] if change["title"].split(':')[1] !=change["user"] else _("their own")) + + elif action == "curseprofile/profile-edited": + link = link_formatter("https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], + target=change["title"].split(':')[1])) + if change["logparams"]['4:section'] == "profile-location": + field = _("Location") + elif change["logparams"]['4:section'] == "profile-aboutme": + field = _("About me") + elif change["logparams"]['4:section'] == "profile-link-google": + field = _("Google link") + elif change["logparams"]['4:section'] == "profile-link-facebook": + field = _("Facebook link") + elif change["logparams"]['4:section'] == "profile-link-twitter": + field = _("Twitter link") + elif change["logparams"]['4:section'] == "profile-link-reddit": + field = _("Reddit link") + elif change["logparams"]['4:section'] == "profile-link-twitch": + field = _("Twitch link") + elif change["logparams"]['4:section'] == "profile-link-psn": + field = _("PSN link") + elif change["logparams"]['4:section'] == "profile-link-vk": + field = _("VK link") + elif change["logparams"]['4:section'] == "profile-link-xbl": + field = _("XVL link") + elif change["logparams"]['4:section'] == "profile-link-steam": + field = _("Steam link") + else: + field = _("unknown") + content = _("[{author}]({author_url}) edited the {field} on [{target}]({target_url})'s profile. *({desc})*").format(author=author, + author_url=author_url, + target=change["title"].split(':')[1]+"'s" if change["title"].split(':')[1] != author else _("their own"), + target_url=link, + field=field, + desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text()) + elif action in ("rights/rights", "rights/autopromote"): + link = link_formatter("https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"], user=change["title"].split(":")[1])) + old_groups = [] + new_groups = [] + for name in change["logparams"]["oldgroups"]: + old_groups.append(_(name)) + for name in change["logparams"]["newgroups"]: + new_groups.append(_(name)) + if len(old_groups) == 0: + old_groups = [_("none")] + if len(new_groups) == 0: + new_groups = [_("none")] + + if action == "rights/rights": + content = "[{author}]({author_url}) changed group membership for [{target}]({target_url}) from {old_groups} to {new_groups}{comment}".format(author=author, author_url=author_url, target=change["title"].split(":")[1], target_url=link, old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), comment=parsed_comment) + else: # TODO Check what happens with author when the system autopromotes + content = "{author} autopromoted [{target}]({target_url}) from {old_groups} to {new_groups}{comment}".format( + author=_("System"), author_url=author_url, target=change["title"].split(":")[1], target_url=link, + old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), + comment=parsed_comment) + elif action == "protect/protect": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) protected [{article}]({article_url}) with the following settings: {settings}{comment}").format(author=author, author_url=author_url, + article=change["title"], article_url=link, + settings=change["logparams"]["description"]+_(" [cascading]") if "cascade" in change["logparams"] else "", + comment=parsed_comment) + elif action == "protect/modify": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _( + "[{author}]({author_url}) modified protection settings of [{article}]({article_url}) to: {settings}{comment}").format( + author=author, author_url=author_url, + article=change["title"], article_url=link, + settings=change["logparams"]["description"] + _(" [cascading]") if "cascade" in change["logparams"] else "", + comment=parsed_comment) + elif action == "protect/unprotect": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) removed protection from [{article}]({article_url}){comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, comment=parsed_comment) + elif action == "delete/revision": + amount = len(change["logparams"]["ids"]) + link = link_formatter("".format(wiki=settings["wiki"], + article=change["title"])) + content = ngettext("[{author}]({author_url}) changed visibility of revision on page [{article}]({article_url}){comment}", + "[{author}]({author_url}) changed visibility of {amount} revisions on page [{article}]({article_url}){comment}", amount).format(author=author, author_url=author_url, + article=change["title"], article_url=link, amount=amount, comment=parsed_comment) + elif action == "import/upload": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = ngettext("[{author}]({author_url}) imported [{article}]({article_url}) with {count} revision{comment}", + "[{author}]({author_url}) imported [{article}]({article_url}) with {count} revisions{comment}", change["logparams"]["count"]).format( + author=author, author_url=author_url, article=change["title"], article_url=link, count=change["logparams"]["count"], comment=parsed_comment) + elif action == "delete/restore": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) restored [{article}]({article_url}){comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, comment=parsed_comment) + elif action == "delete/event": + content = _("[{author}]({author_url}) changed visibility of log events{comment}").format(author=author, author_url=author_url, comment=parsed_comment) + elif action == "import/interwiki": + content = _("[{author}]({author_url}) imported interwiki{comment}").format(author=author, author_url=author_url, comment=parsed_comment) + elif action == "abusefilter/modify": + link = "".format(wiki=settings["wiki"], number=change["logparams"]['newId'], historyid=change["logparams"]["historyId"]) + content = _("[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})").format(author=author, author_url=author_url, number=change["logparams"]['newId'], filter_url=link) + elif action == "abusefilter/create": + link = "".format(wiki=settings["wiki"], number=change["logparams"]['newId']) + content = _("[{author}]({author_url}) created abuse filter [number {number}]({filter_url})").format(author=author, author_url=author_url, number=change["logparams"]['newId'], filter_url=link) + elif action == "merge/merge": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + link_dest = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["logparams"]["dest_title"])) + content = _("[{author}]({author_url}) merged revision histories of [{article}]({article_url}) into [{dest}]({dest_url}){comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, dest_url=link_dest, + dest=change["logparams"]["dest_title"], comment=parsed_comment) + elif action == "interwiki/iw_add": + link = link_formatter("https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])) + content = _("[{author}]({author_url}) added an entry to the [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format(author=author, author_url=author_url, desc=parsed_comment, + prefix=change["logparams"]['0'], + website=change["logparams"]['1'], + table_url=link) + elif action == "interwiki/iw_edit": + link = link_formatter("https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])) + content = _("[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format(author=author, author_url=author_url, desc=parsed_comment, + prefix=change["logparams"]['0'], + website=change["logparams"]['1'], + table_url=link) + elif action == "interwiki/iw_delete": + link = link_formatter("https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])) + content = _("[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})").format(author=author, author_url=author_url, table_url=link) + elif action == "contentmodel/change": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) changed the content model of the page [{article}]({article_url}) from {old} to {new}{comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, old=change["logparams"]["oldmodel"], + new=change["logparams"]["newmodel"], comment=parsed_comment) + elif action == "sprite/sprite": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) edited the sprite for [{article}]({article_url})").format(author=author, author_url=author_url, article=change["title"], article_url=link) + elif action == "sprite/sheet": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) created the sprite sheet for [{article}]({article_url})").format(author=author, author_url=author_url, article=change["title"], article_url=link) + elif action == "sprite/slice": + link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], + article=change["title"])) + content = _("[{author}]({author_url}) edited the slice for [{article}]({article_url})").format(author=author, author_url=author_url, article=change["title"], article_url=link) + elif action == "managetags/create": + link = "".format(wiki=settings["wiki"]) + content = _("[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) + recent_changes.init_info() + elif action == "managetags/delete": + link = "".format(wiki=settings["wiki"]) + content = _("[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) + recent_changes.init_info() + elif action == "managetags/activate": + link = "".format(wiki=settings["wiki"]) + content = _("[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) + elif action == "managetags/deactivate": + link = "".format(wiki=settings["wiki"]) + content = _("[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) + elif action == "suppressed": + link = "".format(wiki=settings["wiki"]) + content = _("An action has been hidden by administration.") + send_to_discord({'content': content}) + +def embed_formatter(action, change, parsed_comment, categories): data = {"embeds": []} embed = defaultdict(dict) - if STATIC["ipaction"]: - author_url = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"], - user=params["user"]) - logging.debug("current user: {} with cache of IPs: {}".format(params["user"], 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}&ucstart={timestamp}&ucprop=".format( - wiki=settings["wiki"], user=params["user"], timestamp=STATIC["timestamp"])), "query", "usercontribs") - if contibs is None: - logging.warning( - "WARNING: Something went wrong when checking amount of contributions for given IP address") - params["user"] = params["user"] + "(?)" + colornumber = None + if parsed_comment is None: + parsed_comment = _("No description provided") + if action != "suppressed": + if "anon" in change: + author_url = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"], + user=change["user"]) + logging.debug("current user: {} with cache of IPs: {}".format(change["user"], recent_changes.map_ips.keys())) + if change["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}&ucstart={timestamp}&ucprop=".format( + wiki=settings["wiki"], user=change["user"], timestamp=change["timestamp"])), "query", "usercontribs") + if contibs is None: + logging.warning( + "WARNING: Something went wrong when checking amount of contributions for given IP address") + change["user"] = change["user"] + "(?)" + else: + recent_changes.map_ips[change["user"]] = len(contibs) + logging.debug("1Current params user {} and state of map_ips {}".format(change["user"], recent_changes.map_ips)) + change["user"] = "{author} ({contribs})".format(author=change["user"], contribs=len(contibs)) else: - recent_changes.map_ips[params["user"]] = len(contibs) - logging.debug("1Current params user {} and state of map_ips {}".format(params["user"], recent_changes.map_ips)) - params["user"] = "{author} ({contribs})".format(author=params["user"], contribs=len(contibs)) + logging.debug( + "2Current params user {} and state of map_ips {}".format(change["user"], recent_changes.map_ips)) + if action in ("edit", "new"): + recent_changes.map_ips[change["user"]] += 1 + change["user"] = "{author} ({amount})".format(author=change["user"], + amount=recent_changes.map_ips[change["user"]]) else: - logging.debug( - "2Current params user {} and state of map_ips {}".format(params["user"], recent_changes.map_ips)) - if action in ("edit", "new"): - recent_changes.map_ips[params["user"]] += 1 - params["user"] = "{author} ({amount})".format(author=params["user"], - amount=recent_changes.map_ips[params["user"]]) - else: - 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=change["user"].replace(" ", "_")) + embed["author"]["name"] = change["user"] + embed["author"]["url"] = author_url if action in ("edit", "new"): # edit or new page - editsize = params["size"] + editsize = change["newlen"] - change["oldlen"] if editsize > 0: if editsize > 6032: colornumber = 65280 @@ -200,19 +483,18 @@ def webhook_formatter(action, STATIC, **params): elif editsize == 0: 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(" ", "_")) - embed["title"] = "{redirect}{article} ({new}{minor}{editsize})".format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"], editsize="+" + str( + wiki=settings["wiki"], pageid=change["pageid"], diff=change["revid"], oldrev=change["old_revid"], + article=change["title"].replace(" ", "_")) + embed["title"] = "{redirect}{article} ({new}{minor}{editsize})".format(redirect="⤷ " if "redirect" in change else "", article=change["title"], editsize="+" + str( editsize) if editsize > 0 else editsize, new=_("(N!) ") if action == "new" else "", - minor=_("m ") if action == "edit" and params[ - "minor"] else "") + minor=_("m ") if action == "edit" and "minor" in change else "") elif action in ("upload/overwrite", "upload/upload"): # sending files 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") + wiki=settings["wiki"], filename=change["title"])), "query", "pages") link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) + article=change["title"].replace(" ", "_")) additional_info_retrieved = False if urls is not None: logging.debug(urls) @@ -222,21 +504,21 @@ def webhook_formatter(action, STATIC, **params): additional_info_retrieved = True else: pass - if params["overwrite"]: + if action == "upload/overwrite": if additional_info_retrieved: - article_encoded = params["title"].replace(" ", "_").replace(')', '\)') + article_encoded = change["title"].replace(" ", "_").replace(')', '\)') 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.split(":", 1)[1]) embed["fields"] = [{"name": _("Options"), "value": _("([preview]({link}) | [undo]({undolink}))").format( link=embed["image"]["url"], undolink=undolink)}] - embed["title"] = _("Uploaded a new version of {name}").format(name=params["title"]) + embed["title"] = _("Uploaded a new version of {name}").format(name=change["title"]) else: - embed["title"] = _("Uploaded {name}").format(name=params["title"]) + embed["title"] = _("Uploaded {name}").format(name=change["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") + wiki=settings["wiki"], article=quote_plus(change["title"], safe=''))), "query", "pages") if article_content is None: logging.warning("Something went wrong when getting license for the image") return 0 @@ -262,44 +544,43 @@ def webhook_formatter(action, STATIC, **params): if additional_info_retrieved: embed["fields"] = [ {"name": _("Options"), "value": _("([preview]({link}))").format(link=embed["image"]["url"])}] - params["desc"] = _("{desc}\nLicense: {license}").format(desc=params["desc"], + parsed_comment = _("{desc}\nLicense: {license}").format(desc=parsed_comment, license=license if license is not None else "?") elif action == "delete/delete": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) - embed["title"] = _("Deleted page {article}").format(article=params["title"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Deleted page {article}").format(article=change["title"]) elif action == "delete/delete_redir": 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"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Deleted redirect {article} by overwriting").format(article=change["title"]) elif action == "move/move": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["target"].replace(" ", "_")) - params["desc"] = "{supress}. {desc}".format(desc=params["desc"], - supress=_("No redirect has been made") if params[ - "supress"] is True else _( + article=change["logparams"]['target_title'].replace(" ", "_")) + parsed_comment = "{supress}. {desc}".format(desc=parsed_comment, + supress=_("No redirect has been made") if "suppressredirect" in change["logparams"] else _( "A redirect has been made")) - embed["title"] = _("Moved {redirect}{article} to {target}").format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"], target=params["target"]) + embed["title"] = _("Moved {redirect}{article} to {target}").format(redirect="⤷ " if "redirect" in change else "", article=change["title"], target=change["logparams"]['target_title']) elif action == "move/move_redir": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["target"].replace(" ", "_")) - embed["title"] = _("Moved {redirect}{article} to {title} over redirect").format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"], - title=params["target"]) + article=change["logparams"]["target_title"].replace(" ", "_")) + embed["title"] = _("Moved {redirect}{article} to {title} over redirect").format(redirect="⤷ " if "redirect" in change else "", article=change["title"], + title=change["logparams"]["target_title"]) elif action == "protect/move_prot": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) - embed["title"] = _("Moved protection settings from {redirect}{article} to {title}").format(redirect="⤷ " if STATIC["redirect"] else "", article=params["title"], - title=params["target"]) + article=change["logparams"]["oldtitle_title"].replace(" ", "_")) + embed["title"] = _("Moved protection settings from {redirect}{article} to {title}").format(redirect="⤷ " if "redirect" in change else "", article=change["logparams"]["oldtitle_title"], + title=change["title"]) elif action == "block/block": link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=params["blocked_user"].replace(" ", "_").replace(')', + user=change["title"].replace(" ", "_").replace(')', '\)')) - user = params["blocked_user"].split(':')[1] - if params["duration"] == "infinite": + user = change["title"].split(':')[1] + if change["logparams"]["duration"] == "infinite": block_time = _("infinity and beyond") else: - english_length = re.sub(r"(\d+)", "", params["duration"]) #note that translation won't work for millenia and century yet - english_length_num = re.sub(r"(\D+)", "", params["duration"]) + english_length = re.sub(r"(\d+)", "", change["logparams"]["duration"]) #note that translation won't work for millenia and century yet + english_length_num = re.sub(r"(\D+)", "", change["logparams"]["duration"]) try: english_length = english_length.rstrip("s").strip() block_time = "{num} {translated_length}".format(num=english_length_num, translated_length=ngettext(english_length, english_length + "s", int(english_length_num))) @@ -309,139 +590,135 @@ def webhook_formatter(action, STATIC, **params): embed["title"] = _("Blocked {blocked_user} for {time}").format(blocked_user=user, time=block_time) elif action == "block/reblock": link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=params["blocked_user"].replace(" ", "_").replace(')', + user=change["title"].replace(" ", "_").replace(')', '\)')) - user = params["blocked_user"].split(':')[1] + user = change["title"].split(':')[1] embed["title"] = _("Changed block settings for {blocked_user}").format(blocked_user=user) elif action == "block/unblock": link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=params["blocked_user"].replace(" ", "_").replace(')', + user=change["title"].replace(" ", "_").replace(')', '\)')) - user = params["blocked_user"].split(':')[1] + user = change["title"].split(':')[1] embed["title"] = _("Unblocked {blocked_user}").format(blocked_user=user) elif action == "curseprofile/comment-created": link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=params["commentid"]) + commentid=change["logparams"]["4:comment_id"]) # 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"]) if params[ - "target"] != \ - params[ - "user"] else _( + embed["title"] = _("Left a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \ + change["user"] else _( "Left a comment on their own profile") 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/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=params["commentid"]) - embed["title"] = _("Replied to a comment on {target}'s profile").format(target=params["target"]) if params[ - "target"] != \ - params[ - "user"] else _( + commentid=change["logparams"]["4:comment_id"]) + embed["title"] = _("Replied to a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \ + change["user"] else _( "Replied to a comment on their own profile") 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/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=params["commentid"]) - embed["title"] = _("Edited a comment on {target}'s profile").format(target=params["target"]) if params[ - "target"] != \ - params[ - "user"] else _( + commentid=change["logparams"]["4:comment_id"]) + embed["title"] = _("Edited a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \ + change["user"] else _( "Edited a comment on their own profile") elif action == "curseprofile/profile-edited": link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], - target=params["target"].replace(" ", + target=change["title"].split(':')[1].replace(" ", "_").replace( ')', '\)')) - if params["field"] == "profile-location": + if change["logparams"]['4:section'] == "profile-location": field = _("Location") - elif params["field"] == "profile-aboutme": + elif change["logparams"]['4:section'] == "profile-aboutme": field = _("About me") - elif params["field"] == "profile-link-google": + elif change["logparams"]['4:section'] == "profile-link-google": field = _("Google link") - elif params["field"] == "profile-link-facebook": + elif change["logparams"]['4:section'] == "profile-link-facebook": field = _("Facebook link") - elif params["field"] == "profile-link-twitter": + elif change["logparams"]['4:section'] == "profile-link-twitter": field = _("Twitter link") - elif params["field"] == "profile-link-reddit": + elif change["logparams"]['4:section'] == "profile-link-reddit": field = _("Reddit link") - elif params["field"] == "profile-link-twitch": + elif change["logparams"]['4:section'] == "profile-link-twitch": field = _("Twitch link") - elif params["field"] == "profile-link-psn": + elif change["logparams"]['4:section'] == "profile-link-psn": field = _("PSN link") - elif params["field"] == "profile-link-vk": + elif change["logparams"]['4:section'] == "profile-link-vk": field = _("VK link") - elif params["field"] == "profile-link-xbl": + elif change["logparams"]['4:section'] == "profile-link-xbl": field = _("XVL link") - elif params["field"] == "profile-link-steam": + elif change["logparams"]['4:section'] == "profile-link-steam": field = _("Steam link") else: field = _("Unknown") - 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=BeautifulSoup(params["desc"], "lxml").get_text()) + embed["title"] = _("Edited {target}'s profile").format(target=change["title"].split(':')[1]) if change["user"] != change["title"].split(':')[1] else _("Edited their own profile") + if not change["parsedcomment"]: # If the field is empty + parsed_comment = _("Cleared the {field} field").format(field=field) + else: + parsed_comment = _("{field} field changed to: {desc}").format(field=field, desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text()) elif action == "curseprofile/comment-deleted": link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=params["commentid"]) + commentid=change["logparams"]["4:comment_id"]) # 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=change["title"].split(':')[1]) elif action in ("rights/rights", "rights/autopromote"): - link = "https://{wiki}.gamepedia.com/User:".format(wiki=settings["wiki"]) + params["title"].split(":")[1].replace(" ", "_") + link = "https://{wiki}.gamepedia.com/User:".format(wiki=settings["wiki"]) + change["title"].split(":")[1].replace(" ", "_") if action == "rights/rights": - embed["title"] = _("Changed group membership for {target}").format(target=params["title"].split(":")[1]) + embed["title"] = _("Changed group membership for {target}").format(target=change["title"].split(":")[1]) else: - params["user"] = _("System") + change["user"] = _("System") author_url = "" embed["title"] = _("{target} got autopromoted to a new usergroup").format( - target=params["title"].split(":")[1]) - if len(params["old_groups"]) < len(params["new_groups"]): + target=change["title"].split(":")[1]) + if len(change["logparams"]["oldgroups"]) < len(change["logparams"]["newgroups"]): embed["thumbnail"]["url"] = "https://i.imgur.com/WnGhF5g.gif" old_groups = [] new_groups = [] - for name in params["old_groups"]: + for name in change["logparams"]["oldgroups"]: old_groups.append(_(name)) - for name in params["new_groups"]: + for name in change["logparams"]["newgroups"]: new_groups.append(_(name)) if len(old_groups) == 0: old_groups = [_("none")] if len(new_groups) == 0: new_groups = [_("none")] - 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( + reason = ": {desc}".format(desc=parsed_comment) if parsed_comment != _("No description provided") else "" + parsed_comment = _("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": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) - embed["title"] = _("Protected {target}").format(target=params["title"]) - params["desc"] = "{settings}{cascade} | {reason}".format(settings=params["settings"], - cascade=_(" [cascading]") if params["cascade"] else "", - reason=params["desc"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Protected {target}").format(target=change["title"]) + parsed_comment = "{settings}{cascade} | {reason}".format(settings=change["logparams"]["description"], + cascade=_(" [cascading]") if "cascade" in change["logparams"] else "", + reason=parsed_comment) elif action == "protect/modify": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) - embed["title"] = _("Changed protection level for {article}").format(article=params["title"]) - params["desc"] = "{settings}{cascade} | {reason}".format(settings=params["settings"], - cascade=_(" [cascading]") if params["cascade"] else "", - reason=params["desc"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Changed protection level for {article}").format(article=change["title"]) + parsed_comment = "{settings}{cascade} | {reason}".format(settings=change["logparams"]["description"], + cascade=_(" [cascading]") if "cascade" in change["logparams"] else "", + reason=parsed_comment) elif action == "protect/unprotect": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) - embed["title"] = _("Removed protection from {article}").format(article=params["title"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Removed protection from {article}").format(article=change["title"]) elif action == "delete/revision": - amount = len(params["amount"]) + amount = len(change["logparams"]["ids"]) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) + article=change["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) + article=change["title"], amount=amount) elif action == "import/upload": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) + article=change["title"].replace(" ", "_")) embed["title"] = ngettext("Imported {article} with {count} revision", - "Imported {article} with {count} revisions", params["amount"]).format( - article=params["title"], count=params["amount"]) + "Imported {article} with {count} revisions", change["logparams"]["count"]).format( + article=change["title"], count=change["logparams"]["count"]) elif action == "delete/restore": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) - embed["title"] = _("Restored {article}").format(article=params["title"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Restored {article}").format(article=change["title"]) elif action == "delete/event": link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) embed["title"] = _("Changed visibility of log events") @@ -449,84 +726,87 @@ def webhook_formatter(action, STATIC, **params): link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) embed["title"] = _("Imported interwiki") elif action == "abusefilter/modify": - link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(wiki=settings["wiki"], number=params["filternr"], historyid=params["historyid"]) - embed["title"] = _("Edited abuse filter number {number}").format(number=params["filternr"]) + link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(wiki=settings["wiki"], number=change["logparams"]['newId'], historyid=change["logparams"]["historyId"]) + embed["title"] = _("Edited abuse filter number {number}").format(number=change["logparams"]['newId']) elif action == "abusefilter/create": - link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/{number}".format(wiki=settings["wiki"], number=params["filternr"]) - embed["title"] = _("Created abuse filter number {number}").format(number=params["filternr"]) + link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/{number}".format(wiki=settings["wiki"], number=change["logparams"]['newId']) + embed["title"] = _("Created abuse filter number {number}").format(number=change["logparams"]['newId']) elif action == "merge/merge": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=params["title"].replace(" ", "_")) - embed["title"] = _("Merged revision histories of {article} into {dest}").format(article=params["title"], - dest=params["destination"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Merged revision histories of {article} into {dest}").format(article=change["title"], + dest=change["logparams"]["dest_title"]) elif action == "interwiki/iw_add": link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) 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"]) + parsed_comment = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=parsed_comment, + prefix=change["logparams"]['0'], + website=change["logparams"]['1']) elif action == "interwiki/iw_edit": link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) 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"]) + parsed_comment = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=parsed_comment, + prefix=change["logparams"]['0'], + website=change["logparams"]['1']) elif action == "interwiki/iw_delete": link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) embed["title"] = _("Deleted an entry in interwiki table") - params["desc"] = _("Prefix: {prefix} | {desc}").format(desc=params["desc"], prefix=params["prefix"]) + parsed_comment = _("Prefix: {prefix} | {desc}").format(desc=parsed_comment, prefix=change["logparams"]['0']) elif action == "contentmodel/change": 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"]) - params["desc"] = _("Model changed from {old} to {new}: {reason}").format(old=params["oldmodel"], - new=params["newmodel"], - reason=params["desc"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Changed the content model of the page {article}").format(article=change["title"]) + parsed_comment = _("Model changed from {old} to {new}: {reason}").format(old=change["logparams"]["oldmodel"], + new=change["logparams"]["newmodel"], + reason=parsed_comment) elif action == "sprite/sprite": 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"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Edited the sprite for {article}").format(article=change["title"]) elif action == "sprite/sheet": 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"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Created the sprite sheet for {article}").format(article=change["title"]) elif action == "sprite/slice": 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"]) + article=change["title"].replace(" ", "_")) + embed["title"] = _("Edited the slice for {article}").format(article=change["title"]) elif action == "managetags/create": link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) - embed["title"] = _("Created a tag \"{tag}\"").format(tag=params["additional"]["tag"]) + embed["title"] = _("Created a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) recent_changes.init_info() elif action == "managetags/delete": link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) - embed["title"] = _("Deleted a tag \"{tag}\"").format(tag=params["additional"]["tag"]) + embed["title"] = _("Deleted a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) recent_changes.init_info() elif action == "managetags/activate": link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) - embed["title"] = _("Activated a tag \"{tag}\"").format(tag=params["additional"]["tag"]) + embed["title"] = _("Activated a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) elif action == "managetags/deactivate": link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) - embed["title"] = _("Deactivated a tag \"{tag}\"").format(tag=params["additional"]["tag"]) + embed["title"] = _("Deactivated a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) elif action == "suppressed": link = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"]) embed["title"] = _("Action has been hidden by administration.") + embed["author"]["name"] = _("Unknown") else: - logging.warning("No entry for {event} with params: {params}".format(event=action, params=params)) - embed["author"]["name"] = params["user"] - embed["author"]["url"] = author_url - embed["author"]["icon_url"] = STATIC["icon"] + logging.warning("No entry for {event} with params: {params}".format(event=action, params=change)) + embed["author"]["icon_url"] = settings["appearance"]["embed"][action]["icon"] embed["url"] = link - if "desc" not in params: - params["desc"] = "" - embed["description"] = params["desc"] - embed["color"] = random.randrange(1, 16777215) if colornumber is None else math.floor(colornumber) - embed["timestamp"] = STATIC["timestamp"] - if STATIC["tags"]: + embed["description"] = parsed_comment + if colornumber is None: + if settings["appearance"]["embed"][action]["color"] is None: + embed["color"] = random.randrange(1, 16777215) + else: + embed["color"] = settings["appearance"]["embed"][action]["color"] + else: + embed["color"] = math.floor(colornumber) + embed["timestamp"] = change["timestamp"] + if "tags" in change and change["tags"]: tag_displayname = [] if "fields" not in embed: embed["fields"] = [] - for tag in STATIC["tags"]: + for tag in change["tags"]: if tag in recent_changes.tags: if recent_changes.tags[tag] is None: continue # Ignore hidden tags @@ -535,13 +815,13 @@ def webhook_formatter(action, STATIC, **params): else: tag_displayname.append(tag) embed["fields"].append({"name": _("Tags"), "value": ", ".join(tag_displayname)}) - logging.debug("Current params in edit action: {}".format(params)) - if "changed_categories" in STATIC and STATIC["changed_categories"] is not None and not (len(STATIC["changed_categories"]["new"]) == 0 and len(STATIC["changed_categories"]["removed"]) == 0): + logging.debug("Current params in edit action: {}".format(change)) + if categories is not None and not (len(categories["new"]) == 0 and len(categories["removed"]) == 0): if "fields" not in embed: embed["fields"] = [] # embed["fields"].append({"name": _("Changed categories"), "value": ", ".join(params["new_categories"][0:15]) + ("" if (len(params["new_categories"]) < 15) else _(" and {} more").format(len(params["new_categories"])-14))}) - new_cat = (_("**Added**: ") + ", ".join(list(STATIC["changed_categories"]["new"])[0:16]) + ("\n" if len(STATIC["changed_categories"]["new"])<=15 else _(" and {} more\n").format(len(STATIC["changed_categories"]["new"])-15))) if STATIC["changed_categories"]["new"] else "" - del_cat = (_("**Removed**: ") + ", ".join(list(STATIC["changed_categories"]["removed"])[0:16]) + ("" if len(STATIC["changed_categories"]["removed"])<=15 else _(" and {} more").format(len(STATIC["changed_categories"]["removed"])-15))) if STATIC["changed_categories"]["removed"] else "" + new_cat = (_("**Added**: ") + ", ".join(list(categories["new"])[0:16]) + ("\n" if len(categories["new"])<=15 else _(" and {} more\n").format(len(categories["new"])-15))) if categories["new"] else "" + del_cat = (_("**Removed**: ") + ", ".join(list(categories["removed"])[0:16]) + ("" if len(categories["removed"])<=15 else _(" and {} more").format(len(categories["removed"])-15))) if categories["removed"] else "" embed["fields"].append({"name": _("Changed categories"), "value": new_cat + del_cat}) data["embeds"].append(dict(embed)) data['avatar_url'] = settings["avatars"]["embed"] @@ -571,178 +851,41 @@ def handle_discord_http(code, formatted_embed, result): return 3 -def first_pass( - change, changed_categories): # I've decided to split the embed formatter and change handler, maybe it's more messy this way, I don't know - if ("actionhidden" in change or "suppressed" in change) and "suppressed" not in settings["ignored"]: - webhook_formatter("suppressed", - {"timestamp": change["timestamp"], "color": settings["appearance"]["suppressed"]["color"], - "icon": settings["appearance"]["suppressed"]["icon"]}, user=change["user"]) +def essential_info(change, changed_categories): + """Prepares essential information for both embed and compact message format.""" + logging.debug(change) + if ("actionhidden" in change or "suppressed" in change) and "suppressed" not in settings["ignored"]: # if event is hidden using suppression + appearance_mode("suppressed", change, "", changed_categories) return if "commenthidden" not in change: LinkParser.feed(change["parsedcomment"]) - # parsedcomment = (BeautifulSoup(change["parsedcomment"], "lxml")).get_text() - parsedcomment = LinkParser.new_string + parsed_comment = LinkParser.new_string LinkParser.new_string = "" + parsed_comment = re.sub(r"(`|_|\*|~|{|}|\|\|)", "\\\\\\1", parsed_comment, 0) else: - parsedcomment = _("~~hidden~~") - logging.debug(change) - STATIC_VARS = {"timestamp": change["timestamp"], "tags": change["tags"], "redirect": (True if "redirect" in change else False), "ipaction": (True if "anon" in change else False), "changed_categories": changed_categories} - if not parsedcomment: - parsedcomment = _("No description provided") - parsedcomment = re.sub(r"(`|_|\*|~|<|>|{|}|\|\|)", "\\\\\\1", parsedcomment, 0) - if change["type"] == "edit" and "edit" not in settings["ignored"]: - logging.debug("List of categories in first_pass: {}".format(changed_categories)) + parsed_comment = _("~~hidden~~") + if not parsed_comment: + parsed_comment = None + if change["type"] in ["edit", "new"]: + logging.debug("List of categories in essential_info: {}".format(changed_categories)) if "userhidden" in change: change["user"] = _("hidden") - STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"]["edit"]["color"], - "icon": settings["appearance"]["edit"]["icon"]}} - webhook_formatter("edit", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"], - size=change["newlen"] - change["oldlen"], minor=True if "minor" in change else False) + identification_string = change["type"] elif change["type"] == "log": - combination = "{logtype}/{logaction}".format(logtype=change["logtype"], logaction=change["logaction"]) - if combination in settings["ignored"]: + identification_string = "{logtype}/{logaction}".format(logtype=change["logtype"], logaction=change["logaction"]) + if identification_string not in supported_logs: + logging.warning( + "This event is not implemented in the script. Please make an issue on the tracker attaching the following info: wiki url, time, and this information: {}".format( + change)) return - logging.debug("combination is {}".format(combination)) - try: - STATIC_VARS = {**STATIC_VARS, **{"color": settings["appearance"][combination]["color"], - "icon": settings["appearance"][combination]["icon"]}} - except KeyError: - STATIC_VARS = {**STATIC_VARS, **{"color": "", "icon": ""}} - logging.error("No value in the settings has been given for {}".format(combination)) - if combination == "protect/protect": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - settings=change["logparams"]["description"], cascade=True if "cascade" in change["logparams"] else False) - elif combination == "protect/modify": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - settings=change["logparams"]["description"], cascade=True if "cascade" in change["logparams"] else False) - elif combination == "protect/unprotect": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif combination == "upload/overwrite": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - overwrite=True) - elif combination == "upload/upload": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - overwrite=False) - elif combination == "delete/delete": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif combination == "delete/delete_redir": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif combination == "delete/restore": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif combination == "delete/revision": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - amount=change["logparams"]["ids"]) - elif combination == "delete/event": - webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment) - elif combination == "import/upload": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - amount=change["logparams"]["count"]) - elif combination == "import/interwiki": - webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment) - elif combination == "merge/merge": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - destination=change["logparams"]["dest_title"]) - 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']) - elif combination == "move/move_redir": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - target=change["logparams"]["target_title"]) - elif combination == "protect/move_prot": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["logparams"]["oldtitle_title"], desc=parsedcomment, - target=change["title"]) - elif combination == "block/block": - webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"], - desc=parsedcomment, duration=change["logparams"]["duration"]) - elif combination == "block/unblock": - webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"], - desc=parsedcomment) - elif combination == "block/reblock": - webhook_formatter(combination, STATIC_VARS, user=change["user"], blocked_user=change["title"], - desc=parsedcomment) - 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"]) - 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"]) - elif combination == "abusefilter/modify": - webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, - filternr=change["logparams"]['newId'], historyid=change["logparams"]["historyId"]) - elif combination == "abusefilter/create": - webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, - filternr=change["logparams"]['newId']) - elif combination == "interwiki/iw_add": - webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, - prefix=change["logparams"]['0'], website=change["logparams"]['1']) - elif combination == "interwiki/iw_edit": - webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, - prefix=change["logparams"]['0'], website=change["logparams"]['1']) - elif combination == "interwiki/iw_delete": - webhook_formatter(combination, STATIC_VARS, user=change["user"], desc=parsedcomment, - prefix=change["logparams"]['0']) - elif combination == "curseprofile/comment-created": - webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], - commentid=change["logparams"]["4:comment_id"]) - elif combination == "curseprofile/comment-edited": - webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], - commentid=change["logparams"]["4:comment_id"]) - elif combination == "curseprofile/comment-deleted": - webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], - commentid=change["logparams"]["4:comment_id"]) - elif combination == "curseprofile/profile-edited": - webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], - field=change["logparams"]['4:section'], desc=change["parsedcomment"]) - elif combination == "curseprofile/comment-replied": - webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], - commentid=change["logparams"]["4:comment_id"]) - 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"]) - elif combination == "sprite/sprite": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif combination == "sprite/sheet": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif combination == "sprite/slice": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif combination == "managetags/create": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - additional=change["logparams"]) - elif combination == "managetags/delete": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - additional=change["logparams"]) - elif combination == "managetags/activate": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - additional=change["logparams"]) - elif combination == "managetags/deactivate": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, - additional=change["logparams"]) - elif combination == "tag/update": - webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - else: - logging.warning("No entry matches given change!") - logging.warning("Entry: {}".format(change)) - send(_("Unable to process the event"), _("error"), settings["avatars"]["no_event"]) - return - # elif change["type"] == "external": # not sure what happens then, but it's listed as possible type - # logging.warning("External event happened, ignoring.") - # print(change) - # return - 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"]}} - 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"]) elif change["type"] == "categorize": return else: - logging.warning("This event is not implemented in the bot.") - logging.debug("Cannot process event {}".format(change)) + logging.warning("This event is not implemented in the script. Please make an issue on the tracker attaching the following info: wiki url, time, and this information: {}".format(change)) return - + if identification_string in settings["ignored"]: + return + appearance_mode(identification_string, change, parsed_comment, changed_categories) def day_overview_request(): logging.info("Fetching daily overview... This may take up to 30 seconds!") @@ -831,8 +974,8 @@ def day_overview(): # time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time. embed = defaultdict(dict) embed["title"] = _("Daily overview") embed["url"] = "https://{wiki}.gamepedia.com/Special:Statistics".format(wiki=settings["wiki"]) - embed["color"] = settings["appearance"]["daily_overview"]["color"] - embed["author"]["icon_url"] = settings["appearance"]["daily_overview"]["icon"] + embed["color"] = settings["appearance"]["embed"]["daily_overview"]["color"] + embed["author"]["icon_url"] = settings["appearance"]["embed"]["daily_overview"]["icon"] embed["author"]["name"] = settings["wikiname"] embed["author"]["url"] = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"]) if activity: @@ -1066,7 +1209,7 @@ class Recent_Changes_Class(object): if clean and not (self.recent_id == 0 and change["rcid"] > self.file_id): logging.debug("Rejected {val}".format(val=change["rcid"])) continue - first_pass(change, categorize_events.get(change.get("revid"), None)) + essential_info(change, categorize_events.get(change.get("revid"), None)) return change["rcid"] def safe_request(self, url): @@ -1154,6 +1297,16 @@ class Recent_Changes_Class(object): recent_changes = Recent_Changes_Class() +# Set the proper formatter +if settings["appearance"]["mode"] == "embed": + appearance_mode = embed_formatter +elif settings["appearance"]["mode"] == "compact": + appearance_mode = compact_formatter +else: + logging.critical("Unknown formatter!") + sys.exit(1) + +# Log in and download wiki information try: if settings["wiki_bot_login"] and settings["wiki_bot_password"]: recent_changes.log_in() diff --git a/settings.json.example b/settings.json.example index 744421d..68e97a6 100644 --- a/settings.json.example +++ b/settings.json.example @@ -27,181 +27,184 @@ "wiki_bot_password": "", "show_added_categories": true, "appearance":{ - "daily_overview": { - "color": 16312092, - "icon":"" - }, - "new":{ - "icon":"https://i.imgur.com/6HIbEq8.png", - "color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE" - }, - "edit":{ - "icon":"", - "color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE" - }, - "upload/overwrite":{ - "icon":"https://i.imgur.com/egJpa81.png", - "color":12390624 - }, - "upload/upload":{ - "icon":"https://i.imgur.com/egJpa81.png", - "color":null - }, - "delete/delete":{ - "icon":"https://i.imgur.com/BU77GD3.png", - "color":1 - }, - "delete/delete_redir":{ - "icon":"https://i.imgur.com/BU77GD3.png", - "color":1 - }, - "delete/restore":{ - "icon":"https://i.imgur.com/9MnROIU.png", - "color":null - }, - "delete/revision":{ - "icon":"https://i.imgur.com/1gps6EZ.png", - "color":null - }, - "delete/event":{ - "icon":"https://i.imgur.com/1gps6EZ.png", - "color":null - }, - "merge/merge":{ - "icon":"https://i.imgur.com/uQMK9XK.png", - "color":null - }, - "move/move":{ - "icon":"https://i.imgur.com/eXz9dog.png", - "color":null - }, - "move/move_redir":{ - "icon":"https://i.imgur.com/UtC3YX2.png", - "color":null - }, - "block/block":{ - "icon":"https://i.imgur.com/g7KgZHf.png", - "color":1 - }, - "block/unblock":{ - "icon":"https://i.imgur.com/bvtBJ8o.png", - "color":1 - }, - "block/reblock":{ - "icon":"https://i.imgur.com/g7KgZHf.png", - "color":1 - }, - "protect/protect":{ - "icon":"https://i.imgur.com/bzPt89Z.png", - "color":null - }, - "protect/modify":{ - "icon":"https://i.imgur.com/bzPt89Z.png", - "color":null - }, - "protect/move_prot":{ - "icon":"https://i.imgur.com/bzPt89Z.png", - "color":null - }, - "protect/unprotect":{ - "icon":"https://i.imgur.com/2wN3Qcq.png", - "color":null - }, - "import/upload":{ - "icon":"", - "color":null - }, - "import/interwiki":{ - "icon":"https://i.imgur.com/sFkhghb.png", - "color":null - }, - "rights/rights":{ - "icon":"", - "color":null - }, - "abusefilter/abusefilter":{ - "icon":"https://i.imgur.com/Sn2NzRJ.png", - "color":null - }, - "abusefilter/modify":{ - "icon":"https://i.imgur.com/Sn2NzRJ.png", - "color":null - }, - "abusefilter/create": { - "icon":"https://i.imgur.com/Sn2NzRJ.png", - "color":null - }, - "interwiki/iw_add":{ - "icon":"https://i.imgur.com/sFkhghb.png", - "color":null - }, - "interwiki/iw_edit":{ - "icon":"https://i.imgur.com/sFkhghb.png", - "color":null - }, - "interwiki/iw_delete":{ - "icon":"https://i.imgur.com/sFkhghb.png", - "color":null - }, - "curseprofile/comment-created":{ - "icon":"https://i.imgur.com/Lvy5E32.png", - "color":null - }, - "curseprofile/comment-edited":{ - "icon":"https://i.imgur.com/Lvy5E32.png", - "color":null - }, - "curseprofile/comment-deleted":{ - "icon":"", - "color":null - }, - "curseprofile/comment-replied":{ - "icon":"https://i.imgur.com/hkyYsI1.png", - "color":null - }, - "curseprofile/profile-edited":{ - "icon":"", - "color":null - }, - "contentmodel/change":{ - "icon":"", - "color":null - }, - "sprite/sprite":{ - "icon":"", - "color":null - }, - "sprite/sheet":{ - "icon":"", - "color":null - }, - "sprite/slice":{ - "icon":"", - "color":null - }, - "managetags/create":{ - "icon":"", - "color":null - }, - "managetags/delete":{ - "icon":"", - "color":null - }, - "managetags/activate":{ - "icon":"", - "color":null - }, - "managetags/deactivate":{ - "icon":"", - "color":null - }, - "tag/update":{ - "icon":"", - "color":null - }, - "suppressed":{ - "icon": "https://i.imgur.com/1gps6EZ.png", - "color": 8092539 + "mode": "embed", + "embed": { + "daily_overview": { + "color": 16312092, + "icon":"" + }, + "new":{ + "icon":"https://i.imgur.com/6HIbEq8.png", + "color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE" + }, + "edit":{ + "icon":"", + "color":"THIS COLOR DEPENDS ON EDIT SIZE, PLEASE DON'T CHANGE" + }, + "upload/overwrite":{ + "icon":"https://i.imgur.com/egJpa81.png", + "color":12390624 + }, + "upload/upload":{ + "icon":"https://i.imgur.com/egJpa81.png", + "color":null + }, + "delete/delete":{ + "icon":"https://i.imgur.com/BU77GD3.png", + "color":1 + }, + "delete/delete_redir":{ + "icon":"https://i.imgur.com/BU77GD3.png", + "color":1 + }, + "delete/restore":{ + "icon":"https://i.imgur.com/9MnROIU.png", + "color":null + }, + "delete/revision":{ + "icon":"https://i.imgur.com/1gps6EZ.png", + "color":null + }, + "delete/event":{ + "icon":"https://i.imgur.com/1gps6EZ.png", + "color":null + }, + "merge/merge":{ + "icon":"https://i.imgur.com/uQMK9XK.png", + "color":null + }, + "move/move":{ + "icon":"https://i.imgur.com/eXz9dog.png", + "color":null + }, + "move/move_redir":{ + "icon":"https://i.imgur.com/UtC3YX2.png", + "color":null + }, + "block/block":{ + "icon":"https://i.imgur.com/g7KgZHf.png", + "color":1 + }, + "block/unblock":{ + "icon":"https://i.imgur.com/bvtBJ8o.png", + "color":1 + }, + "block/reblock":{ + "icon":"https://i.imgur.com/g7KgZHf.png", + "color":1 + }, + "protect/protect":{ + "icon":"https://i.imgur.com/bzPt89Z.png", + "color":null + }, + "protect/modify":{ + "icon":"https://i.imgur.com/bzPt89Z.png", + "color":null + }, + "protect/move_prot":{ + "icon":"https://i.imgur.com/bzPt89Z.png", + "color":null + }, + "protect/unprotect":{ + "icon":"https://i.imgur.com/2wN3Qcq.png", + "color":null + }, + "import/upload":{ + "icon":"", + "color":null + }, + "import/interwiki":{ + "icon":"https://i.imgur.com/sFkhghb.png", + "color":null + }, + "rights/rights":{ + "icon":"", + "color":null + }, + "abusefilter/abusefilter":{ + "icon":"https://i.imgur.com/Sn2NzRJ.png", + "color":null + }, + "abusefilter/modify":{ + "icon":"https://i.imgur.com/Sn2NzRJ.png", + "color":null + }, + "abusefilter/create": { + "icon":"https://i.imgur.com/Sn2NzRJ.png", + "color":null + }, + "interwiki/iw_add":{ + "icon":"https://i.imgur.com/sFkhghb.png", + "color":null + }, + "interwiki/iw_edit":{ + "icon":"https://i.imgur.com/sFkhghb.png", + "color":null + }, + "interwiki/iw_delete":{ + "icon":"https://i.imgur.com/sFkhghb.png", + "color":null + }, + "curseprofile/comment-created":{ + "icon":"https://i.imgur.com/Lvy5E32.png", + "color":null + }, + "curseprofile/comment-edited":{ + "icon":"https://i.imgur.com/Lvy5E32.png", + "color":null + }, + "curseprofile/comment-deleted":{ + "icon":"", + "color":null + }, + "curseprofile/comment-replied":{ + "icon":"https://i.imgur.com/hkyYsI1.png", + "color":null + }, + "curseprofile/profile-edited":{ + "icon":"", + "color":null + }, + "contentmodel/change":{ + "icon":"", + "color":null + }, + "sprite/sprite":{ + "icon":"", + "color":null + }, + "sprite/sheet":{ + "icon":"", + "color":null + }, + "sprite/slice":{ + "icon":"", + "color":null + }, + "managetags/create":{ + "icon":"", + "color":null + }, + "managetags/delete":{ + "icon":"", + "color":null + }, + "managetags/activate":{ + "icon":"", + "color":null + }, + "managetags/deactivate":{ + "icon":"", + "color":null + }, + "tag/update":{ + "icon":"", + "color":null + }, + "suppressed":{ + "icon": "https://i.imgur.com/1gps6EZ.png", + "color": 8092539 + } } } }