diff --git a/.gitignore b/.gitignore index b936a18..d5b0f0d 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ settings.json pygettext.py lastchange.txt .directory +/debug diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 13953ea..e99865f 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,7 +2,11 @@ Welcome! If you got here, it means you want to learn how to contribute to my little project. That's great! Thank you for your interest. ## Code ## -This may be a bit painful, the quality of code can be very... Questionable, to say the least. However, if you like adventures, you are free to contribute to the project! All I ask you is just so you send merge requests to the testing branch. +This may be a bit painful, the quality of code can be very... Questionable, to say the least. However, if you like adventures, you are free to contribute to the project! All I ask you is just so you send merge requests to the testing unstable. +Current branch rules are as follows: +`master` - the most stable branch that has been tested for at least one day. +`testing `- testing branch is what all of my hosted scripts run. It is used to test the code before merging it with master branch. All languages must be finished for code to be pushed to this branch. +`unstable` - the most unstable of unstable. Can result in frying the machine, well, not really, but all of new changes come here first, after some internal testing and translations it can be merged with testing branch. ## Translations ## If you speak in other languages than English, you are more than welcome to. All you need to do, is grab the [translation template file](rcgcdw.pot) and fill out the empty strings under every English sentence. You can use software like Poedit or use your favorite text editor to do that. If you are looking for examples, you can look at [Polish translation](/locale/pl/LC_MESSAGES/rcgcdw.po). After you translate it, you can either send a merge request to the testing branch, or, if you don't know git [contact me directly](https://minecraft.gamepedia.com/User:Frisk#Contact) so I can do this for you. diff --git a/locale/de/LC_MESSAGES/rcgcdw.mo b/locale/de/LC_MESSAGES/rcgcdw.mo index a1bfff2..e174376 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 965f9c9..c681693 100644 --- a/locale/de/LC_MESSAGES/rcgcdw.po +++ b/locale/de/LC_MESSAGES/rcgcdw.po @@ -5,8 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2018-07-05 20:21+0200\n" -"PO-Revision-Date: 2018-07-05 20:24+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-12 11:29+0200\n" +"PO-Revision-Date: 2018-07-12 12:10+0200\n" "Last-Translator: MarkusRost\n" "Language-Team: \n" "Language: de\n" @@ -15,40 +16,46 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" "X-Generator: Poedit 2.0.8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: rcgcdw.py:126 +#: rcgcdw.py:124 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:126 +#: rcgcdw.py:124 msgid "m " msgstr "K " -#: rcgcdw.py:144 -msgid "([preview]({link}) | [undo]({undolink}))" -msgstr "([Vorschau]({link}) | [zurücksetzen]({undolink}))" - -#: rcgcdw.py:144 rcgcdw.py:170 +#: rcgcdw.py:142 rcgcdw.py:168 msgid "Options" msgstr "Optionen" -#: rcgcdw.py:145 +#: rcgcdw.py:142 +#, python-brace-format +msgid "([preview]({link}) | [undo]({undolink}))" +msgstr "([Vorschau]({link}) | [zurücksetzen]({undolink}))" + +#: rcgcdw.py:143 +#, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Neue Dateiversion {name}" -#: rcgcdw.py:147 +#: rcgcdw.py:145 +#, python-brace-format msgid "Uploaded {name}" msgstr "Neue Datei {name}" -#: rcgcdw.py:160 +#: rcgcdw.py:158 msgid "**No license!**" msgstr "**Keine Lizenz!**" -#: rcgcdw.py:170 +#: rcgcdw.py:168 +#, python-brace-format msgid "([preview]({link}))" msgstr "([Vorschau]({link}))" -#: rcgcdw.py:171 +#: rcgcdw.py:169 +#, python-brace-format msgid "" "{desc}\n" "License: {license}" @@ -56,311 +63,407 @@ msgstr "" "{desc}\n" "Lizenz: {license}" -#: rcgcdw.py:174 +#: rcgcdw.py:172 +#, python-brace-format msgid "Deleted page {article}" msgstr "Löschte {article}" -#: rcgcdw.py:177 +#: rcgcdw.py:175 +#, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Löschte die Weiterleitung {article} um Platz zu machen" -#: rcgcdw.py:180 -msgid "A redirect has been made" -msgstr "Eine Weiterleitung wurde erstellt" - -#: rcgcdw.py:180 +#: rcgcdw.py:178 msgid "No redirect has been made" msgstr "Die Erstellung einer Weiterleitung wurde unterdrückt" -#: rcgcdw.py:181 +#: rcgcdw.py:178 +msgid "A redirect has been made" +msgstr "Eine Weiterleitung wurde erstellt" + +#: rcgcdw.py:179 +#, python-brace-format msgid "Moved {article} to {target}" msgstr "Verschob {article} nach {target}" -#: rcgcdw.py:184 +#: rcgcdw.py:182 +#, python-brace-format msgid "Moved {article} to {title} over redirect" msgstr "Verschob {article} nach {title} und überschrieb eine Weiterleitung" -#: rcgcdw.py:187 +#: rcgcdw.py:185 +#, python-brace-format msgid "Moved protection settings from {article} to {title}" msgstr "Verschob die Schutzeinstellungen von {article} nach {title}" -#: rcgcdw.py:191 +#: rcgcdw.py:189 msgid "infinity and beyond" msgstr "alle Ewigkeit" -#: rcgcdw.py:192 +#: rcgcdw.py:190 +#, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Sperrte {blocked_user} für {time}" -#: rcgcdw.py:196 +#: rcgcdw.py:194 +#, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Änderte die Sperreinstellungen für {blocked_user}" -#: rcgcdw.py:200 +#: rcgcdw.py:198 +#, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Hob die Sperre von {blocked_user} auf" -#: rcgcdw.py:204 +#: rcgcdw.py:202 +#, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Hinterließ ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:208 +#: rcgcdw.py:206 +#, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Antwortete auf ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:212 +#: rcgcdw.py:210 +#, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Bearbeitete ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:216 +#: rcgcdw.py:214 msgid "Location" msgstr "Wohnort" -#: rcgcdw.py:218 +#: rcgcdw.py:216 msgid "About me" msgstr "\"Über mich\"-Abschnitt" -#: rcgcdw.py:220 +#: rcgcdw.py:218 msgid "Google link" msgstr "Google-Konto" -#: rcgcdw.py:222 +#: rcgcdw.py:220 msgid "Facebook link" msgstr "Facebook-Seite" -#: rcgcdw.py:224 +#: rcgcdw.py:222 msgid "Twitter link" msgstr "Twitter-Benutzernamen" -#: rcgcdw.py:226 +#: rcgcdw.py:224 msgid "Reddit link" msgstr "Reddit-Benutzernamen" -#: rcgcdw.py:228 +#: rcgcdw.py:226 msgid "Twitch link" msgstr "Twitch-Account" -#: rcgcdw.py:230 +#: rcgcdw.py:228 msgid "PSN link" msgstr "PSN-Account" -#: rcgcdw.py:232 +#: rcgcdw.py:230 msgid "VK link" msgstr "VK-Account" -#: rcgcdw.py:234 +#: rcgcdw.py:232 msgid "XVL link" msgstr "Xbox-Live-Tag" -#: rcgcdw.py:236 +#: rcgcdw.py:234 msgid "Steam link" msgstr "Steam-Account" -#: rcgcdw.py:238 +#: rcgcdw.py:236 msgid "Unknown" msgstr "Unbekannt" -#: rcgcdw.py:239 +#: rcgcdw.py:237 +#, python-brace-format msgid "Edited {target}'s profile" msgstr "Bearbeitete das Profil von {target}" -#: rcgcdw.py:240 +#: rcgcdw.py:238 +#, python-brace-format msgid "{field} field changed to: {desc}" msgstr "{field} geändert zu: {desc}" -#: rcgcdw.py:244 +#: rcgcdw.py:242 +#, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Löschte ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:247 +#: rcgcdw.py:246 +#, python-brace-format msgid "Changed group membership for {target}" msgstr "Änderte die Gruppenzugehörigkeit von {target}" -#: rcgcdw.py:251 rcgcdw.py:253 +#: rcgcdw.py:248 +msgid "System" +msgstr "System" + +#: rcgcdw.py:250 +#, python-brace-format +msgid "{target} got autopromoted to a new usergroup" +msgstr "{target} got autopromoted to a new usergroup" + +#: rcgcdw.py:260 rcgcdw.py:262 msgid "none" msgstr "keine" -#: rcgcdw.py:254 rcgcdw.py:376 +#: rcgcdw.py:263 rcgcdw.py:385 msgid "No description provided" msgstr "Keine Zusammenfassung angegeben" -#: rcgcdw.py:255 +#: rcgcdw.py:264 +#, 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:258 +#: rcgcdw.py:267 +#, python-brace-format msgid "Protected {target}" msgstr "Schützte {target}" -#: rcgcdw.py:262 +#: rcgcdw.py:271 +#, python-brace-format msgid "Changed protection level for {article}" msgstr "Änderte den Schutzstatus von {article}" -#: rcgcdw.py:266 +#: rcgcdw.py:275 +#, python-brace-format msgid "Removed protection from {article}" msgstr "Entfernte den Schutz von {article}" -#: rcgcdw.py:269 -msgid "Changed visibility of revision(s) on page {article} " -msgstr "Änderte die Sichtbarkeit einiger Versionen von {article}" +#: rcgcdw.py:279 +#, 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:272 -msgid "Imported {article} with {count} revision(s)" -msgstr "Importierte {article} mit {count} Versionen" +#: rcgcdw.py:282 +#, 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:275 +#: rcgcdw.py:285 +#, python-brace-format msgid "Restored {article}" msgstr "Stellte {article} wieder her" -#: rcgcdw.py:278 +#: rcgcdw.py:288 msgid "Changed visibility of log events" msgstr "Änderte die Sichtbarkeit eines Logbucheintrags" -#: rcgcdw.py:281 +#: rcgcdw.py:291 msgid "Imported interwiki" msgstr "Importierte Interwiki" -#: rcgcdw.py:284 +#: rcgcdw.py:294 +#, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Änderte Missbrauchsfilter {number}" -#: rcgcdw.py:287 +#: rcgcdw.py:297 +#, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Vereinigte Versionsgeschichten von {article} in {dest}" -#: rcgcdw.py:290 +#: rcgcdw.py:300 msgid "Added an entry to the interwiki table" msgstr "Fügte ein Interwiki-Präfix hinzu" -#: rcgcdw.py:291 rcgcdw.py:295 +#: rcgcdw.py:301 rcgcdw.py:305 +#, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Präfix: {prefix}, URL: {website} | {desc}" -#: rcgcdw.py:294 +#: rcgcdw.py:304 msgid "Edited an entry in interwiki table" msgstr "Änderte ein Interwiki-Präfix" -#: rcgcdw.py:298 +#: rcgcdw.py:308 msgid "Deleted an entry in interwiki table" msgstr "Entfernte ein Interwiki-Präfix" -#: rcgcdw.py:299 +#: rcgcdw.py:309 +#, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Präfix: {prefix} | {desc}" -#: rcgcdw.py:302 +#: rcgcdw.py:312 +#, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Änderte das Inhaltsmodell von {article}" -#: rcgcdw.py:303 +#: rcgcdw.py:313 +#, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Modell geändert von {old} zu {new}: {reason}" -#: rcgcdw.py:306 +#: rcgcdw.py:316 +#, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edited the sprite for {article}" -#: rcgcdw.py:309 +#: rcgcdw.py:319 +#, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Created the sprite sheet for {article}" -#: rcgcdw.py:312 +#: rcgcdw.py:322 +#, python-brace-format msgid "Edited the slice for {article}" msgstr "Edited the slice for {article}" -#: rcgcdw.py:315 +#: rcgcdw.py:325 +#, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Erstellte die Markierung \"{tag}\"" -#: rcgcdw.py:319 +#: rcgcdw.py:329 +#, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Löschte die Markierung \"{tag}\"" -#: rcgcdw.py:323 +#: rcgcdw.py:333 +#, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Aktivierte die Markierung \"{tag}\"" -#: rcgcdw.py:326 +#: rcgcdw.py:336 +#, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Deaktivierte die Markierung \"{tag}\"" -#: rcgcdw.py:347 +#: rcgcdw.py:357 msgid "Tags" msgstr "Markierungen" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "Unable to process the event" msgstr "Ereignis kann nicht verabreitet werden" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "error" msgstr "Fehler" -#: rcgcdw.py:549 +#: rcgcdw.py:560 msgid "Daily overview" msgstr "Tägliche Übersicht" -#: rcgcdw.py:565 -msgid " ({} actions)" -msgstr " ({} Aktionen)" +#: rcgcdw.py:576 +msgid " ({} action)" +msgid_plural "({} actions)" +msgstr[0] " (eine Aktion)" +msgstr[1] " ({} Aktionen)" -#: rcgcdw.py:566 -msgid " UTC ({} actions)" -msgstr " UTC ({} Aktionen)" +#: rcgcdw.py:577 +msgid " UTC ({} action)" +msgid_plural " UTC ({} actions)" +msgstr[0] " UTC (eine Aktion)" +msgstr[1] " UTC ({} Aktionen)" -#: rcgcdw.py:568 rcgcdw.py:569 +#: rcgcdw.py:579 rcgcdw.py:580 msgid "But nobody came" msgstr "Keine Aktivität" -#: rcgcdw.py:573 -msgid "Admin actions" -msgstr "Admin-Aktionen" +#: rcgcdw.py:584 +msgid "Most active user" +msgid_plural "Most active users" +msgstr[0] "Aktivster Benutzer" +msgstr[1] "Aktivste Benutzer" -#: rcgcdw.py:573 -msgid "Bytes changed" -msgstr "Bytes geändert" - -#: rcgcdw.py:573 -msgid "Day score" -msgstr "Tageswert" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "Edits made" msgstr "Bearbeitungen" -#: rcgcdw.py:573 -msgid "Most active hours" -msgstr "Aktivste Stunden" - -#: rcgcdw.py:573 -msgid "Most active users" -msgstr "Aktivste Benutzer" - -#: rcgcdw.py:573 -msgid "New articles" -msgstr "Neue Artikel" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "New files" msgstr "Neue Dateien" -#: rcgcdw.py:573 +#: rcgcdw.py:584 +msgid "Admin actions" +msgstr "Admin-Aktionen" + +#: rcgcdw.py:584 +msgid "Bytes changed" +msgstr "Bytes geändert" + +#: rcgcdw.py:584 +msgid "New articles" +msgstr "Neue Artikel" + +#: rcgcdw.py:584 msgid "Unique contributors" msgstr "Einzelne Autoren" -#: rcgcdw.py:662 +#: rcgcdw.py:584 +msgid "Most active hour" +msgid_plural "Most active hours" +msgstr[0] "Aktivste Stunde" +msgstr[1] "Aktivste Stunden" + +#: rcgcdw.py:584 +msgid "Day score" +msgstr "Tageswert" + +#: rcgcdw.py:674 +#, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "{wiki} scheint wieder erreichbar zu sein." -#: rcgcdw.py:662 rcgcdw.py:715 +#: rcgcdw.py:674 rcgcdw.py:729 msgid "Connection status" msgstr "Verbindungsstatus" -#: rcgcdw.py:715 +#: rcgcdw.py:729 +#, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "Das {wiki} scheint unerreichbar zu sein." -#: rcgcdw.py:737 -msgid "{wiki} is back up!" -msgstr "Das {wiki} ist wieder erreichbar." +#: rcgcdw.py:751 +msgid "director" +msgstr "Direktor" + +#: rcgcdw.py:751 +msgid "bot" +msgstr "Bot" + +#: rcgcdw.py:751 +msgid "editor" +msgstr "editor" + +#: rcgcdw.py:751 +msgid "directors" +msgstr "Direktor" + +#: rcgcdw.py:751 +msgid "sysop" +msgstr "Administrator" + +#: rcgcdw.py:751 +msgid "bureaucrat" +msgstr "Bürokrat" + +#: rcgcdw.py:751 +msgid "reviewer" +msgstr "reviewer" + +#: rcgcdw.py:751 +msgid "autoreview" +msgstr "autoreview" + +#: rcgcdw.py:751 +msgid "autopatrol" +msgstr "autopatrol" + +#: rcgcdw.py:751 +msgid "wiki_guardian" +msgstr "Wiki Guardian" + +#~ msgid "{wiki} is back up!" +#~ msgstr "Das {wiki} ist wieder erreichbar." diff --git a/locale/en/LC_MESSAGES/rcgcdw.mo b/locale/en/LC_MESSAGES/rcgcdw.mo new file mode 100644 index 0000000..fc2b2e4 Binary files /dev/null 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 new file mode 100644 index 0000000..4ad873c --- /dev/null +++ b/locale/en/LC_MESSAGES/rcgcdw.po @@ -0,0 +1,466 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: \n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-12 11:29+0200\n" +"PO-Revision-Date: 2018-07-12 12:20+0200\n" +"Last-Translator: Frisk \n" +"Language-Team: \n" +"Language: en\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Generated-By: pygettext.py 1.5\n" +"X-Generator: Poedit 2.0.8\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#: rcgcdw.py:124 +msgid "(N!) " +msgstr "(N!) " + +#: rcgcdw.py:124 +msgid "m " +msgstr "m " + +#: rcgcdw.py:142 rcgcdw.py:168 +msgid "Options" +msgstr "Options" + +#: rcgcdw.py:142 +#, python-brace-format +msgid "([preview]({link}) | [undo]({undolink}))" +msgstr "([preview]({link}) | [undo]({undolink}))" + +#: rcgcdw.py:143 +#, python-brace-format +msgid "Uploaded a new version of {name}" +msgstr "Uploaded a new version of {name}" + +#: rcgcdw.py:145 +#, python-brace-format +msgid "Uploaded {name}" +msgstr "Uploaded {name}" + +#: rcgcdw.py:158 +msgid "**No license!**" +msgstr "**No license!**" + +#: rcgcdw.py:168 +#, python-brace-format +msgid "([preview]({link}))" +msgstr "([preview]({link}))" + +#: rcgcdw.py:169 +#, python-brace-format +msgid "" +"{desc}\n" +"License: {license}" +msgstr "" +"{desc}\n" +"License: {license}" + +#: rcgcdw.py:172 +#, python-brace-format +msgid "Deleted page {article}" +msgstr "Deleted page {article}" + +#: rcgcdw.py:175 +#, python-brace-format +msgid "Deleted redirect {article} by overwriting" +msgstr "Deleted redirect {article} by overwriting" + +#: rcgcdw.py:178 +msgid "No redirect has been made" +msgstr "No redirect has been made" + +#: rcgcdw.py:178 +msgid "A redirect has been made" +msgstr "A redirect has been made" + +#: rcgcdw.py:179 +#, python-brace-format +msgid "Moved {article} to {target}" +msgstr "Moved {article} to {target}" + +#: rcgcdw.py:182 +#, python-brace-format +msgid "Moved {article} to {title} over redirect" +msgstr "Moved {article} to {title} over redirect" + +#: rcgcdw.py:185 +#, python-brace-format +msgid "Moved protection settings from {article} to {title}" +msgstr "Moved protection settings from {article} to {title}" + +#: rcgcdw.py:189 +msgid "infinity and beyond" +msgstr "infinity and beyond" + +#: rcgcdw.py:190 +#, python-brace-format +msgid "Blocked {blocked_user} for {time}" +msgstr "Blocked {blocked_user} for {time}" + +#: rcgcdw.py:194 +#, python-brace-format +msgid "Changed block settings for {blocked_user}" +msgstr "Changed block settings for {blocked_user}" + +#: rcgcdw.py:198 +#, python-brace-format +msgid "Unblocked {blocked_user}" +msgstr "Unblocked {blocked_user}" + +#: rcgcdw.py:202 +#, python-brace-format +msgid "Left a comment on {target}'s profile" +msgstr "Left a comment on {target}'s profile" + +#: rcgcdw.py:206 +#, python-brace-format +msgid "Replied to a comment on {target}'s profile" +msgstr "Replied to a comment on {target}'s profile" + +#: rcgcdw.py:210 +#, python-brace-format +msgid "Edited a comment on {target}'s profile" +msgstr "Edited a comment on {target}'s profile" + +#: rcgcdw.py:214 +msgid "Location" +msgstr "Location" + +#: rcgcdw.py:216 +msgid "About me" +msgstr "About me" + +#: rcgcdw.py:218 +msgid "Google link" +msgstr "Google link" + +#: rcgcdw.py:220 +msgid "Facebook link" +msgstr "Facebook link" + +#: rcgcdw.py:222 +msgid "Twitter link" +msgstr "Twitter link" + +#: rcgcdw.py:224 +msgid "Reddit link" +msgstr "Reddit link" + +#: rcgcdw.py:226 +msgid "Twitch link" +msgstr "Twitch link" + +#: rcgcdw.py:228 +msgid "PSN link" +msgstr "PSN link" + +#: rcgcdw.py:230 +msgid "VK link" +msgstr "VK link" + +#: rcgcdw.py:232 +msgid "XVL link" +msgstr "XVL link" + +#: rcgcdw.py:234 +msgid "Steam link" +msgstr "Steam link" + +#: rcgcdw.py:236 +msgid "Unknown" +msgstr "Unknown" + +#: rcgcdw.py:237 +#, python-brace-format +msgid "Edited {target}'s profile" +msgstr "Edited {target}'s profile" + +#: rcgcdw.py:238 +#, python-brace-format +msgid "{field} field changed to: {desc}" +msgstr "{field} field changed to: {desc}" + +#: rcgcdw.py:242 +#, python-brace-format +msgid "Deleted a comment on {target}'s profile" +msgstr "Deleted a comment on {target}'s profile" + +#: rcgcdw.py:246 +#, python-brace-format +msgid "Changed group membership for {target}" +msgstr "Changed group membership for {target}" + +#: rcgcdw.py:248 +msgid "System" +msgstr "System" + +#: rcgcdw.py:250 +#, python-brace-format +msgid "{target} got autopromoted to a new usergroup" +msgstr "{target} got autopromoted to a new usergroup" + +#: rcgcdw.py:260 rcgcdw.py:262 +msgid "none" +msgstr "none" + +#: rcgcdw.py:263 rcgcdw.py:385 +msgid "No description provided" +msgstr "No description provided" + +#: rcgcdw.py:264 +#, 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:267 +#, python-brace-format +msgid "Protected {target}" +msgstr "Protected {target}" + +#: rcgcdw.py:271 +#, python-brace-format +msgid "Changed protection level for {article}" +msgstr "Changed protection level for {article}" + +#: rcgcdw.py:275 +#, python-brace-format +msgid "Removed protection from {article}" +msgstr "Removed protection from {article}" + +#: rcgcdw.py:279 +#, 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:282 +#, 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:285 +#, python-brace-format +msgid "Restored {article}" +msgstr "Restored {article}" + +#: rcgcdw.py:288 +msgid "Changed visibility of log events" +msgstr "Changed visibility of log events" + +#: rcgcdw.py:291 +msgid "Imported interwiki" +msgstr "Imported interwiki" + +#: rcgcdw.py:294 +#, python-brace-format +msgid "Edited abuse filter number {number}" +msgstr "Edited abuse filter number {number}" + +#: rcgcdw.py:297 +#, python-brace-format +msgid "Merged revision histories of {article} into {dest}" +msgstr "Merged revision histories of {article} into {dest}" + +#: rcgcdw.py:300 +msgid "Added an entry to the interwiki table" +msgstr "Added an entry to the interwiki table" + +#: rcgcdw.py:301 rcgcdw.py:305 +#, python-brace-format +msgid "Prefix: {prefix}, website: {website} | {desc}" +msgstr "Prefix: {prefix}, website: {website} | {desc}" + +#: rcgcdw.py:304 +msgid "Edited an entry in interwiki table" +msgstr "Edited an entry in interwiki table" + +#: rcgcdw.py:308 +msgid "Deleted an entry in interwiki table" +msgstr "Deleted an entry in interwiki table" + +#: rcgcdw.py:309 +#, python-brace-format +msgid "Prefix: {prefix} | {desc}" +msgstr "Prefix: {prefix} | {desc}" + +#: rcgcdw.py:312 +#, python-brace-format +msgid "Changed the content model of the page {article}" +msgstr "Changed the content model of the page {article}" + +#: rcgcdw.py:313 +#, python-brace-format +msgid "Model changed from {old} to {new}: {reason}" +msgstr "Model changed from {old} to {new}: {reason}" + +#: rcgcdw.py:316 +#, python-brace-format +msgid "Edited the sprite for {article}" +msgstr "Edited the sprite for {article}" + +#: rcgcdw.py:319 +#, python-brace-format +msgid "Created the sprite sheet for {article}" +msgstr "Created the sprite sheet for {article}" + +#: rcgcdw.py:322 +#, python-brace-format +msgid "Edited the slice for {article}" +msgstr "Edited the slice for {article}" + +#: rcgcdw.py:325 +#, python-brace-format +msgid "Created a tag \"{tag}\"" +msgstr "Created a tag \"{tag}\"" + +#: rcgcdw.py:329 +#, python-brace-format +msgid "Deleted a tag \"{tag}\"" +msgstr "Deleted a tag \"{tag}\"" + +#: rcgcdw.py:333 +#, python-brace-format +msgid "Activated a tag \"{tag}\"" +msgstr "Activated a tag \"{tag}\"" + +#: rcgcdw.py:336 +#, python-brace-format +msgid "Deactivated a tag \"{tag}\"" +msgstr "Deactivated a tag \"{tag}\"" + +#: rcgcdw.py:357 +msgid "Tags" +msgstr "Tags" + +#: rcgcdw.py:480 +msgid "Unable to process the event" +msgstr "Unable to process the event" + +#: rcgcdw.py:480 +msgid "error" +msgstr "error" + +#: rcgcdw.py:560 +msgid "Daily overview" +msgstr "Daily overview" + +#: rcgcdw.py:576 +msgid " ({} action)" +msgid_plural "({} actions)" +msgstr[0] " ({} action)" +msgstr[1] " ({} actions)" + +#: rcgcdw.py:577 +msgid " UTC ({} action)" +msgid_plural " UTC ({} actions)" +msgstr[0] " UTC ({} action)" +msgstr[1] " UTC ({} actions)" + +#: rcgcdw.py:579 rcgcdw.py:580 +msgid "But nobody came" +msgstr "But nobody came" + +#: rcgcdw.py:584 +msgid "Most active user" +msgid_plural "Most active users" +msgstr[0] "Most active user" +msgstr[1] "Most active users" + +#: rcgcdw.py:584 +msgid "Edits made" +msgstr "Edits made" + +#: rcgcdw.py:584 +msgid "New files" +msgstr "New files" + +#: rcgcdw.py:584 +msgid "Admin actions" +msgstr "Admin actions" + +#: rcgcdw.py:584 +msgid "Bytes changed" +msgstr "Bytes changed" + +#: rcgcdw.py:584 +msgid "New articles" +msgstr "New articles" + +#: rcgcdw.py:584 +msgid "Unique contributors" +msgstr "Unique contributors" + +#: rcgcdw.py:584 +msgid "Most active hour" +msgid_plural "Most active hours" +msgstr[0] "Most active hour" +msgstr[1] "Most active hours" + +#: rcgcdw.py:584 +msgid "Day score" +msgstr "Day score" + +#: rcgcdw.py:674 +#, python-brace-format +msgid "Connection to {wiki} seems to be stable now." +msgstr "Connection to {wiki} seems to be stable now." + +#: rcgcdw.py:674 rcgcdw.py:729 +msgid "Connection status" +msgstr "Connection status" + +#: rcgcdw.py:729 +#, python-brace-format +msgid "{wiki} seems to be down or unreachable." +msgstr "{wiki} seems to be down or unreachable." + +#: rcgcdw.py:751 +msgid "director" +msgstr "Director" + +#: rcgcdw.py:751 +msgid "bot" +msgstr "Bot" + +#: rcgcdw.py:751 +msgid "editor" +msgstr "Editor" + +#: rcgcdw.py:751 +msgid "directors" +msgstr "Directors" + +#: rcgcdw.py:751 +msgid "sysop" +msgstr "Administrator" + +#: rcgcdw.py:751 +msgid "bureaucrat" +msgstr "Bureaucrat" + +#: rcgcdw.py:751 +msgid "reviewer" +msgstr "Reviewer" + +#: rcgcdw.py:751 +msgid "autoreview" +msgstr "Autoreview" + +#: rcgcdw.py:751 +msgid "autopatrol" +msgstr "Autopatrol" + +#: rcgcdw.py:751 +msgid "wiki_guardian" +msgstr "Wiki guardian" diff --git a/locale/fr/LC_MESSAGES/rcgcdw.mo b/locale/fr/LC_MESSAGES/rcgcdw.mo index 785353c..f492b2b 100644 Binary files a/locale/fr/LC_MESSAGES/rcgcdw.mo and b/locale/fr/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/fr/LC_MESSAGES/rcgcdw.po b/locale/fr/LC_MESSAGES/rcgcdw.po index c556bb8..447fe96 100644 --- a/locale/fr/LC_MESSAGES/rcgcdw.po +++ b/locale/fr/LC_MESSAGES/rcgcdw.po @@ -5,8 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: \n" -"POT-Creation-Date: 2018-07-05 20:21+0200\n" -"PO-Revision-Date: 2018-07-06 10:44+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-12 11:29+0200\n" +"PO-Revision-Date: 2018-07-12 18:41+0200\n" "Last-Translator: JSBM\n" "Language-Team: \n" "Language: fr\n" @@ -19,39 +20,44 @@ msgstr "" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Poedit-SearchPath-0: rcgcdw.pot\n" -#: rcgcdw.py:126 +#: rcgcdw.py:124 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:126 +#: rcgcdw.py:124 msgid "m " msgstr "m " -#: rcgcdw.py:144 -msgid "([preview]({link}) | [undo]({undolink}))" -msgstr "([Aperçu]({link}) | [Annuler]({undolink}))" - -#: rcgcdw.py:144 rcgcdw.py:170 +#: rcgcdw.py:142 rcgcdw.py:168 msgid "Options" msgstr "Options" -#: rcgcdw.py:145 +#: rcgcdw.py:142 +#, python-brace-format +msgid "([preview]({link}) | [undo]({undolink}))" +msgstr "([Aperçu]({link}) | [Annuler]({undolink}))" + +#: rcgcdw.py:143 +#, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Téléversement d'une nouvelle version de {name}" -#: rcgcdw.py:147 +#: rcgcdw.py:145 +#, python-brace-format msgid "Uploaded {name}" msgstr "Téléversement de {name}" -#: rcgcdw.py:160 +#: rcgcdw.py:158 msgid "**No license!**" msgstr "**Aucune license!**" -#: rcgcdw.py:170 +#: rcgcdw.py:168 +#, python-brace-format msgid "([preview]({link}))" msgstr "([Aperçu]({link}))" -#: rcgcdw.py:171 +#: rcgcdw.py:169 +#, python-brace-format msgid "" "{desc}\n" "License: {license}" @@ -59,310 +65,407 @@ msgstr "" "{desc}\n" "License: {license}" -#: rcgcdw.py:174 +#: rcgcdw.py:172 +#, python-brace-format msgid "Deleted page {article}" msgstr "Suppression de la page {article}" -#: rcgcdw.py:177 +#: rcgcdw.py:175 +#, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Suppression par écrasement de la redirection {article}" -#: rcgcdw.py:180 -msgid "A redirect has been made" -msgstr "Une redirection a été créée" - -#: rcgcdw.py:180 +#: rcgcdw.py:178 msgid "No redirect has been made" msgstr "Aucune redirection créée" -#: rcgcdw.py:181 +#: rcgcdw.py:178 +msgid "A redirect has been made" +msgstr "Une redirection a été créée" + +#: rcgcdw.py:179 +#, python-brace-format msgid "Moved {article} to {target}" msgstr "Déplacement de {article} vers {target}" -#: rcgcdw.py:184 +#: rcgcdw.py:182 +#, python-brace-format msgid "Moved {article} to {title} over redirect" msgstr "Déplacement de {article} vers {title} par redirection" -#: rcgcdw.py:187 +#: rcgcdw.py:185 +#, python-brace-format msgid "Moved protection settings from {article} to {title}" msgstr "Transfert des paramètres de protection de {article} vers {title}" -#: rcgcdw.py:191 +#: rcgcdw.py:189 msgid "infinity and beyond" msgstr "toujours" -#: rcgcdw.py:192 +#: rcgcdw.py:190 +#, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "{blocked_user} a été bloqué pour {time}" -#: rcgcdw.py:196 +#: rcgcdw.py:194 +#, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Modification des paramètres de blocage pour {blocked_user}" -#: rcgcdw.py:200 +#: rcgcdw.py:198 +#, python-brace-format msgid "Unblocked {blocked_user}" msgstr "{blocked_user} a été débloqué" -#: rcgcdw.py:204 +#: rcgcdw.py:202 +#, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Ajout d'un commentaire sur le profil de {target}" -#: rcgcdw.py:208 +#: rcgcdw.py:206 +#, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Réponse à un commentaire sur le profil de {target}" -#: rcgcdw.py:212 +#: rcgcdw.py:210 +#, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Édition d'un commentaire sur le profil de {target}" -#: rcgcdw.py:216 +#: rcgcdw.py:214 msgid "Location" msgstr "Emplacement" -#: rcgcdw.py:218 +#: rcgcdw.py:216 msgid "About me" msgstr "À propos de moi" -#: rcgcdw.py:220 +#: rcgcdw.py:218 msgid "Google link" msgstr "Lien Google" -#: rcgcdw.py:222 +#: rcgcdw.py:220 msgid "Facebook link" msgstr "Lien Facebook" -#: rcgcdw.py:224 +#: rcgcdw.py:222 msgid "Twitter link" msgstr "Lien Twitter" -#: rcgcdw.py:226 +#: rcgcdw.py:224 msgid "Reddit link" msgstr "Lien Reddit" -#: rcgcdw.py:228 +#: rcgcdw.py:226 msgid "Twitch link" msgstr "Lien Twitch" -#: rcgcdw.py:230 +#: rcgcdw.py:228 msgid "PSN link" msgstr "Lien PSN" -#: rcgcdw.py:232 +#: rcgcdw.py:230 msgid "VK link" msgstr "Lien VK" -#: rcgcdw.py:234 +#: rcgcdw.py:232 msgid "XVL link" msgstr "Lien XVL" -#: rcgcdw.py:236 +#: rcgcdw.py:234 msgid "Steam link" msgstr "Lien Steam" -#: rcgcdw.py:238 +#: rcgcdw.py:236 msgid "Unknown" msgstr "Inconnu" -#: rcgcdw.py:239 +#: rcgcdw.py:237 +#, python-brace-format msgid "Edited {target}'s profile" msgstr "Modification du profil de {target}" -#: rcgcdw.py:240 +#: rcgcdw.py:238 +#, python-brace-format msgid "{field} field changed to: {desc}" msgstr "{field} modifié pour: {desc}" -#: rcgcdw.py:244 +#: rcgcdw.py:242 +#, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Retrait d'un commentaire sur le profil de {target}" -#: rcgcdw.py:247 +#: rcgcdw.py:246 +#, python-brace-format msgid "Changed group membership for {target}" msgstr "Modification des groupes pour {target}" -#: rcgcdw.py:251 rcgcdw.py:253 +#: rcgcdw.py:248 +msgid "System" +msgstr "Système" + +#: rcgcdw.py:250 +#, python-brace-format +msgid "{target} got autopromoted to a new usergroup" +msgstr "{target} a été auto-promu dans un nouveau groupe" + +#: rcgcdw.py:260 rcgcdw.py:262 msgid "none" msgstr "aucun" -#: rcgcdw.py:254 rcgcdw.py:376 +#: rcgcdw.py:263 rcgcdw.py:385 msgid "No description provided" msgstr "Aucune description" -#: rcgcdw.py:255 +#: rcgcdw.py:264 +#, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "Groupe modifié de {old_groups} vers {new_groups}{reason}" -#: rcgcdw.py:258 +#: rcgcdw.py:267 +#, python-brace-format msgid "Protected {target}" msgstr "Protection de {target}" -#: rcgcdw.py:262 +#: rcgcdw.py:271 +#, python-brace-format msgid "Changed protection level for {article}" msgstr "Modification du niveau de protection de {article}" -#: rcgcdw.py:266 +#: rcgcdw.py:275 +#, python-brace-format msgid "Removed protection from {article}" msgstr "Retrait de la protection de {article}" -#: rcgcdw.py:269 -msgid "Changed visibility of revision(s) on page {article} " -msgstr "Modification de la visibilité de révision(s) sur la page {article} " +#: rcgcdw.py:279 +#, python-brace-format +msgid "Changed visibility of revision on page {article} " +msgid_plural "Changed visibility of {amount} revisions on page {article} " +msgstr[0] "Modification de la visibilité d'une révision de la page {article} " +msgstr[1] "Modification de la visibilité de {amount} révisions sur la page {article} " -#: rcgcdw.py:272 -msgid "Imported {article} with {count} revision(s)" -msgstr "Article {article} importé avec {count} révision(s)" +#: rcgcdw.py:282 +#, python-brace-format +msgid "Imported {article} with {count} revision" +msgid_plural "Imported {article} with {count} revisions" +msgstr[0] "Article {article} importé avec {count} révision" +msgstr[1] "Article {article} importé avec {count} révisions" -#: rcgcdw.py:275 +#: rcgcdw.py:285 +#, python-brace-format msgid "Restored {article}" msgstr "Restauration de {article}" -#: rcgcdw.py:278 +#: rcgcdw.py:288 msgid "Changed visibility of log events" msgstr "Modification de la visibilité d'évènements des journaux" -#: rcgcdw.py:281 +#: rcgcdw.py:291 msgid "Imported interwiki" msgstr "Importation d'interwiki" -#: rcgcdw.py:284 +#: rcgcdw.py:294 +#, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Édition de la règle {number} du filtre anti-abus" -#: rcgcdw.py:287 +#: rcgcdw.py:297 +#, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Fusion de l'historique de {article} vers {dest}" -#: rcgcdw.py:290 +#: rcgcdw.py:300 msgid "Added an entry to the interwiki table" msgstr "Ajout d'une entrée à la table interwiki" -#: rcgcdw.py:291 rcgcdw.py:295 +#: rcgcdw.py:301 rcgcdw.py:305 +#, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Préfixe: {prefix}, site: {website} | {desc}" -#: rcgcdw.py:294 +#: rcgcdw.py:304 msgid "Edited an entry in interwiki table" msgstr "Modification d'une entrée de la table interwiki" -#: rcgcdw.py:298 +#: rcgcdw.py:308 msgid "Deleted an entry in interwiki table" msgstr "Retrait d'une entrée de la table interwiki" -#: rcgcdw.py:299 +#: rcgcdw.py:309 +#, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Préfixe: {prefix} | {desc}" -#: rcgcdw.py:302 +#: rcgcdw.py:312 +#, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Modification du modèle de contenu de l'article {article}" -#: rcgcdw.py:303 +#: rcgcdw.py:313 +#, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Modèle changé de {old} à {new}: {reason}" -#: rcgcdw.py:306 +#: rcgcdw.py:316 +#, python-brace-format msgid "Edited the sprite for {article}" msgstr "Édition du sprite de {article}" -#: rcgcdw.py:309 +#: rcgcdw.py:319 +#, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Création d'une feuille de sprite pour {article}" -#: rcgcdw.py:312 +#: rcgcdw.py:322 +#, python-brace-format msgid "Edited the slice for {article}" msgstr "Edited the slice for {article}" -#: rcgcdw.py:315 +#: rcgcdw.py:325 +#, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Création du tag « {tag} »" -#: rcgcdw.py:319 +#: rcgcdw.py:329 +#, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Suppression du tag « {tag} »" -#: rcgcdw.py:323 +#: rcgcdw.py:333 +#, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Activation du tag « {tag} »" -#: rcgcdw.py:326 +#: rcgcdw.py:336 +#, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Désactivation du tag « {tag} »" -#: rcgcdw.py:347 +#: rcgcdw.py:357 msgid "Tags" msgstr "Tags" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "Unable to process the event" msgstr "Impossible d'analyser l'évènement" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "error" msgstr "erreur" -#: rcgcdw.py:549 +#: rcgcdw.py:560 msgid "Daily overview" msgstr "Résumé de la journée" -#: rcgcdw.py:565 -msgid " ({} actions)" -msgstr " ({} actions)" +#: rcgcdw.py:576 +msgid " ({} action)" +msgid_plural "({} actions)" +msgstr[0] " ({} action)" +msgstr[1] " ({} actions)" -#: rcgcdw.py:566 -msgid " UTC ({} actions)" -msgstr " UTC ({} actions)" +#: rcgcdw.py:577 +msgid " UTC ({} action)" +msgid_plural " UTC ({} actions)" +msgstr[0] " UTC ({} action)" +msgstr[1] " UTC ({} actions)" -#: rcgcdw.py:568 rcgcdw.py:569 +#: rcgcdw.py:579 rcgcdw.py:580 msgid "But nobody came" msgstr "Aucune activité" -#: rcgcdw.py:573 -msgid "Admin actions" -msgstr "Actions d'administrateur" +#: rcgcdw.py:584 +msgid "Most active user" +msgid_plural "Most active users" +msgstr[0] "Membre le plus actif" +msgstr[1] "Membres les plus actifs" -#: rcgcdw.py:573 -msgid "Bytes changed" -msgstr "Octets modifiés" - -#: rcgcdw.py:573 -msgid "Day score" -msgstr "Score du jour" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "Edits made" msgstr "Modifications effectuées" -#: rcgcdw.py:573 -msgid "Most active hours" -msgstr "Heures les plus actives" - -#: rcgcdw.py:573 -msgid "Most active users" -msgstr "Membres les plus actifs" - -#: rcgcdw.py:573 -msgid "New articles" -msgstr "Nouveaux articles" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "New files" msgstr "Nouveaux fichiers" -#: rcgcdw.py:573 +#: rcgcdw.py:584 +msgid "Admin actions" +msgstr "Actions d'administrateur" + +#: rcgcdw.py:584 +msgid "Bytes changed" +msgstr "Octets modifiés" + +#: rcgcdw.py:584 +msgid "New articles" +msgstr "Nouveaux articles" + +#: rcgcdw.py:584 msgid "Unique contributors" msgstr "Contributeurs uniques" -#: rcgcdw.py:662 +#: rcgcdw.py:584 +msgid "Most active hour" +msgid_plural "Most active hours" +msgstr[0] "Heure la plus active" +msgstr[1] "Heures les plus actives" + +#: rcgcdw.py:584 +msgid "Day score" +msgstr "Score du jour" + +#: rcgcdw.py:674 +#, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "La connexion avec {wiki} semble stable maintenant." -#: rcgcdw.py:662 rcgcdw.py:715 +#: rcgcdw.py:674 rcgcdw.py:729 msgid "Connection status" msgstr "Statut de connexion" -#: rcgcdw.py:715 +#: rcgcdw.py:729 +#, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} semble être down ou inatteignable." -#: rcgcdw.py:737 -msgid "{wiki} is back up!" -msgstr "{wiki} est de retour!" +#: rcgcdw.py:751 +msgid "director" +msgstr "Directeur" + +#: rcgcdw.py:751 +msgid "bot" +msgstr "Robot" + +#: rcgcdw.py:751 +msgid "editor" +msgstr "editor" + +#: rcgcdw.py:751 +msgid "directors" +msgstr "Directeur" + +#: rcgcdw.py:751 +msgid "sysop" +msgstr "Administrateur" + +#: rcgcdw.py:751 +msgid "bureaucrat" +msgstr "Bureaucrate" + +#: rcgcdw.py:751 +msgid "reviewer" +msgstr "reviewer" + +#: rcgcdw.py:751 +msgid "autoreview" +msgstr "autoreview" + +#: rcgcdw.py:751 +msgid "autopatrol" +msgstr "autopatrol" + +#: rcgcdw.py:751 +msgid "wiki_guardian" +msgstr "Gardien du wiki" + +#~ msgid "{wiki} is back up!" +#~ msgstr "{wiki} est de retour!" diff --git a/locale/pl/LC_MESSAGES/rcgcdw.mo b/locale/pl/LC_MESSAGES/rcgcdw.mo index f64f3b8..b469ff8 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 6ccc2f6..43235ca 100644 --- a/locale/pl/LC_MESSAGES/rcgcdw.po +++ b/locale/pl/LC_MESSAGES/rcgcdw.po @@ -5,8 +5,9 @@ msgid "" msgstr "" "Project-Id-Version: RcGcDw\n" -"POT-Creation-Date: 2018-07-05 20:21+0200\n" -"PO-Revision-Date: 2018-07-05 20:22+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-12 11:29+0200\n" +"PO-Revision-Date: 2018-07-12 12:34+0200\n" "Last-Translator: Frisk \n" "Language-Team: \n" "Language: pl\n" @@ -18,39 +19,44 @@ 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:126 +#: rcgcdw.py:124 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:126 +#: rcgcdw.py:124 msgid "m " msgstr "d " -#: rcgcdw.py:144 -msgid "([preview]({link}) | [undo]({undolink}))" -msgstr "([podgląd]({link}) | [wycofaj]({undolink}))" - -#: rcgcdw.py:144 rcgcdw.py:170 +#: rcgcdw.py:142 rcgcdw.py:168 msgid "Options" msgstr "Opcje" -#: rcgcdw.py:145 +#: rcgcdw.py:142 +#, python-brace-format +msgid "([preview]({link}) | [undo]({undolink}))" +msgstr "([podgląd]({link}) | [wycofaj]({undolink}))" + +#: rcgcdw.py:143 +#, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Przesłał(a) nową wersję {name}" -#: rcgcdw.py:147 +#: rcgcdw.py:145 +#, python-brace-format msgid "Uploaded {name}" msgstr "Przesłał(a) {name}" -#: rcgcdw.py:160 +#: rcgcdw.py:158 msgid "**No license!**" msgstr "**Brak licencji!**" -#: rcgcdw.py:170 +#: rcgcdw.py:168 +#, python-brace-format msgid "([preview]({link}))" msgstr "([podgląd]({link}))" -#: rcgcdw.py:171 +#: rcgcdw.py:169 +#, python-brace-format msgid "" "{desc}\n" "License: {license}" @@ -58,315 +64,418 @@ msgstr "" "{desc}\n" "Licencja: {license}" -#: rcgcdw.py:174 +#: rcgcdw.py:172 +#, python-brace-format msgid "Deleted page {article}" msgstr "Usunął/usunęła {article}" -#: rcgcdw.py:177 +#: rcgcdw.py:175 +#, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "" "Usunął/usunęła przekierowanie ({article}) aby utworzyć miejsce dla " "przenoszonej strony" -#: rcgcdw.py:180 -msgid "A redirect has been made" -msgstr "Zostało utworzone przekierowanie" - -#: rcgcdw.py:180 +#: rcgcdw.py:178 msgid "No redirect has been made" msgstr "Nie utworzono przekierowania" -#: rcgcdw.py:181 +#: rcgcdw.py:178 +msgid "A redirect has been made" +msgstr "Zostało utworzone przekierowanie" + +#: rcgcdw.py:179 +#, python-brace-format msgid "Moved {article} to {target}" msgstr "Przeniósł/przeniosła {article} do {target}" -#: rcgcdw.py:184 +#: rcgcdw.py:182 +#, python-brace-format msgid "Moved {article} to {title} over redirect" -msgstr "Przeniósł/przeniosła {article} do strony przekierowującej {target}" +msgstr "Przeniósł/przeniosła {article} do strony przekierowującej {title}" -#: rcgcdw.py:187 +#: rcgcdw.py:185 +#, python-brace-format msgid "Moved protection settings from {article} to {title}" msgstr "Przeniesiono ustawienia zabezpieczeń z {article} do {title}" -#: rcgcdw.py:191 +#: rcgcdw.py:189 msgid "infinity and beyond" msgstr "wieczność" -#: rcgcdw.py:192 +#: rcgcdw.py:190 +#, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Zablokowano {blocked_user} na {time}" -#: rcgcdw.py:196 +#: rcgcdw.py:194 +#, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Zmienił ustawienia blokady {blocked_user}" -#: rcgcdw.py:200 +#: rcgcdw.py:198 +#, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Odblokował {blocked_user}" -#: rcgcdw.py:204 +#: rcgcdw.py:202 +#, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Pozostawiono komentarz na profilu użytkownika {target}" -#: rcgcdw.py:208 +#: rcgcdw.py:206 +#, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Odpowiedziano na komentarz na profilu użytkownika {target}" -#: rcgcdw.py:212 +#: rcgcdw.py:210 +#, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Edytowano komentarz na profilu użytkownika {target}" -#: rcgcdw.py:216 +#: rcgcdw.py:214 msgid "Location" msgstr "Lokacja" -#: rcgcdw.py:218 +#: rcgcdw.py:216 msgid "About me" msgstr "O mnie" -#: rcgcdw.py:220 +#: rcgcdw.py:218 msgid "Google link" msgstr "link Google" -#: rcgcdw.py:222 +#: rcgcdw.py:220 msgid "Facebook link" msgstr "link Facebook" -#: rcgcdw.py:224 +#: rcgcdw.py:222 msgid "Twitter link" msgstr "link Twitter" -#: rcgcdw.py:226 +#: rcgcdw.py:224 msgid "Reddit link" msgstr "link Reddit" -#: rcgcdw.py:228 +#: rcgcdw.py:226 msgid "Twitch link" msgstr "link Twitch" -#: rcgcdw.py:230 +#: rcgcdw.py:228 msgid "PSN link" msgstr "link PSN" -#: rcgcdw.py:232 +#: rcgcdw.py:230 msgid "VK link" msgstr "link VK" -#: rcgcdw.py:234 +#: rcgcdw.py:232 msgid "XVL link" msgstr "link XVL" -#: rcgcdw.py:236 +#: rcgcdw.py:234 msgid "Steam link" msgstr "link Steam" -#: rcgcdw.py:238 +#: rcgcdw.py:236 msgid "Unknown" msgstr "Nieznana" -#: rcgcdw.py:239 +#: rcgcdw.py:237 +#, python-brace-format msgid "Edited {target}'s profile" msgstr "Edytowano profil użytkownika {target}" -#: rcgcdw.py:240 +#: rcgcdw.py:238 +#, python-brace-format msgid "{field} field changed to: {desc}" msgstr "pole {field} zostało zmienione na: {desc}" -#: rcgcdw.py:244 +#: rcgcdw.py:242 +#, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Usunął komentarz na profilu użytkownika {target}" -#: rcgcdw.py:247 +#: rcgcdw.py:246 +#, python-brace-format msgid "Changed group membership for {target}" msgstr "Zmieniono przynależność do grup dla {target}" -#: rcgcdw.py:251 rcgcdw.py:253 +#: rcgcdw.py:248 +msgid "System" +msgstr "System" + +#: rcgcdw.py:250 +#, python-brace-format +msgid "{target} got autopromoted to a new usergroup" +msgstr "{target} automatycznie otrzymał nową grupę użytkownika" + +#: rcgcdw.py:260 rcgcdw.py:262 msgid "none" msgstr "brak" -#: rcgcdw.py:254 rcgcdw.py:376 +#: rcgcdw.py:263 rcgcdw.py:385 msgid "No description provided" msgstr "Nie podano opisu zmian" -#: rcgcdw.py:255 +#: rcgcdw.py:264 +#, 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:258 +#: rcgcdw.py:267 +#, python-brace-format msgid "Protected {target}" msgstr "Zabezpieczono {target}" -#: rcgcdw.py:262 +#: rcgcdw.py:271 +#, python-brace-format msgid "Changed protection level for {article}" msgstr "Zmieniono poziom zabezpieczeń {article}" -#: rcgcdw.py:266 +#: rcgcdw.py:275 +#, python-brace-format msgid "Removed protection from {article}" msgstr "Usunięto zabezpieczenie {article}" -#: rcgcdw.py:269 -msgid "Changed visibility of revision(s) on page {article} " -msgstr "Zmieniono widoczność wersji na stroni {article}" +#: rcgcdw.py:279 +#, 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}" -#: rcgcdw.py:272 -msgid "Imported {article} with {count} revision(s)" -msgstr "Zaimportowano {article} z {count} wersjami" +#: rcgcdw.py:282 +#, python-brace-format +msgid "Imported {article} with {count} revision" +msgid_plural "Imported {article} with {count} revisions" +msgstr[0] "Zaimportowano {article} z {count} wersją" +msgstr[1] "Zaimportowano {article} z {count} wersjami" +msgstr[2] "Zaimportowano {article} z {count} wersjami" -#: rcgcdw.py:275 +#: rcgcdw.py:285 +#, python-brace-format msgid "Restored {article}" -msgstr "Przywrócono {article)" +msgstr "Przywrócono {article}" -#: rcgcdw.py:278 +#: rcgcdw.py:288 msgid "Changed visibility of log events" msgstr "Zmieniono widoczność logów" -#: rcgcdw.py:281 +#: rcgcdw.py:291 msgid "Imported interwiki" msgstr "Zaimportowano interwiki" -#: rcgcdw.py:284 +#: rcgcdw.py:294 +#, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Edytowano filtr nadużyć numer {number}" -#: rcgcdw.py:287 +#: rcgcdw.py:297 +#, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Połączono historie {article} z {dest}" -#: rcgcdw.py:290 +#: rcgcdw.py:300 msgid "Added an entry to the interwiki table" msgstr "Dodano wpis do tabeli interwiki" -#: rcgcdw.py:291 rcgcdw.py:295 +#: rcgcdw.py:301 rcgcdw.py:305 +#, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" -msgstr "Prefix: {prefix}, strona: {website} | desc" +msgstr "Prefix: {prefix}, strona: {website} | {desc}" -#: rcgcdw.py:294 +#: rcgcdw.py:304 msgid "Edited an entry in interwiki table" msgstr "Edytowano wpis interwiki" -#: rcgcdw.py:298 +#: rcgcdw.py:308 msgid "Deleted an entry in interwiki table" msgstr "Usunięto wpis interwiki" -#: rcgcdw.py:299 +#: rcgcdw.py:309 +#, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Prefix: {prefix} | {desc}" -#: rcgcdw.py:302 +#: rcgcdw.py:312 +#, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Zmieniono model zawartości {article}" -#: rcgcdw.py:303 +#: rcgcdw.py:313 +#, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Model został zmieniony z {old} na {new}: {reason}" -#: rcgcdw.py:306 +#: rcgcdw.py:316 +#, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edytowano sprite dla {article}" -#: rcgcdw.py:309 +#: rcgcdw.py:319 +#, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Utworzono sprite sheet dla {article}" -#: rcgcdw.py:312 +#: rcgcdw.py:322 +#, python-brace-format msgid "Edited the slice for {article}" msgstr "Edytowano część sprite dla {article}" -#: rcgcdw.py:315 +#: rcgcdw.py:325 +#, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Utworzono tag \"{tag}\"" -#: rcgcdw.py:319 +#: rcgcdw.py:329 +#, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Usunięto tag \"{tag}\"" -#: rcgcdw.py:323 +#: rcgcdw.py:333 +#, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Aktywowano tag \"{tag}\"" -#: rcgcdw.py:326 +#: rcgcdw.py:336 +#, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Dezaktywowano tag \"{tag}\"" -#: rcgcdw.py:347 +#: rcgcdw.py:357 msgid "Tags" msgstr "Tagi" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "Unable to process the event" msgstr "Nie udało się odczytać wydarzenia" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "error" msgstr "błąd" -#: rcgcdw.py:549 +#: rcgcdw.py:560 msgid "Daily overview" msgstr "Podsumowanie dnia" -#: rcgcdw.py:565 -msgid " ({} actions)" -msgstr "({} akcji)" +#: rcgcdw.py:576 +msgid " ({} action)" +msgid_plural "({} actions)" +msgstr[0] " ({} akcja)" +msgstr[1] " ({} akcje)" +msgstr[2] " ({} akcji)" -#: rcgcdw.py:566 -msgid " UTC ({} actions)" -msgstr " UTC ({} akcji)" +#: rcgcdw.py:577 +msgid " UTC ({} action)" +msgid_plural " UTC ({} actions)" +msgstr[0] " UTC ({} akcja)" +msgstr[1] " UTC ({} akcje)" +msgstr[2] " UTC ({} akcji)" -#: rcgcdw.py:568 rcgcdw.py:569 +#: rcgcdw.py:579 rcgcdw.py:580 msgid "But nobody came" msgstr "Ale nikt nie przyszedł" -#: rcgcdw.py:573 -msgid "Admin actions" -msgstr "Akcji administratorskich" +#: rcgcdw.py:584 +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:573 -msgid "Bytes changed" -msgstr "Zmienionych bajtów" - -#: rcgcdw.py:573 -msgid "Day score" -msgstr "Wynik dnia" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "Edits made" msgstr "Zrobionych edycji" -#: rcgcdw.py:573 -msgid "Most active hours" -msgstr "Najbardziej aktywne godziny" - -#: rcgcdw.py:573 -msgid "Most active users" -msgstr "Najbardziej aktywni użytkownicy" - -#: rcgcdw.py:573 -msgid "New articles" -msgstr "Nowych artykułów" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "New files" msgstr "Nowych plików" -#: rcgcdw.py:573 +#: rcgcdw.py:584 +msgid "Admin actions" +msgstr "Akcji administratorskich" + +#: rcgcdw.py:584 +msgid "Bytes changed" +msgstr "Zmienionych bajtów" + +#: rcgcdw.py:584 +msgid "New articles" +msgstr "Nowych artykułów" + +#: rcgcdw.py:584 msgid "Unique contributors" msgstr "Unikalnych edytujących" -#: rcgcdw.py:662 +#: rcgcdw.py:584 +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:584 +msgid "Day score" +msgstr "Wynik dnia" + +#: rcgcdw.py:674 +#, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "Połączenie z {wiki} wygląda na stabilne." -#: rcgcdw.py:662 rcgcdw.py:715 +#: rcgcdw.py:674 rcgcdw.py:729 msgid "Connection status" msgstr "Problem z połączeniem" -#: rcgcdw.py:715 +#: rcgcdw.py:729 +#, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} nie działa lub jest nieosiągalna." -#: rcgcdw.py:737 -msgid "{wiki} is back up!" -msgstr "{wiki} jest ponownie osiągalna!" +#: rcgcdw.py:751 +msgid "director" +msgstr "Dyrektor" + +#: rcgcdw.py:751 +msgid "bot" +msgstr "Bot" + +#: rcgcdw.py:751 +msgid "editor" +msgstr "Redaktor" + +#: rcgcdw.py:751 +msgid "directors" +msgstr "Dyrektorzy" + +#: rcgcdw.py:751 +msgid "sysop" +msgstr "Administrator" + +#: rcgcdw.py:751 +msgid "bureaucrat" +msgstr "Biurokrata" + +#: rcgcdw.py:751 +msgid "reviewer" +msgstr "Przeglądający" + +#: rcgcdw.py:751 +msgid "autoreview" +msgstr "Automatycznie przeglądający" + +#: rcgcdw.py:751 +msgid "autopatrol" +msgstr "Automatycznie zatwierdzający" + +#: rcgcdw.py:751 +msgid "wiki_guardian" +msgstr "Strażnik wiki" + +#~ msgid "{wiki} is back up!" +#~ msgstr "{wiki} jest ponownie osiągalna!" #~ msgid "Moved {article} to redirect page ({title})" #~ msgstr "Przeniesiono {article} do przekierowania ({title})" diff --git a/rcgcdw.pot b/rcgcdw.pot index a13b3ee..7f63349 100644 --- a/rcgcdw.pot +++ b/rcgcdw.pot @@ -1,363 +1,464 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR ORGANIZATION +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # +#, fuzzy msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2018-07-05 20:21+0200\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2018-07-12 11:29+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -"Generated-By: pygettext.py 1.5\n" +"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" - -#: rcgcdw.py:126 +#: rcgcdw.py:124 msgid "(N!) " msgstr "" -#: rcgcdw.py:126 +#: rcgcdw.py:124 msgid "m " msgstr "" -#: rcgcdw.py:144 -msgid "([preview]({link}) | [undo]({undolink}))" -msgstr "" - -#: rcgcdw.py:144 rcgcdw.py:170 +#: rcgcdw.py:142 rcgcdw.py:168 msgid "Options" msgstr "" -#: rcgcdw.py:145 +#: rcgcdw.py:142 +#, python-brace-format +msgid "([preview]({link}) | [undo]({undolink}))" +msgstr "" + +#: rcgcdw.py:143 +#, python-brace-format msgid "Uploaded a new version of {name}" msgstr "" -#: rcgcdw.py:147 +#: rcgcdw.py:145 +#, python-brace-format msgid "Uploaded {name}" msgstr "" -#: rcgcdw.py:160 +#: rcgcdw.py:158 msgid "**No license!**" msgstr "" -#: rcgcdw.py:170 +#: rcgcdw.py:168 +#, python-brace-format msgid "([preview]({link}))" msgstr "" -#: rcgcdw.py:171 +#: rcgcdw.py:169 +#, python-brace-format msgid "" "{desc}\n" "License: {license}" msgstr "" -#: rcgcdw.py:174 +#: rcgcdw.py:172 +#, python-brace-format msgid "Deleted page {article}" msgstr "" -#: rcgcdw.py:177 +#: rcgcdw.py:175 +#, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "" -#: rcgcdw.py:180 -msgid "A redirect has been made" -msgstr "" - -#: rcgcdw.py:180 +#: rcgcdw.py:178 msgid "No redirect has been made" msgstr "" -#: rcgcdw.py:181 +#: rcgcdw.py:178 +msgid "A redirect has been made" +msgstr "" + +#: rcgcdw.py:179 +#, python-brace-format msgid "Moved {article} to {target}" msgstr "" -#: rcgcdw.py:184 +#: rcgcdw.py:182 +#, python-brace-format msgid "Moved {article} to {title} over redirect" msgstr "" -#: rcgcdw.py:187 +#: rcgcdw.py:185 +#, python-brace-format msgid "Moved protection settings from {article} to {title}" msgstr "" -#: rcgcdw.py:191 +#: rcgcdw.py:189 msgid "infinity and beyond" msgstr "" -#: rcgcdw.py:192 +#: rcgcdw.py:190 +#, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "" -#: rcgcdw.py:196 +#: rcgcdw.py:194 +#, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "" -#: rcgcdw.py:200 +#: rcgcdw.py:198 +#, python-brace-format msgid "Unblocked {blocked_user}" msgstr "" -#: rcgcdw.py:204 +#: rcgcdw.py:202 +#, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:208 +#: rcgcdw.py:206 +#, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:212 +#: rcgcdw.py:210 +#, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:216 +#: rcgcdw.py:214 msgid "Location" msgstr "" -#: rcgcdw.py:218 +#: rcgcdw.py:216 msgid "About me" msgstr "" -#: rcgcdw.py:220 +#: rcgcdw.py:218 msgid "Google link" msgstr "" -#: rcgcdw.py:222 +#: rcgcdw.py:220 msgid "Facebook link" msgstr "" -#: rcgcdw.py:224 +#: rcgcdw.py:222 msgid "Twitter link" msgstr "" -#: rcgcdw.py:226 +#: rcgcdw.py:224 msgid "Reddit link" msgstr "" -#: rcgcdw.py:228 +#: rcgcdw.py:226 msgid "Twitch link" msgstr "" -#: rcgcdw.py:230 +#: rcgcdw.py:228 msgid "PSN link" msgstr "" -#: rcgcdw.py:232 +#: rcgcdw.py:230 msgid "VK link" msgstr "" -#: rcgcdw.py:234 +#: rcgcdw.py:232 msgid "XVL link" msgstr "" -#: rcgcdw.py:236 +#: rcgcdw.py:234 msgid "Steam link" msgstr "" -#: rcgcdw.py:238 +#: rcgcdw.py:236 msgid "Unknown" msgstr "" -#: rcgcdw.py:239 +#: rcgcdw.py:237 +#, python-brace-format msgid "Edited {target}'s profile" msgstr "" -#: rcgcdw.py:240 +#: rcgcdw.py:238 +#, python-brace-format msgid "{field} field changed to: {desc}" msgstr "" -#: rcgcdw.py:244 +#: rcgcdw.py:242 +#, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:247 +#: rcgcdw.py:246 +#, python-brace-format msgid "Changed group membership for {target}" msgstr "" -#: rcgcdw.py:251 rcgcdw.py:253 +#: rcgcdw.py:248 +msgid "System" +msgstr "" + +#: rcgcdw.py:250 +#, python-brace-format +msgid "{target} got autopromoted to a new usergroup" +msgstr "" + +#: rcgcdw.py:260 rcgcdw.py:262 msgid "none" msgstr "" -#: rcgcdw.py:254 rcgcdw.py:376 +#: rcgcdw.py:263 rcgcdw.py:385 msgid "No description provided" msgstr "" -#: rcgcdw.py:255 +#: rcgcdw.py:264 +#, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "" -#: rcgcdw.py:258 +#: rcgcdw.py:267 +#, python-brace-format msgid "Protected {target}" msgstr "" -#: rcgcdw.py:262 +#: rcgcdw.py:271 +#, python-brace-format msgid "Changed protection level for {article}" msgstr "" -#: rcgcdw.py:266 +#: rcgcdw.py:275 +#, python-brace-format msgid "Removed protection from {article}" msgstr "" -#: rcgcdw.py:269 -msgid "Changed visibility of revision(s) on page {article} " -msgstr "" +#: rcgcdw.py:279 +#, 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:272 -msgid "Imported {article} with {count} revision(s)" -msgstr "" +#: rcgcdw.py:282 +#, python-brace-format +msgid "Imported {article} with {count} revision" +msgid_plural "Imported {article} with {count} revisions" +msgstr[0] "" +msgstr[1] "" -#: rcgcdw.py:275 +#: rcgcdw.py:285 +#, python-brace-format msgid "Restored {article}" msgstr "" -#: rcgcdw.py:278 +#: rcgcdw.py:288 msgid "Changed visibility of log events" msgstr "" -#: rcgcdw.py:281 +#: rcgcdw.py:291 msgid "Imported interwiki" msgstr "" -#: rcgcdw.py:284 +#: rcgcdw.py:294 +#, python-brace-format msgid "Edited abuse filter number {number}" msgstr "" -#: rcgcdw.py:287 +#: rcgcdw.py:297 +#, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "" -#: rcgcdw.py:290 +#: rcgcdw.py:300 msgid "Added an entry to the interwiki table" msgstr "" -#: rcgcdw.py:291 rcgcdw.py:295 +#: rcgcdw.py:301 rcgcdw.py:305 +#, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "" -#: rcgcdw.py:294 +#: rcgcdw.py:304 msgid "Edited an entry in interwiki table" msgstr "" -#: rcgcdw.py:298 +#: rcgcdw.py:308 msgid "Deleted an entry in interwiki table" msgstr "" -#: rcgcdw.py:299 +#: rcgcdw.py:309 +#, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "" -#: rcgcdw.py:302 +#: rcgcdw.py:312 +#, python-brace-format msgid "Changed the content model of the page {article}" msgstr "" -#: rcgcdw.py:303 +#: rcgcdw.py:313 +#, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "" -#: rcgcdw.py:306 +#: rcgcdw.py:316 +#, python-brace-format msgid "Edited the sprite for {article}" msgstr "" -#: rcgcdw.py:309 +#: rcgcdw.py:319 +#, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "" -#: rcgcdw.py:312 +#: rcgcdw.py:322 +#, python-brace-format msgid "Edited the slice for {article}" msgstr "" -#: rcgcdw.py:315 +#: rcgcdw.py:325 +#, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:319 +#: rcgcdw.py:329 +#, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:323 +#: rcgcdw.py:333 +#, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:326 +#: rcgcdw.py:336 +#, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:347 +#: rcgcdw.py:357 msgid "Tags" msgstr "" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "Unable to process the event" msgstr "" -#: rcgcdw.py:469 +#: rcgcdw.py:480 msgid "error" msgstr "" -#: rcgcdw.py:549 +#: rcgcdw.py:560 msgid "Daily overview" msgstr "" -#: rcgcdw.py:565 -msgid " ({} actions)" -msgstr "" +#: rcgcdw.py:576 +msgid " ({} action)" +msgid_plural "({} actions)" +msgstr[0] "" +msgstr[1] "" -#: rcgcdw.py:566 -msgid " UTC ({} actions)" -msgstr "" +#: rcgcdw.py:577 +msgid " UTC ({} action)" +msgid_plural " UTC ({} actions)" +msgstr[0] "" +msgstr[1] "" -#: rcgcdw.py:568 rcgcdw.py:569 +#: rcgcdw.py:579 rcgcdw.py:580 msgid "But nobody came" msgstr "" -#: rcgcdw.py:573 -msgid "Admin actions" -msgstr "" +#: rcgcdw.py:584 +msgid "Most active user" +msgid_plural "Most active users" +msgstr[0] "" +msgstr[1] "" -#: rcgcdw.py:573 -msgid "Bytes changed" -msgstr "" - -#: rcgcdw.py:573 -msgid "Day score" -msgstr "" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "Edits made" msgstr "" -#: rcgcdw.py:573 -msgid "Most active hours" -msgstr "" - -#: rcgcdw.py:573 -msgid "Most active users" -msgstr "" - -#: rcgcdw.py:573 -msgid "New articles" -msgstr "" - -#: rcgcdw.py:573 +#: rcgcdw.py:584 msgid "New files" msgstr "" -#: rcgcdw.py:573 +#: rcgcdw.py:584 +msgid "Admin actions" +msgstr "" + +#: rcgcdw.py:584 +msgid "Bytes changed" +msgstr "" + +#: rcgcdw.py:584 +msgid "New articles" +msgstr "" + +#: rcgcdw.py:584 msgid "Unique contributors" msgstr "" -#: rcgcdw.py:662 +#: rcgcdw.py:584 +msgid "Most active hour" +msgid_plural "Most active hours" +msgstr[0] "" +msgstr[1] "" + +#: rcgcdw.py:584 +msgid "Day score" +msgstr "" + +#: rcgcdw.py:674 +#, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "" -#: rcgcdw.py:662 rcgcdw.py:715 +#: rcgcdw.py:674 rcgcdw.py:729 msgid "Connection status" msgstr "" -#: rcgcdw.py:715 +#: rcgcdw.py:729 +#, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "" -#: rcgcdw.py:737 -msgid "{wiki} is back up!" +#: rcgcdw.py:751 +msgid "director" msgstr "" +#: rcgcdw.py:751 +msgid "bot" +msgstr "" + +#: rcgcdw.py:751 +msgid "editor" +msgstr "" + +#: rcgcdw.py:751 +msgid "directors" +msgstr "" + +#: rcgcdw.py:751 +msgid "sysop" +msgstr "" + +#: rcgcdw.py:751 +msgid "bureaucrat" +msgstr "" + +#: rcgcdw.py:751 +msgid "reviewer" +msgstr "" + +#: rcgcdw.py:751 +msgid "autoreview" +msgstr "" + +#: rcgcdw.py:751 +msgid "autopatrol" +msgstr "" + +#: rcgcdw.py:751 +msgid "wiki_guardian" +msgstr "" diff --git a/rcgcdw.py b/rcgcdw.py index 58f8cad..fcf1051 100644 --- a/rcgcdw.py +++ b/rcgcdw.py @@ -34,11 +34,9 @@ if settings["limitrefetch"] != -1 and os.path.exists("lastchange.txt") == False: with open("lastchange.txt", 'w') as sfile: sfile.write("99999999999") logging.info("Current settings: {settings}".format(settings=settings)) -if settings["lang"] != "en" or settings["lang"] == "": - lang = gettext.translation('rcgcdw', localedir='locale', languages=[settings["lang"]]) - lang.install() -else: - _ = lambda s: s +lang = gettext.translation('rcgcdw', localedir='locale', languages=[settings["lang"]]) +lang.install() +ngettext = lang.ngettext def send(message, name, avatar): send_to_discord({"content": message, "avatar_url": avatar, "username": name}) @@ -107,7 +105,7 @@ def webhook_formatter(action, STATIC, **params): 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(" ", "_")) - if action in (1, 37): #edit or new page + if action in ("edit", "new"): #edit or new page editsize = params["size"] print (editsize) if editsize > 0: @@ -123,8 +121,8 @@ 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"] = "{article} ({new}{minor}{editsize})".format(article=params["title"], editsize="+"+str(editsize) if editsize>0 else editsize, new= _("(N!) ") if action == 37 else "", minor=_("m ") if action == 1 and params["minor"] else "") - elif action == 5: #sending files + embed["title"] = "{article} ({new}{minor}{editsize})".format(article=params["title"], editsize="+"+str(editsize) if editsize>0 else editsize, new= _("(N!) ") if action == "new" else "", minor=_("m ") if action == "edit" and params["minor"] else "") + elif action in ("upload/overwrite", "upload/upload"): #sending files 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") undolink = "" @@ -169,48 +167,48 @@ 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"], license=license if license is not None else "?") - elif action == 6: + 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"]) - elif action == 7: + 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"]) - elif action == 14: + 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"] == True else _("A redirect has been made")) embed["title"] = _("Moved {article} to {target}").format(article = params["title"], target=params["target"]) - elif action == 15: + elif action == "move/move_redir": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["target"].replace(" ", "_")) embed["title"] = _("Moved {article} to {title} over redirect").format(article=params["title"], title=params["target"]) - elif action == 16: + 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 {article} to {title}").format(article=params["title"], title=params["target"]) - elif action == 17: + elif action == "block/block": link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], user=params["blocked_user"].replace(" ", "_").replace(')', '\)')) user = params["blocked_user"].split(':')[1] time =_( "infinity and beyond") if params["duration"] == "infinite" else params["duration"] embed["title"] = _("Blocked {blocked_user} for {time}").format(blocked_user=user, time=time) - elif action == 19: + elif action == "block/reblock": link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], user=params["blocked_user"].replace(" ", "_").replace(')', '\)')) user = params["blocked_user"].split(':')[1] embed["title"] = _("Changed block settings for {blocked_user}").format(blocked_user=user) - elif action == 18: + elif action == "block/unblock": link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], user=params["blocked_user"].replace(" ", "_").replace(')', '\)')) user = params["blocked_user"].split(':')[1] embed["title"] = _("Unblocked {blocked_user}").format(blocked_user=user) - elif action == 25: + elif action == "curseprofile/comment-created": link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], commentid=params["commentid"]) #link = "https://{wiki}.gamepedia.com/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"]) - elif action == 29: + 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"]) - elif action == 26: + 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"]) - elif action == 28: + elif action == "curseprofile/profile-edited": link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) if params["field"] == "profile-location": field = _("Location") @@ -238,90 +236,102 @@ def webhook_formatter(action, STATIC, **params): field = _("Unknown") embed["title"] = _("Edited {target}'s profile").format(target=params["target"]) params["desc"] = _("{field} field changed to: {desc}").format(field=field, desc=params["desc"]) - elif action == 27: + elif action == "curseprofile/comment-deleted": link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], commentid=params["commentid"]) #link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], target=params["target"].replace(" ", "_").replace(')', '\)')) embed["title"] = _("Deleted a comment on {target}'s profile").format(target=params["target"]) - elif action == 20: + elif action in ("rights/rights", "rights/autopromote"): link = "https://{wiki}.gamepedia.com/User:".format(wiki=settings["wiki"])+params["title"].split(":")[1] - embed["title"] = _("Changed group membership for {target}").format(target=params["title"].split(":")[1]) - if params["old_groups"].count(' ') < params["new_groups"].count(' ') or params["old_groups"] == "none": #TODO Hardcoded value, depends on translation + if action == "rights/rights": + embed["title"] = _("Changed group membership for {target}").format(target=params["title"].split(":")[1]) + else: + params["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"]): embed["thumbnail"]["url"] = "https://i.imgur.com/WnGhF5g.gif" - if len(params["old_groups"]) < 4: - params["old_groups"] = _("none") - if len(params["new_groups"]) < 4: - params["new_groups"] = _("none") + old_groups = [] + new_groups = [] + for name in params["old_groups"]: + old_groups.append(_(name)) + for name in params["new_groups"]: + 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(old_groups=params["old_groups"], new_groups=params["new_groups"], reason=reason) - elif action == 2: + params["desc"] = _("Groups changed from {old_groups} to {new_groups}{reason}").format(old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), reason=reason) + elif action == "protect/protect": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) embed["title"] = _("Protected {target}").format(target=params["title"]) params["desc"] = params["settings"] + " | " + params["desc"] - elif action == 3: + elif action == "protect/modify": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) embed["title"] = _("Changed protection level for {article}").format(article=params["title"]) params["desc"] = params["settings"] + " | " + params["desc"] - elif action == 4: + 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"]) - elif action == 9: + elif action == "delete/revision": + amount = len(params["amount"]) link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) - embed["title"] = _("Changed visibility of revision(s) on page {article} ").format(article=params["title"]) - elif action == 11: + embed["title"] = ngettext("Changed visibility of revision on page {article} ", "Changed visibility of {amount} revisions on page {article} ", amount).format(article=params["title"], amount=amount) + elif action == "import/upload": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) - embed["title"] = _("Imported {article} with {count} revision(s)").format(article=params["title"], count=params["amount"]) - elif action == 8: + embed["title"] = ngettext("Imported {article} with {count} revision", "Imported {article} with {count} revisions", params["amount"]).format(article=params["title"], count=params["amount"]) + elif action == "delete/restore": link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], article=params["title"].replace(" ", "_")) embed["title"] = _("Restored {article}").format(article=params["title"]) - elif action == 10: + elif action == "delete/event": link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) embed["title"] = _("Changed visibility of log events") - elif action == 12: + elif action == "import/interwiki": link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) embed["title"] = _("Imported interwiki") - elif action == 21: + elif action == "abusefilter/modify": link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) embed["title"] = _("Edited abuse filter number {number}").format(number=params["filternr"]) - elif action == 13: + 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"]) - elif action == 22: + 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"]) - elif action == 23: + 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"]) - elif action == 24: + 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"]) - elif action == 30: + 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"]) - elif action == 31: + 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"]) - elif action == 32: + 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"]) - elif action == 33: + 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"]) - elif action == 34: + elif action == "managetags/create": link = "https://{wiki}.gamepedia.com/Special:Tags" embed["title"] = _("Created a tag \"{tag}\"").format(tag=params["additional"]["tag"]) recent_changes.update_tags() - elif action == 35: + elif action == "managetags/delete": link = "https://{wiki}.gamepedia.com/Special:Tags" embed["title"] = _("Deleted a tag \"{tag}\"").format(tag=params["additional"]["tag"]) recent_changes.update_tags() - elif action == 36: + elif action == "managetags/activate": link = "https://{wiki}.gamepedia.com/Special:Tags" embed["title"] = _("Activated a tag \"{tag}\"").format(tag=params["additional"]["tag"]) - elif action == 38: + elif action == "managetags/deactivate": link = "https://{wiki}.gamepedia.com/Special:Tags" embed["title"] = _("Deactivated a tag \"{tag}\"").format(tag=params["additional"]["tag"]) else: @@ -373,95 +383,97 @@ def first_pass(change): #I've decided to split the embed formatter and change ha STATIC_VARS = {"timestamp": change["timestamp"], "tags": change["tags"]} if not parsedcomment: parsedcomment = _("No description provided") - if change["type"] == "edit": + if change["type"] == "edit" and "edit" not in settings["ignored"]: STATIC_VARS = {**STATIC_VARS ,**{"color": settings["appearance"]["edit"]["color"], "icon": settings["appearance"]["edit"]["icon"]}} - webhook_formatter(1, 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) + webhook_formatter("edit", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"], size=change["newlen"]-change["oldlen"], minor= True if "minor" in change else False) elif change["type"] == "log": - logtype = change["logtype"] - logaction = change["logaction"] - combination = "{logtype}/{logaction}".format(logtype=logtype, logaction=logaction) + combination = "{logtype}/{logaction}".format(logtype=change["logtype"], logaction=change["logaction"]) + if combination in settings["ignored"]: + 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 logtype=="protect" and logaction=="protect": - webhook_formatter(2, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, settings=change["logparams"]["description"]) - elif logtype=="protect" and logaction=="modify": - webhook_formatter(3, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, settings=change["logparams"]["description"]) - elif logtype=="protect" and logaction=="unprotect": - webhook_formatter(4, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="upload" and logaction=="overwrite": - webhook_formatter(5, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, overwrite=True) - elif logtype=="upload": - webhook_formatter(5, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, overwrite=False) - elif logtype=="delete" and logaction=="delete": - webhook_formatter(6, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="delete" and logaction=="delete_redir": - webhook_formatter(7, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="delete" and logaction=="restore": - webhook_formatter(8, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="delete" and logaction=="revision": - webhook_formatter(9, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="delete" and logaction=="event": - webhook_formatter(10, STATIC_VARS, user=change["user"], desc=parsedcomment) - elif logtype=="import" and logaction=="upload": - webhook_formatter(11, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, amount=change["logparams"]["count"]) - elif logtype=="import" and logaction=="interwiki": - webhook_formatter(12, STATIC_VARS, user=change["user"], desc=parsedcomment) - elif logtype=="merge" : - webhook_formatter(13, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, destination=change["logparams"]["dest_title"]) - elif logtype=="move" and logaction=="move": - webhook_formatter(14, 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 logtype=="move" and logaction=="move_redir": - webhook_formatter(15, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, target=change["logparams"]["target_title"]) - elif logtype=="protect" and logaction=="move_prot": - webhook_formatter(16, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, target=change["logparams"]["oldtitle_title"]) - elif logtype=="block" and logaction=="block": - webhook_formatter(17, STATIC_VARS, user=change["user"], blocked_user=change["title"], desc=parsedcomment, duration=change["logparams"]["duration"]) - elif logtype=="block" and logaction=="unblock": - webhook_formatter(18, STATIC_VARS, user=change["user"], blocked_user=change["title"], desc=parsedcomment) - elif logtype=="block": - webhook_formatter(19, STATIC_VARS, user=change["user"], blocked_user=change["title"], desc=parsedcomment) - elif logtype=="rights": - webhook_formatter(20, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, old_groups=', '.join(change["logparams"]["oldgroups"]), new_groups=', '.join(change["logparams"]["newgroups"])) - elif logtype=="abusefilter": - webhook_formatter(21, STATIC_VARS, user=change["user"], desc=parsedcomment, filternr=change["logparams"]['1']) - elif logtype=="interwiki" and logaction=="iw_add": - webhook_formatter(22, STATIC_VARS, user=change["user"], desc=parsedcomment, prefix=change["logparams"]['0'], website=change["logparams"]['1']) - elif logtype=="interwiki" and logaction=="iw_edit": - webhook_formatter(23, STATIC_VARS, user=change["user"], desc=parsedcomment, prefix=change["logparams"]['0'], website=change["logparams"]['1']) - elif logtype=="interwiki" and logaction=="iw_delete": - webhook_formatter(24, STATIC_VARS, user=change["user"], desc=parsedcomment, prefix=change["logparams"]['0']) - elif logtype=="curseprofile" and logaction=="comment-created": - webhook_formatter(25, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) - elif logtype=="curseprofile" and logaction=="comment-edited": - webhook_formatter(26, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) - elif logtype=="curseprofile" and logaction=="comment-deleted": - webhook_formatter(27, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) - elif logtype=="curseprofile" and logaction=="profile-edited": - webhook_formatter(28, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], field=change["logparams"]['0'], desc=change["parsedcomment"]) - elif logtype=="curseprofile" and logaction=="comment-replied": - webhook_formatter(29, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) - elif logtype=="contentmodel" and logaction=="change": - webhook_formatter(30, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, oldmodel=change["logparams" ]["oldmodel"], newmodel=change["logparams" ]["newmodel"]) - elif logtype=="sprite" and logaction=="sprite": - webhook_formatter(31, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="sprite" and logaction=="sheet": - webhook_formatter(32, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="sprite" and logaction=="slice": - webhook_formatter(33, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) - elif logtype=="managetags" and logaction=="create": - webhook_formatter(34, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) - elif logtype=="managetags" and logaction=="delete": - webhook_formatter(35, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) - elif logtype=="managetags" and logaction=="activate": - webhook_formatter(36, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) - elif logtype=="managetags" and logaction=="deactivate": - webhook_formatter(38, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, additional=change["logparams"]) - elif logtype=="tag" and logaction=="update": - webhook_formatter(39, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment) + if combination == "protect/protect": + webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, settings=change["logparams"]["description"]) + elif combination=="protect/modify": + webhook_formatter(combination, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, settings=change["logparams"]["description"]) + 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["title"], desc=parsedcomment, target=change["logparams"]["oldtitle_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"]['1']) + 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"]["0"]) + elif combination=="curseprofile/comment-edited": + webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) + elif combination=="curseprofile/comment-deleted": + webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) + elif combination=="curseprofile/profile-edited": + webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], field=change["logparams"]['0'], desc=change["parsedcomment"]) + elif combination=="curseprofile/comment-replied": + webhook_formatter(combination, STATIC_VARS, user=change["user"], target=change["title"].split(':')[1], commentid=change["logparams"]["0"]) + 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!") print (change) @@ -471,9 +483,9 @@ def first_pass(change): #I've decided to split the embed formatter and change ha logging.warning("External event happened, ignoring.") print (change) return - elif change["type"] == "new": #new page + elif change["type"] == "new" and "new" not in settings["ignored"]: #new page STATIC_VARS = {**STATIC_VARS ,**{"color": settings["appearance"]["new"]["color"], "icon": settings["appearance"]["new"]["icon"]}} - webhook_formatter(37, STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"], size=change["newlen"]) + webhook_formatter("new", STATIC_VARS, user=change["user"], title=change["title"], desc=parsedcomment, oldrev=change["old_revid"], pageid=change["pageid"], diff=change["revid"], size=change["newlen"]) def day_overview_request(): logging.info("Fetching daily overview... This may take up to 30 seconds!") @@ -561,15 +573,15 @@ def day_overview(): #time.strftime('%Y-%m-%dT%H:%M:%S.000Z', time.gmtime(time.ti active_hours = [] for hour, numberh in Counter(hours).most_common(list(v).count(max(v))): #find most active users active_hours.append(str(hour)) - usramount = _(" ({} actions)").format(numberu) - houramount = _(" UTC ({} actions)").format(numberh) + usramount = ngettext(" ({} action)", " ({} actions)", numberu).format(numberu) + houramount = ngettext(" UTC ({} action)", " UTC ({} actions)", numberh).format(numberh) else: active_users = [_("But nobody came")] #a reference to my favorite game of all the time, sorry ^_^ active_hours = [_("But nobody came")] usramount = "" houramount = "" embed["fields"] = [] - fields = ((_("Most active users"), ', '.join(active_users) + usramount), (_("Edits made"), edits), (_("New files"), files), (_("Admin actions"), admin), (_("Bytes changed"), changed_bytes), (_("New articles"), new_articles), (_("Unique contributors"), str(len(activity))), (_("Most active hours"), ', '.join(active_hours) + houramount), (_("Day score"), str(overall))) + fields = ((ngettext("Most active user", "Most active users", len(active_users)), ', '.join(active_users) + usramount), (_("Edits made"), edits), (_("New files"), files), (_("Admin actions"), admin), (_("Bytes changed"), changed_bytes), (_("New articles"), new_articles), (_("Unique contributors"), str(len(activity))), (ngettext("Most active hour", "Most active hours", len(active_hours)), ', '.join(active_hours) + houramount), (_("Day score"), str(overall))) for name, value in fields: embed["fields"].append({"name": name, "value": value}) data = {} @@ -588,6 +600,7 @@ class recent_changes_class(object): last_downtime = 0 clock = 0 tags = {} + groups = {} unsent_messages = [] streak = -1 if settings["limitrefetch"] != -1: @@ -625,7 +638,7 @@ class recent_changes_class(object): self.unsent_messages = self.unsent_messages[num:] logging.debug(self.unsent_messages) last_check = self.fetch_changes(amount=amount) - self.recent_id = last_check if last_check is not None else self.recent_id + self.recent_id = last_check if last_check is not None else self.file_id if settings["limitrefetch"] != -1 and self.recent_id != self.file_id: self.file_id = self.recent_id with open("lastchange.txt", "w") as record: @@ -699,6 +712,7 @@ class recent_changes_class(object): if looped == False: while 1: #recursed loop, check for connection (every 10 seconds) as long as three services are down, don't do anything else if self.check_connection(looped=True): + recent_changes.fetch(amount=settings["limitrefetch"]) break time.sleep(10) return False @@ -727,7 +741,7 @@ class recent_changes_class(object): self.tags[tag["name"]] = (BeautifulSoup(tag["displayname"], "lxml")).get_text() else: logging.warning("Could not retrive tags. Internal names will be used!") - + recent_changes = recent_changes_class() recent_changes.update_tags() time.sleep(1.0) @@ -735,7 +749,7 @@ recent_changes.fetch(amount=settings["limitrefetch" ] if settings["limitrefetch" schedule.every(settings["cooldown"]).seconds.do(recent_changes.fetch) if 1==2: #dummy for future translations - print (_("{wiki} is back up!")) + print (_("director"), _("bot"), _("editor"), _("directors"), _("sysop"), _("bureaucrat"), _("reviewer"), _("autoreview"), _("autopatrol"), _("wiki_guardian")) if settings["overview"]: schedule.every().day.at("{}:{}".format(time.strptime(settings["overview_time"], '%H:%M').tm_hour, time.strptime(settings["overview_time"], '%H:%M').tm_min)).do(day_overview) diff --git a/settings.json.example b/settings.json.example index d5d6766..f32b5bf 100644 --- a/settings.json.example +++ b/settings.json.example @@ -15,12 +15,13 @@ "no_event": "", "embed": "" }, + "ignored": ["external"], "verbose_level": 0, "show_updown_messages": true, "overview": false, "overview_time": "00:00", - "license_regex_detect": "\\{\\{(license|lizenz|licence)", - "license_regex": "\\{\\{(license|lizenz|licence)(\\ |\\|)(?P.*?)\\}\\}", + "license_regex_detect": "\\{\\{(license|lizenz|licence|copyright)", + "license_regex": "\\{\\{(license|lizenz|licence|copyright)(\\ |\\|)(?P.*?)\\}\\}", "appearance":{ "daily_overview": { "color": 16312092,