diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index e99865f..3f239a4 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,11 +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 unstable. -Current branch rules are as follows: +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! +If you contribute, I ask of you to create merge requests based on testing branch. These can be merge requests for specific issues, but please use the testing branch as the base for your MR and a destination of your MR. + `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. +`testing `- testing branch is what all of my hosted scripts run. It is used to test the code before merging it with master 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/README.md b/README.md index 0630a38..867f351 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,14 @@ ## Overview ## -*Recent changes Gamepedia compatible Discord webhook* is a project made from earlier recent changes module of IRC bot. It has been remade as independent script for public use. -Screenshots of the script in action can be found [on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Presentation). +*Recent changes Goat compatible Discord webhook* is a project created to track changes on the wiki directly on Discord. +**Screenshots** of the script in action can be found [on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Presentation). ### Features ### -* Fetch recent changes from Gamepedia wiki and send them to Discord channel using a webhook +* Fetch recent changes from MediaWiki wiki and send them to Discord channel using a webhook * Two appearance modes - embed and compact * Send daily overviews, that show general information about wiki activity * Supports multiple languages (included EN, PL, BR, RU, FR, UK) * Re-sends missed edits after start +* Very customizable ### Dependencies ### * **Python 3.6>** @@ -20,7 +21,7 @@ Screenshots of the script in action can be found [on the wiki](https://gitlab.co [Explanation for settings](https://gitlab.com/piotrex43/RcGcDw/wikis/settings.json) ### How to use ### -[Refer to the guide on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Guide). If you don't have the means to host it you can request me to host it for you. +[Refer to the guide on the wiki](https://gitlab.com/piotrex43/RcGcDw/wikis/Guide). ### Contributors ### * MarkusRost for enormous help with pointing out bugs, space for improvements and contributing to the code. diff --git a/configloader.py b/configloader.py index 8db4cba..8f27506 100644 --- a/configloader.py +++ b/configloader.py @@ -6,7 +6,7 @@ try: # load settings if settings["limitrefetch"] < settings["limit"] and settings["limitrefetch"] != -1: settings["limitrefetch"] = settings["limit"] if "user-agent" in settings["header"]: - settings["header"]["user-agent"] = settings["header"]["user-agent"].format(version="1.7.3") # set the version in the useragent + settings["header"]["user-agent"] = settings["header"]["user-agent"].format(version="1.9") # set the version in the useragent except FileNotFoundError: logging.critical("No config file could be found. Please make sure settings.json is in the directory.") sys.exit(1) diff --git a/locale/de/LC_MESSAGES/rcgcdw.mo b/locale/de/LC_MESSAGES/rcgcdw.mo index 972cd28..9828492 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 d5a142a..a50e42d 100644 --- a/locale/de/LC_MESSAGES/rcgcdw.po +++ b/locale/de/LC_MESSAGES/rcgcdw.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" -"PO-Revision-Date: 2019-08-10 17:09+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" +"PO-Revision-Date: 2020-03-17 21:22+0100\n" "Last-Translator: Frisk \n" "Language-Team: German\n" "Language: de\n" @@ -13,70 +13,70 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Loco-Source-Locale: de_DE\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "X-Loco-Parser: loco_parse_po\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "Wohnort" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "„Über mich“-Abschnitt" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "Google-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "Facebook-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "Twitter-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "Reddit-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "Twitch-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "PSN-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "VK-Link" -#: rcgcdw.py:69 -msgid "XVL link" +#: rcgcdw.py:71 +msgid "XBL link" msgstr "Xbox-Live-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "Steam-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "Discord-Link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "Battle.net-Link" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "Unbekannt" -#: rcgcdw.py:92 +#: rcgcdw.py:174 msgid "unknown" msgstr "unbekannt" -#: rcgcdw.py:162 +#: rcgcdw.py:244 #, python-brace-format msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" @@ -85,7 +85,7 @@ msgstr "" "[{author}]({author_url}) bearbeitete [{article}]({edit_link}){comment} " "({sign}{edit_size})" -#: rcgcdw.py:164 +#: rcgcdw.py:246 #, python-brace-format msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" @@ -94,12 +94,20 @@ msgstr "" "[{author}]({author_url}) erstellte [{article}]({edit_link}){comment} ({sign}" "{edit_size})" -#: rcgcdw.py:168 +#: rcgcdw.py:249 #, python-brace-format msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgstr "[{author}]({author_url}) lud [{file}]({file_link}) hoch{comment}" -#: rcgcdw.py:176 +#: rcgcdw.py:256 +#, python-brace-format +msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" +"[{author}]({author_url}) setzte [{file}]({file_link}) auf eine alte Version " +"zurück{comment}" + +#: rcgcdw.py:260 #, python-brace-format msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" @@ -108,12 +116,12 @@ msgstr "" "[{author}]({author_url}) lud eine neue Version von [{file}]({file_link}) " "hoch{comment}" -#: rcgcdw.py:180 +#: rcgcdw.py:263 #, python-brace-format msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgstr "[{author}]({author_url}) löschte [{page}]({page_link}){comment}" -#: rcgcdw.py:185 +#: rcgcdw.py:267 #, python-brace-format msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" @@ -122,15 +130,15 @@ msgstr "" "[{author}]({author_url}) löschte die Weiterleitung [{page}]({page_link}) " "durch Überschreiben{comment}" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "ohne eine Weiterleitung zu erstellen" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "und erstellte eine Weiterleitung" -#: rcgcdw.py:191 +#: rcgcdw.py:272 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" @@ -139,7 +147,7 @@ msgstr "" "[{author}]({author_url}) verschob {redirect}*{article}* nach [{target}]" "({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:198 +#: rcgcdw.py:278 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " @@ -148,7 +156,7 @@ msgstr "" "[{author}]({author_url}) verschob {redirect}*{article}* nach [{target}]" "({target_url}) und überschrieb eine Weiterleitung {made_a_redirect}{comment}" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, python-brace-format msgid "" "[{author}]({author_url}) moved protection settings from {redirect}*{article}" @@ -157,18 +165,32 @@ msgstr "" "[{author}]({author_url}) verschob die Schutzeinstellungen von {redirect}" "*{article}* nach [{target}]({target_url}){comment}" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "alle Ewigkeit" -#: rcgcdw.py:231 +#: rcgcdw.py:311 +msgid " on pages: " +msgstr " auf Seiten: " + +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr " und Namensräumen: " + +#: rcgcdw.py:320 +msgid " on namespaces: " +msgstr " in Namensräumen: " + +#: rcgcdw.py:332 #, python-brace-format msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" msgstr "" -"[{author}]({author_url}) sperrte [{user}]({user_url}) für {time}{comment}" +"[{author}]({author_url}) sperrte [{user}]({user_url}) für {time}" +"{restriction_desc}{comment}" -#: rcgcdw.py:236 +#: rcgcdw.py:336 #, python-brace-format msgid "" "[{author}]({author_url}) changed block settings for [{blocked_user}]" @@ -177,7 +199,7 @@ msgstr "" "[{author}]({author_url}) änderte die Sperreinstellungen für [{blocked_user}]" "({user_url}){comment}" -#: rcgcdw.py:241 +#: rcgcdw.py:340 #, python-brace-format msgid "" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" @@ -185,7 +207,7 @@ msgstr "" "[{author}]({author_url}) hob die Sperre von [{blocked_user}]({user_url}) " "auf{comment}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, python-brace-format msgid "" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile" @@ -193,11 +215,11 @@ msgstr "" "[{author}]({author_url}) hinterließ ein [Kommentar]({comment}) auf dem " "Profil von {target}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 msgid "their own profile" msgstr "das eigene Profil" -#: rcgcdw.py:250 +#: rcgcdw.py:346 #, python-brace-format msgid "" "[{author}]({author_url}) replied to a [comment]({comment}) on {target} " @@ -206,11 +228,11 @@ msgstr "" "[{author}]({author_url}) antwortete auf ein [Kommentar]({comment}) auf dem " "Profil von {target}" -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 msgid "their own" msgstr "sich selbst" -#: rcgcdw.py:258 +#: rcgcdw.py:352 #, python-brace-format msgid "" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" @@ -218,38 +240,45 @@ msgstr "" "[{author}]({author_url}) bearbeitete ein [Kommentar]({comment}) auf dem " "Profil von {target}" -#: rcgcdw.py:263 +#: rcgcdw.py:358 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) deleted a comment on {target} profile" +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "" +"[{author}]({author_url}) löschte ein Kommentar auf dem Profil von {target}" + +#: rcgcdw.py:368 #, python-brace-format msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgstr "" "[{author}]({author_url}) löschte ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[{target}]({target_url})'s" msgstr "dem Profil von [{target}]({target_url})" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[their own]({target_url})" msgstr "dem [eigenen Profil]({target_url})" -#: rcgcdw.py:271 +#: rcgcdw.py:375 #, python-brace-format msgid "" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" msgstr "" "[{author}]({author_url}) bearbeitete den {field} auf {target}. *({desc})*" -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 msgid "none" msgstr "keine" -#: rcgcdw.py:293 rcgcdw.py:662 +#: rcgcdw.py:397 rcgcdw.py:787 msgid "System" msgstr "System" -#: rcgcdw.py:299 +#: rcgcdw.py:402 #, python-brace-format msgid "" "[{author}]({author_url}) protected [{article}]({article_url}) with the " @@ -258,11 +287,11 @@ msgstr "" "[{author}]({author_url}) schützte [{article}]({article_url}) {settings}" "{comment}" -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 msgid " [cascading]" msgstr " [kaskadierend]" -#: rcgcdw.py:307 +#: rcgcdw.py:409 #, python-brace-format msgid "" "[{author}]({author_url}) modified protection settings of [{article}]" @@ -271,7 +300,7 @@ msgstr "" "[{author}]({author_url}) änderte den Schutzstatus von [{article}]" "({article_url}) {settings}{comment}" -#: rcgcdw.py:315 +#: rcgcdw.py:416 #, python-brace-format msgid "" "[{author}]({author_url}) removed protection from [{article}]({article_url})" @@ -280,7 +309,7 @@ msgstr "" "[{author}]({author_url}) entfernte den Schutz von [{article}]({article_url})" "{comment}" -#: rcgcdw.py:320 +#: rcgcdw.py:420 #, python-brace-format msgid "" "[{author}]({author_url}) changed visibility of revision on page [{article}]" @@ -295,7 +324,7 @@ msgstr[1] "" "[{author}]({author_url}) änderte die Sichtbarkeit von {amount} Versionen von " "[{article}]({article_url}){comment}" -#: rcgcdw.py:326 +#: rcgcdw.py:425 #, python-brace-format msgid "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " @@ -310,40 +339,40 @@ msgstr[1] "" "[{author}]({author_url}) importierte [{article}]({article_url}) mit {count} " "Versionen{comment}" -#: rcgcdw.py:332 +#: rcgcdw.py:430 #, python-brace-format msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" msgstr "" "[{author}]({author_url}) stellte [{article}]({article_url}) wieder " "her{comment}" -#: rcgcdw.py:334 +#: rcgcdw.py:432 #, python-brace-format msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgstr "" "[{author}]({author_url}) änderte die Sichtbarkeit eines " "Logbucheintrags{comment}" -#: rcgcdw.py:336 +#: rcgcdw.py:434 #, python-brace-format msgid "[{author}]({author_url}) imported interwiki{comment}" msgstr "[{author}]({author_url}) importierte Interwiki{comment}" -#: rcgcdw.py:339 +#: rcgcdw.py:437 #, python-brace-format msgid "" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" msgstr "" "[{author}]({author_url}) änderte [Missbrauchsfilter {number}]({filter_url})" -#: rcgcdw.py:342 +#: rcgcdw.py:440 #, python-brace-format msgid "" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" msgstr "" "[{author}]({author_url}) erstellte [Missbrauchsfilter {number}]({filter_url})" -#: rcgcdw.py:348 +#: rcgcdw.py:444 #, python-brace-format msgid "" "[{author}]({author_url}) merged revision histories of [{article}]" @@ -352,7 +381,7 @@ msgstr "" "[{author}]({author_url}) vereinigte Versionen von [{article}]({article_url}) " "in [{dest}]({dest_url}){comment}" -#: rcgcdw.py:352 +#: rcgcdw.py:448 #, python-brace-format msgid "" "[{author}]({author_url}) added an entry to the [interwiki table]" @@ -361,7 +390,7 @@ msgstr "" "[{author}]({author_url}) erstellte den [Interwiki-Präfix]({table_url}) " "{prefix} nach {website}" -#: rcgcdw.py:358 +#: rcgcdw.py:454 #, python-brace-format msgid "" "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " @@ -370,13 +399,13 @@ msgstr "" "[{author}]({author_url}) bearbeitete den [Interwiki-Präfix]({table_url}) " "{prefix} nach {website}" -#: rcgcdw.py:364 +#: rcgcdw.py:460 #, python-brace-format msgid "" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" msgstr "[{author}]({author_url}) entfernte ein [Interwiki-Präfix]({table_url})" -#: rcgcdw.py:368 +#: rcgcdw.py:463 #, python-brace-format msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" @@ -385,14 +414,14 @@ msgstr "" "[{author}]({author_url}) änderte das Inhaltsmodell der Seite [{article}]" "({article_url}) von {old} zu {new}{comment}" -#: rcgcdw.py:373 +#: rcgcdw.py:467 #, python-brace-format msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, python-brace-format msgid "" "[{author}]({author_url}) created the sprite sheet for [{article}]" @@ -401,92 +430,117 @@ msgstr "" "[{author}]({author_url}) erstellte das Sprite-sheet für [{article}]" "({article_url})" -#: rcgcdw.py:381 +#: rcgcdw.py:473 #, python-brace-format msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" -#: rcgcdw.py:384 +#: rcgcdw.py:478 +#, python-brace-format +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) erstellte die Cargo-Tabelle „{table}“" + +#: rcgcdw.py:480 +#, python-brace-format +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) löschte die Cargo-Tabelle „{table}“" + +#: rcgcdw.py:485 +#, python-brace-format +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) erstellte die Cargo-Tabelle „{table}“ neu" + +#: rcgcdw.py:490 +#, python-brace-format +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) ersetzte die Cargo-Tabelle „{table}“" + +#: rcgcdw.py:493 #, python-brace-format msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgstr "" "[{author}]({author_url}) erstellte eine [Markierung]({tag_url}) „{tag}“" -#: rcgcdw.py:388 +#: rcgcdw.py:497 #, python-brace-format msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) löschte eine [Markierung]({tag_url}) „{tag}“" -#: rcgcdw.py:392 +#: rcgcdw.py:501 #, python-brace-format msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgstr "" "[{author}]({author_url}) aktivierte eine [Markierung]({tag_url}) „{tag}“" -#: rcgcdw.py:395 +#: rcgcdw.py:504 #, python-brace-format msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgstr "" "[{author}]({author_url}) deaktivierte eine [Markierung]({tag_url}) „{tag}“" -#: rcgcdw.py:397 +#: rcgcdw.py:506 msgid "An action has been hidden by administration." msgstr "Eine Aktion wurde versteckt." -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "Keine Zusammenfassung angegeben" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "K" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "B" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "__Nur Leerraum__" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "Entfernt" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "Hinzugefügt" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "Optionen" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([Vorschau]({link}) | [zurücksetzen]({undolink}))" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Neue Dateiversion {name}" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +msgid "Reverted a version of {name}" +msgstr "Setzte {name} auf eine alte Version zurück" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "Neue Datei {name}" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "**Keine Lizenz!**" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" @@ -494,474 +548,515 @@ msgstr "" "\n" "Lizenz: {}" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "([Vorschau]({link}))" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "Löschte {article}" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Löschte die Weiterleitung {article} um Platz zu machen" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "Die Erstellung einer Weiterleitung wurde unterdrückt" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "Eine Weiterleitung wurde erstellt" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Verschob {redirect}{article} nach {target}" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "" "Verschob {redirect}{article} nach {title} und überschrieb eine Weiterleitung" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Verschob die Schutzeinstellungen von {redirect}{article} nach {title}" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "Bearbeiten von folgenden Seiten gesperrt: " + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "Bearbeiten von Seiten in folgenden Namensräumen gesperrt: " + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "Teilweise Sperre" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Sperrte {blocked_user} für {time}" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Änderte die Sperreinstellungen für {blocked_user}" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Hob die Sperre von {blocked_user} auf" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Hinterließ ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "Hinterließ ein Kommentar auf dem eigenen Profil" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Antwortete auf ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "Antwortete auf ein Kommentar auf dem eigenen Profil" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Bearbeitete ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "Bearbeitete ein Kommentar auf dem eigenen Profil" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Bearbeitete das Profil von {target}" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "Bearbeitete das eigene Profil" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "Entfernte den {field}" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "{field} geändert zu: {desc}" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "Löschte ein Kommentar auf dem Profil von {target}" + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Löschte ein Kommentar auf dem Profil von {target}" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Änderte die Gruppenzugehörigkeit von {target}" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} got autopromoted to a new usergroup" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "" "Änderte die Gruppenzugehörigkeit von {old_groups} auf {new_groups}{reason}" -#: rcgcdw.py:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "Schützte {target}" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Änderte den Schutzstatus von {article}" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "Entfernte den Schutz von {article}" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, 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:709 +#: rcgcdw.py:829 #, 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:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "Stellte {article} wieder her" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "Änderte die Sichtbarkeit eines Logbucheintrags" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "Importierte Interwiki" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Änderte Missbrauchsfilter {number}" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Erstellte Missbrauchsfilter {number}" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Vereinigte Versionen von {article} in {dest}" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "Fügte ein Interwiki-Präfix hinzu" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Präfix: {prefix}, URL: {website} | {desc}" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "Änderte ein Interwiki-Präfix" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "Entfernte ein Interwiki-Präfix" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Präfix: {prefix} | {desc}" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Änderte das Inhaltsmodell von {article}" -#: rcgcdw.py:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Modell geändert von {old} zu {new}: {reason}" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edited the sprite for {article}" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Created the sprite sheet for {article}" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Edited the slice for {article}" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, python-brace-format +msgid "Created the Cargo table \"{table}\"" +msgstr "Erstellte die Cargo-Tabelle „{table}“" + +#: rcgcdw.py:891 +#, python-brace-format +msgid "Deleted the Cargo table \"{table}\"" +msgstr "Löschte die Cargo-Tabelle „{table}“" + +#: rcgcdw.py:898 +#, python-brace-format +msgid "Recreated the Cargo table \"{table}\"" +msgstr "Erstellte die Cargo-Tabelle „{table}“ neu" + +#: rcgcdw.py:905 +#, python-brace-format +msgid "Replaced the Cargo table \"{table}\"" +msgstr "Ersetzte die Cargo-Tabelle „{table}“" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Erstellte die Markierung „{tag}“" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Löschte die Markierung „{tag}“" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Aktivierte die Markierung „{tag}“" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Deaktivierte die Markierung „{tag}“" -#: rcgcdw.py:784 +#: rcgcdw.py:923 msgid "Action has been hidden by administration." msgstr "Aktion wurde versteckt" -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "Markierungen" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "**Hinzugefügt:** " -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr " und {} mehr\n" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "**Entfernt:** " -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr " und {} mehr" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "Geänderte Kategorien" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "~~versteckt~~" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "versteckt" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "{value} (vgl. {avg})" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "Tägliche Übersicht" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "Keine Aktivität" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " (eine Aktion)" msgstr[1] " ({} Aktionen)" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " (eine Änderung)" msgstr[1] " ({} Änderungen)" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC (eine Aktion)" msgstr[1] " UTC ({} Aktionen)" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "Keine Aktivität" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Aktivster Benutzer" msgstr[1] "Aktivste Benutzer" -#: rcgcdw.py:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Meist bearbeiteter Artikel" msgstr[1] "Meist bearbeitete Artikel" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "Bearbeitungen" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "Neue Dateien" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "Admin-Aktionen" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "Bytes geändert" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "Neue Artikel" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "Einzelne Autoren" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Aktivste Stunde" msgstr[1] "Aktivste Stunden" -#: rcgcdw.py:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "Tageswert" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "{wiki} scheint wieder erreichbar zu sein." -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "Verbindungsstatus" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "Das {wiki} scheint unerreichbar zu sein." -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "Direktor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "Bot" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "editor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "Direktor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "Administrator" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "Bürokrat" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "reviewer" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "autoreview" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "autopatrol" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "Wiki Guardian" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "Sekunde" msgstr[1] "Sekunden" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "Minute" msgstr[1] "Minuten" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "Stunde" msgstr[1] "Stunden" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "Tag" msgstr[1] "Tage" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "Woche" msgstr[1] "Wochen" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "Monat" msgstr[1] "Monate" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "Jahr" msgstr[1] "Jahre" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "Jahrtausend" msgstr[1] "Jahrtausende" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "Jahrzehnt" msgstr[1] "Jahrzehnte" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "Jahrhundert" diff --git a/locale/en/LC_MESSAGES/rcgcdw.mo b/locale/en/LC_MESSAGES/rcgcdw.mo index 85f6ce3..3ad4cda 100644 Binary files a/locale/en/LC_MESSAGES/rcgcdw.mo and b/locale/en/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/en/LC_MESSAGES/rcgcdw.po b/locale/en/LC_MESSAGES/rcgcdw.po index d246650..b2c4f6f 100644 --- a/locale/en/LC_MESSAGES/rcgcdw.po +++ b/locale/en/LC_MESSAGES/rcgcdw.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" -"PO-Revision-Date: 2019-08-10 17:08+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" +"PO-Revision-Date: 2020-03-17 20:55+0100\n" "Last-Translator: Frisk \n" "Language-Team: \n" "Language: en\n" @@ -15,70 +15,70 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "Location" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "About me" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "Google link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "Facebook link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "Twitter link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "Reddit link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "Twitch link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "PSN link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "VK link" -#: rcgcdw.py:69 -msgid "XVL link" -msgstr "XVL link" +#: rcgcdw.py:71 +msgid "XBL link" +msgstr "XBL link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "Steam link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "Discord handle" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "Battle.net handle" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "Unknown" -#: rcgcdw.py:92 +#: rcgcdw.py:174 msgid "unknown" msgstr "unknown" -#: rcgcdw.py:162 +#: rcgcdw.py:244 #, python-brace-format msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" @@ -87,7 +87,7 @@ msgstr "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" "{edit_size})" -#: rcgcdw.py:164 +#: rcgcdw.py:246 #, python-brace-format msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" @@ -96,12 +96,22 @@ msgstr "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" "{edit_size})" -#: rcgcdw.py:168 +#: rcgcdw.py:249 #, python-brace-format msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgstr "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" -#: rcgcdw.py:176 +#: rcgcdw.py:256 +#, python-brace-format +#| msgid "" +#| "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" +#| "{comment}" +msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" + +#: rcgcdw.py:260 #, python-brace-format msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" @@ -110,12 +120,12 @@ msgstr "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" "{comment}" -#: rcgcdw.py:180 +#: rcgcdw.py:263 #, python-brace-format msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgstr "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" -#: rcgcdw.py:185 +#: rcgcdw.py:267 #, python-brace-format msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" @@ -124,15 +134,15 @@ msgstr "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" "({page_link}){comment}" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "without making a redirect" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "with a redirect" -#: rcgcdw.py:191 +#: rcgcdw.py:272 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" @@ -141,7 +151,7 @@ msgstr "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" "({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:198 +#: rcgcdw.py:278 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " @@ -150,7 +160,7 @@ msgstr "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " "[{target}]({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, python-brace-format msgid "" "[{author}]({author_url}) moved protection settings from {redirect}*{article}" @@ -159,220 +169,239 @@ msgstr "" "[{author}]({author_url}) moved protection settings from {redirect}*{article}" "* to [{target}]({target_url}){comment}" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "infinity and beyond" -#: rcgcdw.py:231 -#, python-brace-format -msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" -msgstr "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +#: rcgcdw.py:311 +msgid " on pages: " +msgstr " on pages: " -#: rcgcdw.py:236 -#, python-brace-format -msgid "" -"[{author}]({author_url}) changed block settings for [{blocked_user}]" -"({user_url}){comment}" -msgstr "" -"[{author}]({author_url}) changed block settings for [{blocked_user}]" -"({user_url}){comment}" - -#: rcgcdw.py:241 -#, python-brace-format -msgid "" -"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" -msgstr "" -"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" - -#: rcgcdw.py:245 -#, python-brace-format -msgid "" -"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" -msgstr "" -"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" - -#: rcgcdw.py:245 -msgid "their own profile" -msgstr "their own profile" - -#: rcgcdw.py:250 -#, python-brace-format -msgid "" -"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " -"profile" -msgstr "" -"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " -"profile" - -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 -msgid "their own" -msgstr "their own" - -#: rcgcdw.py:258 -#, python-brace-format -msgid "" -"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" -msgstr "" -"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" - -#: rcgcdw.py:263 -#, python-brace-format -msgid "[{author}]({author_url}) deleted a comment on {target} profile" -msgstr "[{author}]({author_url}) deleted a comment on {target} profile" - -#: rcgcdw.py:270 -#, python-brace-format -msgid "[{target}]({target_url})'s" -msgstr "[{target}]({target_url})'s" - -#: rcgcdw.py:270 -#, python-brace-format -msgid "[their own]({target_url})" -msgstr "[their own]({target_url})" - -#: rcgcdw.py:271 -#, python-brace-format -msgid "" -"[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" -msgstr "" -"[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" - -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 -msgid "none" -msgstr "none" - -#: rcgcdw.py:293 rcgcdw.py:662 -msgid "System" -msgstr "System" - -#: rcgcdw.py:299 -#, python-brace-format -msgid "" -"[{author}]({author_url}) protected [{article}]({article_url}) with the " -"following settings: {settings}{comment}" -msgstr "" -"[{author}]({author_url}) protected [{article}]({article_url}) with the " -"following settings: {settings}{comment}" - -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 -msgid " [cascading]" -msgstr " [cascading]" - -#: rcgcdw.py:307 -#, python-brace-format -msgid "" -"[{author}]({author_url}) modified protection settings of [{article}]" -"({article_url}) to: {settings}{comment}" -msgstr "" -"[{author}]({author_url}) modified protection settings of [{article}]" -"({article_url}) to: {settings}{comment}" - -#: rcgcdw.py:315 -#, python-brace-format -msgid "" -"[{author}]({author_url}) removed protection from [{article}]({article_url})" -"{comment}" -msgstr "" -"[{author}]({author_url}) removed protection from [{article}]({article_url})" -"{comment}" +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr " and namespaces: " #: rcgcdw.py:320 -#, python-brace-format -msgid "" -"[{author}]({author_url}) changed visibility of revision on page [{article}]" -"({article_url}){comment}" -msgid_plural "" -"[{author}]({author_url}) changed visibility of {amount} revisions on page " -"[{article}]({article_url}){comment}" -msgstr[0] "" -"[{author}]({author_url}) changed visibility of revision on page [{article}]" -"({article_url}){comment}" -msgstr[1] "" -"[{author}]({author_url}) changed visibility of {amount} revisions on page " -"[{article}]({article_url}){comment}" - -#: rcgcdw.py:326 -#, python-brace-format -msgid "" -"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " -"revision{comment}" -msgid_plural "" -"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " -"revisions{comment}" -msgstr[0] "" -"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " -"revision{comment}" -msgstr[1] "" -"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " -"revisions{comment}" +msgid " on namespaces: " +msgstr " on namespaces: " #: rcgcdw.py:332 #, python-brace-format -msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" -msgstr "[{author}]({author_url}) restored [{article}]({article_url}){comment}" - -#: rcgcdw.py:334 -#, python-brace-format -msgid "[{author}]({author_url}) changed visibility of log events{comment}" -msgstr "[{author}]({author_url}) changed visibility of log events{comment}" +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" +msgstr "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" #: rcgcdw.py:336 #, python-brace-format -msgid "[{author}]({author_url}) imported interwiki{comment}" -msgstr "[{author}]({author_url}) imported interwiki{comment}" +msgid "" +"[{author}]({author_url}) changed block settings for [{blocked_user}]" +"({user_url}){comment}" +msgstr "" +"[{author}]({author_url}) changed block settings for [{blocked_user}]" +"({user_url}){comment}" -#: rcgcdw.py:339 +#: rcgcdw.py:340 #, python-brace-format msgid "" -"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" +"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" msgstr "" -"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" +"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" -#: rcgcdw.py:342 +#: rcgcdw.py:343 #, python-brace-format msgid "" -"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" +"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" msgstr "" -"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" +"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" -#: rcgcdw.py:348 +#: rcgcdw.py:343 +msgid "their own profile" +msgstr "their own profile" + +#: rcgcdw.py:346 #, python-brace-format msgid "" -"[{author}]({author_url}) merged revision histories of [{article}]" -"({article_url}) into [{dest}]({dest_url}){comment}" +"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " +"profile" msgstr "" -"[{author}]({author_url}) merged revision histories of [{article}]" -"({article_url}) into [{dest}]({dest_url}){comment}" +"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " +"profile" + +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 +msgid "their own" +msgstr "their own" #: rcgcdw.py:352 #, python-brace-format msgid "" -"[{author}]({author_url}) added an entry to the [interwiki table]" -"({table_url}) pointing to {website} with {prefix} prefix" +"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" msgstr "" -"[{author}]({author_url}) added an entry to the [interwiki table]" -"({table_url}) pointing to {website} with {prefix} prefix" +"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" #: rcgcdw.py:358 #, python-brace-format -msgid "" -"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " -"pointing to {website} with {prefix} prefix" -msgstr "" -"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " -"pointing to {website} with {prefix} prefix" - -#: rcgcdw.py:364 -#, python-brace-format -msgid "" -"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" -msgstr "" -"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "[{author}]({author_url}) purged a comment on {target} profile" #: rcgcdw.py:368 #, python-brace-format +msgid "[{author}]({author_url}) deleted a comment on {target} profile" +msgstr "[{author}]({author_url}) deleted a comment on {target} profile" + +#: rcgcdw.py:374 +#, python-brace-format +msgid "[{target}]({target_url})'s" +msgstr "[{target}]({target_url})'s" + +#: rcgcdw.py:374 +#, python-brace-format +msgid "[their own]({target_url})" +msgstr "[their own]({target_url})" + +#: rcgcdw.py:375 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" +msgstr "" +"[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" + +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 +msgid "none" +msgstr "none" + +#: rcgcdw.py:397 rcgcdw.py:787 +msgid "System" +msgstr "System" + +#: rcgcdw.py:402 +#, python-brace-format +msgid "" +"[{author}]({author_url}) protected [{article}]({article_url}) with the " +"following settings: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) protected [{article}]({article_url}) with the " +"following settings: {settings}{comment}" + +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 +msgid " [cascading]" +msgstr " [cascading]" + +#: rcgcdw.py:409 +#, python-brace-format +msgid "" +"[{author}]({author_url}) modified protection settings of [{article}]" +"({article_url}) to: {settings}{comment}" +msgstr "" +"[{author}]({author_url}) modified protection settings of [{article}]" +"({article_url}) to: {settings}{comment}" + +#: rcgcdw.py:416 +#, python-brace-format +msgid "" +"[{author}]({author_url}) removed protection from [{article}]({article_url})" +"{comment}" +msgstr "" +"[{author}]({author_url}) removed protection from [{article}]({article_url})" +"{comment}" + +#: rcgcdw.py:420 +#, python-brace-format +msgid "" +"[{author}]({author_url}) changed visibility of revision on page [{article}]" +"({article_url}){comment}" +msgid_plural "" +"[{author}]({author_url}) changed visibility of {amount} revisions on page " +"[{article}]({article_url}){comment}" +msgstr[0] "" +"[{author}]({author_url}) changed visibility of revision on page [{article}]" +"({article_url}){comment}" +msgstr[1] "" +"[{author}]({author_url}) changed visibility of {amount} revisions on page " +"[{article}]({article_url}){comment}" + +#: rcgcdw.py:425 +#, python-brace-format +msgid "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revision{comment}" +msgid_plural "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revisions{comment}" +msgstr[0] "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revision{comment}" +msgstr[1] "" +"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " +"revisions{comment}" + +#: rcgcdw.py:430 +#, python-brace-format +msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" +msgstr "[{author}]({author_url}) restored [{article}]({article_url}){comment}" + +#: rcgcdw.py:432 +#, python-brace-format +msgid "[{author}]({author_url}) changed visibility of log events{comment}" +msgstr "[{author}]({author_url}) changed visibility of log events{comment}" + +#: rcgcdw.py:434 +#, python-brace-format +msgid "[{author}]({author_url}) imported interwiki{comment}" +msgstr "[{author}]({author_url}) imported interwiki{comment}" + +#: rcgcdw.py:437 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" + +#: rcgcdw.py:440 +#, python-brace-format +msgid "" +"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" +msgstr "" +"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" + +#: rcgcdw.py:444 +#, python-brace-format +msgid "" +"[{author}]({author_url}) merged revision histories of [{article}]" +"({article_url}) into [{dest}]({dest_url}){comment}" +msgstr "" +"[{author}]({author_url}) merged revision histories of [{article}]" +"({article_url}) into [{dest}]({dest_url}){comment}" + +#: rcgcdw.py:448 +#, python-brace-format +msgid "" +"[{author}]({author_url}) added an entry to the [interwiki table]" +"({table_url}) pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) added an entry to the [interwiki table]" +"({table_url}) pointing to {website} with {prefix} prefix" + +#: rcgcdw.py:454 +#, python-brace-format +msgid "" +"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " +"pointing to {website} with {prefix} prefix" +msgstr "" +"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " +"pointing to {website} with {prefix} prefix" + +#: rcgcdw.py:460 +#, python-brace-format +msgid "" +"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" +msgstr "" +"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" + +#: rcgcdw.py:463 +#, python-brace-format msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" "({article_url}) from {old} to {new}{comment}" @@ -380,14 +409,14 @@ msgstr "" "[{author}]({author_url}) changed the content model of the page [{article}]" "({article_url}) from {old} to {new}{comment}" -#: rcgcdw.py:373 +#: rcgcdw.py:467 #, python-brace-format msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, python-brace-format msgid "" "[{author}]({author_url}) created the sprite sheet for [{article}]" @@ -396,89 +425,115 @@ msgstr "" "[{author}]({author_url}) created the sprite sheet for [{article}]" "({article_url})" -#: rcgcdw.py:381 +#: rcgcdw.py:473 #, python-brace-format msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" -#: rcgcdw.py:384 +#: rcgcdw.py:478 +#, python-brace-format +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) created the Cargo table \"{table}\"" + +#: rcgcdw.py:480 +#, python-brace-format +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) deleted the Cargo table \"{table}\"" + +#: rcgcdw.py:485 +#, python-brace-format +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) recreated the Cargo table \"{table}\"" + +#: rcgcdw.py:490 +#, python-brace-format +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) replaced the Cargo table \"{table}\"" + +#: rcgcdw.py:493 #, python-brace-format msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:388 +#: rcgcdw.py:497 #, python-brace-format msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:392 +#: rcgcdw.py:501 #, python-brace-format msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:395 +#: rcgcdw.py:504 #, python-brace-format msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:397 +#: rcgcdw.py:506 msgid "An action has been hidden by administration." msgstr "An action has been hidden by administration." -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "No description provided" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "m" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "b" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "__Only whitespace__" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "Removed" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "Added" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "Options" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([preview]({link}) | [undo]({undolink}))" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Uploaded a new version of {name}" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +#| msgid "Uploaded a new version of {name}" +msgid "Reverted a version of {name}" +msgstr "Reverted a version of {name}" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "Uploaded {name}" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "**No license!**" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" @@ -486,477 +541,521 @@ msgstr "" "\n" "License: {}" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "([preview]({link}))" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "Deleted page {article}" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Deleted redirect {article} by overwriting" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "No redirect has been made" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "A redirect has been made" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Moved {redirect}{article} to {target}" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "Moved {redirect}{article} to {title} over redirect" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Moved protection settings from {redirect}{article} to {title}" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "Blocked from editing the following pages: " + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "Blocked from editing pages on following namespaces: " + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "Partial block details" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Blocked {blocked_user} for {time}" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Changed block settings for {blocked_user}" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Unblocked {blocked_user}" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Left a comment on {target}'s profile" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "Left a comment on their own profile" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Replied to a comment on {target}'s profile" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "Replied to a comment on their own profile" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Edited a comment on {target}'s profile" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "Edited a comment on their own profile" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Edited {target}'s profile" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "Edited their own profile" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "Cleared the {field} field" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "{field} field changed to: {desc}" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "Purged a comment on {target}'s profile" + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Deleted a comment on {target}'s profile" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Changed group membership for {target}" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} got autopromoted to a new usergroup" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, 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:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "Protected {target}" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Changed protection level for {article}" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "Removed protection from {article}" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, 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:709 +#: rcgcdw.py:829 #, 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:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "Restored {article}" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "Changed visibility of log events" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "Imported interwiki" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Edited abuse filter number {number}" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Created abuse filter number {number}" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Merged revision histories of {article} into {dest}" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "Added an entry to the interwiki table" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Prefix: {prefix}, website: {website} | {desc}" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "Edited an entry in interwiki table" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "Deleted an entry in interwiki table" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Prefix: {prefix} | {desc}" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Changed the content model of the page {article}" -#: rcgcdw.py:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Model changed from {old} to {new}: {reason}" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edited the sprite for {article}" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Created the sprite sheet for {article}" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Edited the slice for {article}" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, python-brace-format +msgid "Created the Cargo table \"{table}\"" +msgstr "Created the Cargo table \"{table}\"" + +#: rcgcdw.py:891 +#, python-brace-format +msgid "Deleted the Cargo table \"{table}\"" +msgstr "Deleted the Cargo table \"{table}\"" + +#: rcgcdw.py:898 +#, python-brace-format +msgid "Recreated the Cargo table \"{table}\"" +msgstr "Recreated the Cargo table \"{table}\"" + +#: rcgcdw.py:905 +#, python-brace-format +msgid "Replaced the Cargo table \"{table}\"" +msgstr "Replaced the Cargo table \"{table}\"" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Created a tag \"{tag}\"" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Deleted a tag \"{tag}\"" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Activated a tag \"{tag}\"" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Deactivated a tag \"{tag}\"" -#: rcgcdw.py:784 +#: rcgcdw.py:923 msgid "Action has been hidden by administration." msgstr "Action has been hidden by administration." -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "Tags" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "**Added**: " -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr " and {} more\n" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "**Removed**: " -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr " and {} more" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "Changed categories" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "~~hidden~~" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "hidden" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "{value} (avg. {avg})" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "Daily overview" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "No activity" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} action)" msgstr[1] " ({} actions)" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} edit)" msgstr[1] " ({} edits)" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} action)" msgstr[1] " UTC ({} actions)" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "But nobody came" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Most active user" msgstr[1] "Most active users" -#: rcgcdw.py:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Most edited article" msgstr[1] "Most edited articles" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "Edits made" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "New files" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "Admin actions" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "Bytes changed" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "New articles" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "Unique contributors" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Most active hour" msgstr[1] "Most active hours" -#: rcgcdw.py:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "Day score" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "Connection to {wiki} seems to be stable now." -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "Connection status" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} seems to be down or unreachable." -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "Director" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "Bot" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "Editor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "Directors" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "Administrator" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "Bureaucrat" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "Reviewer" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "Autoreview" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "Autopatrol" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "Wiki guardian" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "second" msgstr[1] "seconds" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "minute" msgstr[1] "minutes" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "hour" msgstr[1] "hours" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "day" msgstr[1] "days" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "week" msgstr[1] "weeks" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "month" msgstr[1] "months" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "year" msgstr[1] "years" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "millennium" msgstr[1] "millennia" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "decade" msgstr[1] "decades" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "century" msgstr[1] "centuries" +#~ msgid "* and namespaces: *" +#~ msgstr "* and namespaces: *" + #~ msgid "Comment content" #~ msgstr "Comment content" diff --git a/locale/fr/LC_MESSAGES/rcgcdw.mo b/locale/fr/LC_MESSAGES/rcgcdw.mo index 19a5799..9ee3c63 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 b90df3c..ed8d4b5 100644 --- a/locale/fr/LC_MESSAGES/rcgcdw.po +++ b/locale/fr/LC_MESSAGES/rcgcdw.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" -"PO-Revision-Date: 2019-08-10 17:08+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" +"PO-Revision-Date: 2020-03-17 21:40+0100\n" "Last-Translator: Frisk \n" "Language-Team: \n" "Language: fr\n" @@ -15,134 +15,154 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "X-Poedit-Basepath: ../../..\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Poedit-SearchPath-0: rcgcdw.pot\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "Emplacement" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "À propos de moi" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "Lien Google" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "Lien Facebook" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "Lien Twitter" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "Lien Reddit" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "Lien Twitch" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "Lien PSN" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "Lien VK" -#: rcgcdw.py:69 -msgid "XVL link" -msgstr "Lien XVL" +#: rcgcdw.py:71 +msgid "XBL link" +msgstr "Lien XBL" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "Lien Steam" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "Inconnu" -#: rcgcdw.py:92 +#: rcgcdw.py:174 #, fuzzy #| msgid "Unknown" msgid "unknown" msgstr "Inconnu" -#: rcgcdw.py:162 -#, python-brace-format +#: rcgcdw.py:244 +#, fuzzy, python-brace-format +#| msgid "Edited a comment on {target}'s profile" msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" "{edit_size})" -msgstr "" +msgstr "Édition d'un commentaire sur le profil de {target}" -#: rcgcdw.py:164 -#, python-brace-format +#: rcgcdw.py:246 +#, fuzzy, python-brace-format +#| msgid "Created the sprite sheet for {article}" msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" "{edit_size})" -msgstr "" +msgstr "Création d'une feuille de sprite pour {article}" -#: rcgcdw.py:168 -#, python-brace-format +#: rcgcdw.py:249 +#, fuzzy, python-brace-format +#| msgid "Changed visibility of log events" msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" -msgstr "" +msgstr "Modification de la visibilité d'évènements des journaux" -#: rcgcdw.py:176 +#: rcgcdw.py:256 #, python-brace-format msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" +"[{author}]({author_url}) a rétabli une version de [{file}]({file_link})" +"{comment}" + +#: rcgcdw.py:260 +#, fuzzy, python-brace-format +#| msgid "Changed visibility of revision on page {article} " +#| msgid_plural "Changed visibility of {amount} revisions on page {article} " +msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" "{comment}" -msgstr "" +msgstr "Modification de la visibilité d'une révision de la page {article} " -#: rcgcdw.py:180 -#, python-brace-format +#: rcgcdw.py:263 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" -msgstr "" +msgstr "[{author}]({author_url}) a supprimé le tableau Cargo « {table} »" -#: rcgcdw.py:185 -#, python-brace-format +#: rcgcdw.py:267 +#, fuzzy, python-brace-format +#| msgid "Moved protection settings from {redirect}{article} to {title}" msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" "({page_link}){comment}" msgstr "" +"Transfert des paramètres de protection de {redirect}{article} vers {title}" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "" -#: rcgcdw.py:191 -#, python-brace-format +#: rcgcdw.py:272 +#, fuzzy, python-brace-format +#| msgid "Moved protection settings from {redirect}{article} to {title}" msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" "({target_url}) {made_a_redirect}{comment}" msgstr "" +"Transfert des paramètres de protection de {redirect}{article} vers {title}" -#: rcgcdw.py:198 -#, python-brace-format +#: rcgcdw.py:278 +#, fuzzy, python-brace-format +#| msgid "Moved protection settings from {redirect}{article} to {title}" msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " "[{target}]({target_url}) {made_a_redirect}{comment}" msgstr "" +"Transfert des paramètres de protection de {redirect}{article} vers {title}" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, fuzzy, python-brace-format #| msgid "Moved protection settings from {redirect}{article} to {title}" msgid "" @@ -151,17 +171,31 @@ msgid "" msgstr "" "Transfert des paramètres de protection de {redirect}{article} vers {title}" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "toujours" -#: rcgcdw.py:231 -#, python-brace-format -msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" -msgstr "" +#: rcgcdw.py:311 +msgid " on pages: " +msgstr " on pages: " -#: rcgcdw.py:236 +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr " et ces espaces de noms: " + +#: rcgcdw.py:320 +msgid " on namespaces: " +msgstr " on namespaces: " + +#: rcgcdw.py:332 +#, fuzzy, python-brace-format +#| msgid "Changed block settings for {blocked_user}" +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" +msgstr "Modification des paramètres de blocage pour {blocked_user}" + +#: rcgcdw.py:336 #, fuzzy, python-brace-format #| msgid "Changed block settings for {blocked_user}" msgid "" @@ -169,26 +203,27 @@ msgid "" "({user_url}){comment}" msgstr "Modification des paramètres de blocage pour {blocked_user}" -#: rcgcdw.py:241 -#, python-brace-format +#: rcgcdw.py:340 +#, fuzzy, python-brace-format +#| msgid "Changed block settings for {blocked_user}" msgid "" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" -msgstr "" +msgstr "Modification des paramètres de blocage pour {blocked_user}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, fuzzy, python-brace-format #| msgid "Left a comment on {target}'s profile" msgid "" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile" msgstr "Ajout d'un commentaire sur le profil de {target}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, fuzzy #| msgid "Edited their own profile" msgid "their own profile" msgstr "Modification de son propre profil" -#: rcgcdw.py:250 +#: rcgcdw.py:346 #, fuzzy, python-brace-format #| msgid "Replied to a comment on {target}'s profile" msgid "" @@ -196,73 +231,86 @@ msgid "" "profile" msgstr "Réponse à un commentaire sur le profil de {target}" -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 +#, fuzzy +#| msgid "Edited their own profile" msgid "their own" -msgstr "" +msgstr "Modification de son propre profil" -#: rcgcdw.py:258 +#: rcgcdw.py:352 #, fuzzy, python-brace-format #| msgid "Edited a comment on {target}'s profile" msgid "" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" msgstr "Édition d'un commentaire sur le profil de {target}" -#: rcgcdw.py:263 +#: rcgcdw.py:358 +#, python-brace-format +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "" +"[{author}]({author_url}) a retiré un commentaire sur le profil de {target}." + +#: rcgcdw.py:368 #, fuzzy, python-brace-format #| msgid "Deleted a comment on {target}'s profile" msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgstr "Retrait d'un commentaire sur le profil de {target}" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[{target}]({target_url})'s" msgstr "" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[their own]({target_url})" msgstr "" -#: rcgcdw.py:271 -#, python-brace-format +#: rcgcdw.py:375 +#, fuzzy, python-brace-format +#| msgid "Deleted a comment on {target}'s profile" msgid "" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" -msgstr "" +msgstr "Retrait d'un commentaire sur le profil de {target}" -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 msgid "none" msgstr "aucun" -#: rcgcdw.py:293 rcgcdw.py:662 +#: rcgcdw.py:397 rcgcdw.py:787 msgid "System" msgstr "Système" -#: rcgcdw.py:299 -#, python-brace-format +#: rcgcdw.py:402 +#, fuzzy, python-brace-format +#| msgid "Changed block settings for {blocked_user}" msgid "" "[{author}]({author_url}) protected [{article}]({article_url}) with the " "following settings: {settings}{comment}" -msgstr "" +msgstr "Modification des paramètres de blocage pour {blocked_user}" -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 msgid " [cascading]" msgstr " [protection en cascade]" -#: rcgcdw.py:307 -#, python-brace-format +#: rcgcdw.py:409 +#, fuzzy, python-brace-format +#| msgid "Moved protection settings from {redirect}{article} to {title}" msgid "" "[{author}]({author_url}) modified protection settings of [{article}]" "({article_url}) to: {settings}{comment}" msgstr "" +"Transfert des paramètres de protection de {redirect}{article} vers {title}" -#: rcgcdw.py:315 -#, python-brace-format +#: rcgcdw.py:416 +#, fuzzy, python-brace-format +#| msgid "Created the sprite sheet for {article}" msgid "" "[{author}]({author_url}) removed protection from [{article}]({article_url})" "{comment}" -msgstr "" +msgstr "Création d'une feuille de sprite pour {article}" -#: rcgcdw.py:320 +#: rcgcdw.py:420 #, fuzzy, python-brace-format #| msgid "Changed visibility of revision on page {article} " #| msgid_plural "Changed visibility of {amount} revisions on page {article} " @@ -276,89 +324,100 @@ 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:326 -#, python-brace-format +#: rcgcdw.py:425 +#, fuzzy, python-brace-format +#| msgid "Changed block settings for {blocked_user}" msgid "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " "revision{comment}" msgid_plural "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " "revisions{comment}" -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Modification des paramètres de blocage pour {blocked_user}" +msgstr[1] "Modification des paramètres de blocage pour {blocked_user}" -#: rcgcdw.py:332 -#, python-brace-format +#: rcgcdw.py:430 +#, fuzzy, python-brace-format +#| msgid "Changed visibility of revision on page {article} " +#| msgid_plural "Changed visibility of {amount} revisions on page {article} " msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" -msgstr "" +msgstr "Modification de la visibilité d'une révision de la page {article} " -#: rcgcdw.py:334 +#: rcgcdw.py:432 #, fuzzy, python-brace-format #| msgid "Changed visibility of log events" msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgstr "Modification de la visibilité d'évènements des journaux" -#: rcgcdw.py:336 -#, python-brace-format +#: rcgcdw.py:434 +#, fuzzy, python-brace-format +#| msgid "Changed visibility of log events" msgid "[{author}]({author_url}) imported interwiki{comment}" -msgstr "" +msgstr "Modification de la visibilité d'évènements des journaux" -#: rcgcdw.py:339 +#: rcgcdw.py:437 #, fuzzy, python-brace-format #| msgid "Edited abuse filter number {number}" msgid "" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" msgstr "Édition de la règle {number} du filtre anti-abus" -#: rcgcdw.py:342 +#: rcgcdw.py:440 #, fuzzy, python-brace-format #| msgid "Edited abuse filter number {number}" msgid "" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" msgstr "Édition de la règle {number} du filtre anti-abus" -#: rcgcdw.py:348 -#, python-brace-format +#: rcgcdw.py:444 +#, fuzzy, python-brace-format +#| msgid "Moved protection settings from {redirect}{article} to {title}" msgid "" "[{author}]({author_url}) merged revision histories of [{article}]" "({article_url}) into [{dest}]({dest_url}){comment}" msgstr "" +"Transfert des paramètres de protection de {redirect}{article} vers {title}" -#: rcgcdw.py:352 -#, python-brace-format +#: rcgcdw.py:448 +#, fuzzy, python-brace-format +#| msgid "Deleted an entry in interwiki table" msgid "" "[{author}]({author_url}) added an entry to the [interwiki table]" "({table_url}) pointing to {website} with {prefix} prefix" -msgstr "" +msgstr "Retrait d'une entrée de la table interwiki" -#: rcgcdw.py:358 -#, python-brace-format +#: rcgcdw.py:454 +#, fuzzy, python-brace-format +#| msgid "Deleted an entry in interwiki table" msgid "" "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " "pointing to {website} with {prefix} prefix" -msgstr "" +msgstr "Retrait d'une entrée de la table interwiki" -#: rcgcdw.py:364 +#: rcgcdw.py:460 #, fuzzy, python-brace-format #| msgid "Deleted an entry in interwiki table" msgid "" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" msgstr "Retrait d'une entrée de la table interwiki" -#: rcgcdw.py:368 -#, python-brace-format +#: rcgcdw.py:463 +#, fuzzy, python-brace-format +#| msgid "Changed visibility of revision on page {article} " +#| msgid_plural "Changed visibility of {amount} revisions on page {article} " msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" "({article_url}) from {old} to {new}{comment}" -msgstr "" +msgstr "Modification de la visibilité d'une révision de la page {article} " -#: rcgcdw.py:373 -#, python-brace-format +#: rcgcdw.py:467 +#, fuzzy, python-brace-format +#| msgid "Created the sprite sheet for {article}" msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" -msgstr "" +msgstr "Création d'une feuille de sprite pour {article}" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, fuzzy, python-brace-format #| msgid "Created the sprite sheet for {article}" msgid "" @@ -366,90 +425,120 @@ msgid "" "({article_url})" msgstr "Création d'une feuille de sprite pour {article}" -#: rcgcdw.py:381 -#, python-brace-format +#: rcgcdw.py:473 +#, fuzzy, python-brace-format +#| msgid "Created the sprite sheet for {article}" msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" -msgstr "" +msgstr "Création d'une feuille de sprite pour {article}" -#: rcgcdw.py:384 +#: rcgcdw.py:478 #, python-brace-format +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) a créé le tableau Cargo « {table} »" + +#: rcgcdw.py:480 +#, python-brace-format +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) a supprimé le tableau Cargo « {table} »" + +#: rcgcdw.py:485 +#, python-brace-format +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) a recréé le tableau Cargo « {table} »" + +#: rcgcdw.py:490 +#, python-brace-format +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) a remplacé le tableau cargo « {table} »" + +#: rcgcdw.py:493 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" -msgstr "" +msgstr "[{author}]({author_url}) a créé le tableau Cargo « {table} »" -#: rcgcdw.py:388 -#, python-brace-format +#: rcgcdw.py:497 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" -msgstr "" +msgstr "[{author}]({author_url}) a supprimé le tableau Cargo « {table} »" -#: rcgcdw.py:392 -#, python-brace-format +#: rcgcdw.py:501 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" -msgstr "" +msgstr "[{author}]({author_url}) a créé le tableau Cargo « {table} »" -#: rcgcdw.py:395 -#, python-brace-format +#: rcgcdw.py:504 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" -msgstr "" +msgstr "[{author}]({author_url}) a recréé le tableau Cargo « {table} »" -#: rcgcdw.py:397 +#: rcgcdw.py:506 #, fuzzy #| msgid "Action has been hidden by Gamepedia staff." msgid "An action has been hidden by administration." msgstr "L'action a été masquée par le personnel de Gamepedia." -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "Aucune description" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "m" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "b" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "__Espaces uniquement__" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "Retirés" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "Ajoutés" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "Options" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([Aperçu]({link}) | [Annuler]({undolink}))" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Téléversement d'une nouvelle version de {name}" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +msgid "Reverted a version of {name}" +msgstr "Rétablissement d'une version de {name}" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "Téléversement de {name}" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "**Aucune license!**" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" @@ -457,142 +546,159 @@ msgstr "" "\n" "License: {}" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "([Aperçu]({link}))" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "Suppression de la page {article}" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Suppression par écrasement de la redirection {article}" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "Aucune redirection créée" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "Une redirection a été créée" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Déplacement de {redirect}{article} vers {target}" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "Déplacement de {redirect}{article} vers {title} par redirection" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "" "Transfert des paramètres de protection de {redirect}{article} vers {title}" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "Ne peut plus modifier les pages suivantes : " + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "Ne peut plus modifier les pages des espaces de noms suivants : " + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "Détails partiaux du blocage" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "{blocked_user} a été bloqué pour {time}" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Modification des paramètres de blocage pour {blocked_user}" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "{blocked_user} a été débloqué" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Ajout d'un commentaire sur le profil de {target}" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "Ajout d'un commentaire sur son propre profil" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Réponse à un commentaire sur le profil de {target}" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "Réponse à un commentaire sur son propre profil" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Édition d'un commentaire sur le profil de {target}" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "Modification d'un commentaire sur son propre profil" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Modification du profil de {target}" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "Modification de son propre profil" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "{field} modifié pour: {desc}" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "Retrait d'un commentaire sur le profil de {target}." + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Retrait d'un commentaire sur le profil de {target}" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Modification des groupes pour {target}" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} a été auto-promu dans un nouveau groupe" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, 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:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "Protection de {target}" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Modification du niveau de protection de {article}" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "Retrait de la protection de {article}" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " @@ -600,334 +706,358 @@ 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:709 +#: rcgcdw.py:829 #, 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:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "Restauration de {article}" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "Modification de la visibilité d'évènements des journaux" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "Importation d'interwiki" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Édition de la règle {number} du filtre anti-abus" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, fuzzy, python-brace-format #| msgid "Edited abuse filter number {number}" msgid "Created abuse filter number {number}" msgstr "Édition de la règle {number} du filtre anti-abus" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Fusion de l'historique de {article} vers {dest}" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "Ajout d'une entrée à la table interwiki" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Préfixe: {prefix}, site: {website} | {desc}" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "Modification d'une entrée de la table interwiki" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "Retrait d'une entrée de la table interwiki" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Préfixe: {prefix} | {desc}" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, 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:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Modèle changé de {old} à {new}: {reason}" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Édition du sprite de {article}" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Création d'une feuille de sprite pour {article}" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Edited the slice for {article}" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, python-brace-format +msgid "Created the Cargo table \"{table}\"" +msgstr "Création du tableau Cargo « {table} »" + +#: rcgcdw.py:891 +#, python-brace-format +msgid "Deleted the Cargo table \"{table}\"" +msgstr "Suppression du tableau Cargo « {table} »" + +#: rcgcdw.py:898 +#, python-brace-format +msgid "Recreated the Cargo table \"{table}\"" +msgstr "Recréation du tableau Cargo « {table} »" + +#: rcgcdw.py:905 +#, python-brace-format +msgid "Replaced the Cargo table \"{table}\"" +msgstr "Remplacement du tableau Cargo « {table} »" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Création du tag « {tag} »" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Suppression du tag « {tag} »" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Activation du tag « {tag} »" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Désactivation du tag « {tag} »" -#: rcgcdw.py:784 +#: rcgcdw.py:923 #, fuzzy #| msgid "Action has been hidden by Gamepedia staff." msgid "Action has been hidden by administration." msgstr "L'action a été masquée par le personnel de Gamepedia." -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "Tags" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "**Ajoutées : ** " -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr " et {} autres\n" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "**Retirées : ** " -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr " et {} autres" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "Catégories modifiées" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "Résumé de la journée" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "Aucune activité" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} action)" msgstr[1] " ({} actions)" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} modification)" msgstr[1] " ({} modifications)" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} action)" msgstr[1] " UTC ({} actions)" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "Aucune activité" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Membre le plus actif" msgstr[1] "Membres les plus actifs" -#: rcgcdw.py:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Article le plus modifié" msgstr[1] "Articles les plus modifiés" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "Modifications effectuées" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "Nouveaux fichiers" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "Actions d'administrateur" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "Octets modifiés" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "Nouveaux articles" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "Contributeurs uniques" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Heure la plus active" msgstr[1] "Heures les plus actives" -#: rcgcdw.py:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "Score du jour" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "La connexion avec {wiki} semble stable maintenant." -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "Statut de connexion" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} semble être down ou inatteignable." -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "Directeur" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "Robot" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "editor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "Directeur" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "Administrateur" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "Bureaucrate" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "reviewer" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "autoreview" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "autopatrol" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "Gardien du wiki" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "seconde" msgstr[1] "secondes" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "minute" msgstr[1] "minutes" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "heure" msgstr[1] "heures" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "jour" msgstr[1] "jours" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "semaine" msgstr[1] "semaines" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "mois" msgstr[1] "mois" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "année" msgstr[1] "années" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "millénaire" msgstr[1] "millénaires" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "décennie" msgstr[1] "décennies" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "centenaire" diff --git a/locale/pl/LC_MESSAGES/rcgcdw.mo b/locale/pl/LC_MESSAGES/rcgcdw.mo index 7aaea2f..81f477b 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 047b5d6..7bd3d15 100644 --- a/locale/pl/LC_MESSAGES/rcgcdw.po +++ b/locale/pl/LC_MESSAGES/rcgcdw.po @@ -6,8 +6,8 @@ msgid "" msgstr "" "Project-Id-Version: RcGcDw\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" -"PO-Revision-Date: 2019-08-10 17:07+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" +"PO-Revision-Date: 2020-03-17 20:57+0100\n" "Last-Translator: Frisk \n" "Language-Team: \n" "Language: pl\n" @@ -15,71 +15,71 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: pygettext.py 1.5\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " "|| n%100>=20) ? 1 : 2);\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "Lokacja" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "O mnie" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "link Google" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "link Facebook" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "link Twitter" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "link Reddit" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "link Twitch" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "link PSN" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "link VK" -#: rcgcdw.py:69 -msgid "XVL link" -msgstr "link XVL" +#: rcgcdw.py:71 +msgid "XBL link" +msgstr "link XBL" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "link Steam" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "konto Discord" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "konto Battle.net" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "Nieznana" -#: rcgcdw.py:92 +#: rcgcdw.py:174 msgid "unknown" msgstr "nieznana sekcja" -#: rcgcdw.py:162 +#: rcgcdw.py:244 #, python-brace-format msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" @@ -88,7 +88,7 @@ msgstr "" "[{author}]({author_url}) editował(-a) [{article}]({edit_link}){comment} " "({sign}{edit_size})" -#: rcgcdw.py:164 +#: rcgcdw.py:246 #, python-brace-format msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" @@ -97,12 +97,19 @@ msgstr "" "[{author}]({author_url}) stworzył(-a) [{article}]({edit_link}){comment} " "({sign}{edit_size})" -#: rcgcdw.py:168 +#: rcgcdw.py:249 #, python-brace-format msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgstr "[{author}]({author_url}) przesłał(-a) [{file}]({file_link}){comment}" -#: rcgcdw.py:176 +#: rcgcdw.py:256 +#, python-brace-format +msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" +"[{author}]({author_url}) wycofał(-a) wersję [{file}]({file_link}){comment}" + +#: rcgcdw.py:260 #, python-brace-format msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" @@ -111,12 +118,12 @@ msgstr "" "[{author}]({author_url}) przesłał(-a) nową wersję [{file}]({file_link})" "{comment}" -#: rcgcdw.py:180 +#: rcgcdw.py:263 #, python-brace-format msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgstr "[{author}]({author_url}) usunął/usunęła [{page}]({page_link}){comment}" -#: rcgcdw.py:185 +#: rcgcdw.py:267 #, python-brace-format msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" @@ -125,15 +132,15 @@ msgstr "" "[{author}]({author_url}) usunął/usunęła przekierowanie przez nadpisanie " "[{page}]({page_link}){comment}" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "bez utworzenia przekierowania przekierowania" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "z przekierowaniem" -#: rcgcdw.py:191 +#: rcgcdw.py:272 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" @@ -142,7 +149,7 @@ msgstr "" "[{author}]({author_url}) przeniósł/przeniosła {redirect}*{article}* do " "[{target}]({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:198 +#: rcgcdw.py:278 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " @@ -151,7 +158,7 @@ msgstr "" "[{author}]({author_url}) przeniósł/przeniosła {redirect}*{article}* do " "przekierowania [{target}]({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, python-brace-format msgid "" "[{author}]({author_url}) moved protection settings from {redirect}*{article}" @@ -160,19 +167,32 @@ msgstr "" "[{author}]({author_url}) przeniósł/przeniosła ustawienia zabezpieczeń z " "{redirect}*{article}* do [{target}]({target_url}){comment}" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "wieczność" -#: rcgcdw.py:231 +#: rcgcdw.py:311 +msgid " on pages: " +msgstr " na stronach: " + +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr " oraz przestrzeniach nazw: " + +#: rcgcdw.py:320 +msgid " on namespaces: " +msgstr " na przestrzeniach nazw: " + +#: rcgcdw.py:332 #, python-brace-format msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" msgstr "" "[{author}]({author_url}) zablokował(-a) [{user}]({user_url}) na {time}" -"{comment}" +"{restriction_desc}{comment}" -#: rcgcdw.py:236 +#: rcgcdw.py:336 #, python-brace-format msgid "" "[{author}]({author_url}) changed block settings for [{blocked_user}]" @@ -181,25 +201,25 @@ msgstr "" "[{author}]({author_url}) zmienił(-a) ustawienia blokady dla [{blocked_user}]" "({user_url}){comment}" -#: rcgcdw.py:241 +#: rcgcdw.py:340 #, python-brace-format msgid "" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" msgstr "" "[{author}]({author_url}) odblokował(-a) [{blocked_user}]({user_url}){comment}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, python-brace-format msgid "" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile" msgstr "" "[{author}]({author_url}) pozostawił(-a) [komentarz]({comment}) na {target}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 msgid "their own profile" msgstr "swoim własnym profilu" -#: rcgcdw.py:250 +#: rcgcdw.py:346 #, python-brace-format msgid "" "[{author}]({author_url}) replied to a [comment]({comment}) on {target} " @@ -208,48 +228,54 @@ msgstr "" "[{author}]({author_url}) odpowiedział(-a) na [komentarz]({comment}) na " "{target}" -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 msgid "their own" msgstr "swój własny" -#: rcgcdw.py:258 +#: rcgcdw.py:352 #, python-brace-format msgid "" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" msgstr "" "[{author}]({author_url}) edytował(-a) [komentarz]({comment}) na {target}" -#: rcgcdw.py:263 +#: rcgcdw.py:358 +#, python-brace-format +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "" +"[{author}]({author_url}) usunął/usunęła permanentnie komentarz na {target}" + +#: rcgcdw.py:368 #, python-brace-format msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgstr "[{author}]({author_url}) usunął/usunęła komentarz na {target}" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[{target}]({target_url})'s" msgstr "na profilu użytkownika [{target}]({target_url})" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[their own]({target_url})" msgstr "na [swoim własnym profilu użytkownika]({target_url})" -#: rcgcdw.py:271 +#: rcgcdw.py:375 #, python-brace-format msgid "" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" msgstr "" "[{author}]({author_url}) edytował(-a) pole {field} {target}. *({desc})*" -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 msgid "none" msgstr "brak" -#: rcgcdw.py:293 rcgcdw.py:662 +#: rcgcdw.py:397 rcgcdw.py:787 msgid "System" msgstr "System" -#: rcgcdw.py:299 +#: rcgcdw.py:402 #, python-brace-format msgid "" "[{author}]({author_url}) protected [{article}]({article_url}) with the " @@ -258,11 +284,11 @@ msgstr "" "[{author}]({author_url}) zabezpieczył(-a) [{article}]({article_url}) z " "następującymi ustawieniami: {settings}{comment}" -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 msgid " [cascading]" msgstr " [kaskadowo]" -#: rcgcdw.py:307 +#: rcgcdw.py:409 #, python-brace-format msgid "" "[{author}]({author_url}) modified protection settings of [{article}]" @@ -271,7 +297,7 @@ msgstr "" "[{author}]({author_url}) modyfikował(-a) ustawienia zabezpieczeń [{article}]" "({article_url}) na: {settings}{comment}" -#: rcgcdw.py:315 +#: rcgcdw.py:416 #, python-brace-format msgid "" "[{author}]({author_url}) removed protection from [{article}]({article_url})" @@ -280,7 +306,7 @@ msgstr "" "[{author}]({author_url}) usunął/usunęła zabezpieczenia z [{article}]" "({article_url}){comment}" -#: rcgcdw.py:320 +#: rcgcdw.py:420 #, python-brace-format msgid "" "[{author}]({author_url}) changed visibility of revision on page [{article}]" @@ -298,7 +324,7 @@ msgstr[2] "" "[{author}]({author_url}) zmienił(-a) widoczność {amount} wersji strony " "[{article}]({article_url}){comment}" -#: rcgcdw.py:326 +#: rcgcdw.py:425 #, python-brace-format msgid "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " @@ -316,23 +342,23 @@ msgstr[2] "" "[{author}]({author_url}) zaimportował(-a) [{article}]({article_url}) {count} " "wersjami{comment}" -#: rcgcdw.py:332 +#: rcgcdw.py:430 #, python-brace-format msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" msgstr "" "[{author}]({author_url}) przywrócił(-a) [{article}]({article_url}){comment}" -#: rcgcdw.py:334 +#: rcgcdw.py:432 #, python-brace-format msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgstr "[{author}]({author_url}) zmienił(-a) widoczność wydarzeń{comment}" -#: rcgcdw.py:336 +#: rcgcdw.py:434 #, python-brace-format msgid "[{author}]({author_url}) imported interwiki{comment}" msgstr "[{author}]({author_url}) zaimportował(-a) interwiki{comment}" -#: rcgcdw.py:339 +#: rcgcdw.py:437 #, python-brace-format msgid "" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" @@ -340,7 +366,7 @@ msgstr "" "[{author}]({author_url}) edytował(-a) filtr nadużyć [numer {number}]" "({filter_url})" -#: rcgcdw.py:342 +#: rcgcdw.py:440 #, python-brace-format msgid "" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" @@ -348,7 +374,7 @@ msgstr "" "[{author}]({author_url}) stworzył(-a) filtr nadużyć [numer {number}]" "({filter_url})" -#: rcgcdw.py:348 +#: rcgcdw.py:444 #, python-brace-format msgid "" "[{author}]({author_url}) merged revision histories of [{article}]" @@ -357,7 +383,7 @@ msgstr "" "[{author}]({author_url}) połączył(-a) historie zmian [{article}]" "({article_url}) z [{dest}]({dest_url}){comment}" -#: rcgcdw.py:352 +#: rcgcdw.py:448 #, python-brace-format msgid "" "[{author}]({author_url}) added an entry to the [interwiki table]" @@ -366,7 +392,7 @@ msgstr "" "[{author}]({author_url}) dodał(-a) wpis do [tabeli interwiki]({table_url}), " "który prowadzi do {website} z prefixem {prefix}" -#: rcgcdw.py:358 +#: rcgcdw.py:454 #, python-brace-format msgid "" "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " @@ -375,7 +401,7 @@ msgstr "" "[{author}]({author_url}) edytował(-a) wpis w [tabeli interwiki]" "({table_url}), który prowadzi do {website} z prefixem {prefix}" -#: rcgcdw.py:364 +#: rcgcdw.py:460 #, python-brace-format msgid "" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" @@ -383,7 +409,7 @@ msgstr "" "[{author}]({author_url}) usunął/usunęła wpis z [tabeli interwiki]" "({table_url})" -#: rcgcdw.py:368 +#: rcgcdw.py:463 #, python-brace-format msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" @@ -392,14 +418,14 @@ msgstr "" "[{author}]({author_url}) zmienił(-a) model zawartości [{article}]" "({article_url}) z {old} na {new}{comment}" -#: rcgcdw.py:373 +#: rcgcdw.py:467 #, python-brace-format msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) edytował(-a) sprite [{article}]({article_url})" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, python-brace-format msgid "" "[{author}]({author_url}) created the sprite sheet for [{article}]" @@ -407,88 +433,114 @@ msgid "" msgstr "" "[{author}]({author_url}) utworzył(-a) sprite sheet [{article}]({article_url})" -#: rcgcdw.py:381 +#: rcgcdw.py:473 #, python-brace-format msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" msgstr "[{author}]({author_url}) edytował(-a) slice [{article}]({article_url})" -#: rcgcdw.py:384 +#: rcgcdw.py:478 +#, python-brace-format +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) utworzył(-a) tabelę Cargo \"{table}\"" + +#: rcgcdw.py:480 +#, python-brace-format +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) usunęł(-a) tabelę Cargo \"{table}\"" + +#: rcgcdw.py:485 +#, python-brace-format +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "" +"[{author}]({author_url}) utworzył(-a) ponownie tabelę Cargo \"{table}\"" + +#: rcgcdw.py:490 +#, python-brace-format +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) zastąpił(-a) tabelę Cargo \"{table}\"" + +#: rcgcdw.py:493 #, python-brace-format msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) utworzył(-a) [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:388 +#: rcgcdw.py:497 #, python-brace-format msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) usunął/usunęła [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:392 +#: rcgcdw.py:501 #, python-brace-format msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) aktywował(-a) [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:395 +#: rcgcdw.py:504 #, python-brace-format msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) dezaktywował(-a) [tag]({tag_url}) \"{tag}\"" -#: rcgcdw.py:397 +#: rcgcdw.py:506 msgid "An action has been hidden by administration." msgstr "Akcja została ukryta przez administrację." -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "Nie podano opisu zmian" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "d" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "b" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "__Tylko znaki niedrukowane__" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "Usunięto" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "Dodano" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "Opcje" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([podgląd]({link}) | [wycofaj]({undolink}))" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Przesłał(a) nową wersję {name}" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +msgid "Reverted a version of {name}" +msgstr "Wycofano wersję {name}" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "Przesłał(a) {name}" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "**Brak licencji!**" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" @@ -496,144 +548,161 @@ msgstr "" "\n" "Licencja: {}" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "([podgląd]({link}))" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "Usunął/usunęła {article}" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "" "Usunął/usunęła przekierowanie ({article}) aby utworzyć miejsce dla " "przenoszonej strony" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "Nie utworzono przekierowania" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "Zostało utworzone przekierowanie" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Przeniósł/przeniosła {redirect}{article} do {target}" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "" "Przeniósł/przeniosła {redirect}{article} do strony przekierowującej {title}" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Przeniesiono ustawienia zabezpieczeń z {redirect}{article} do {title}" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "Blokada przed edytowaniem następujących stron: " + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "Blokada przed edytowaniem stron na następujących przestrzeniach nazw: " + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "Szczegóły częściowej blokady" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Zablokowano {blocked_user} na {time}" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Zmienił ustawienia blokady {blocked_user}" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Odblokował {blocked_user}" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Pozostawiono komentarz na profilu użytkownika {target}" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "Pozostawił(a) komentarz na swoim profilu" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Odpowiedziano na komentarz na profilu użytkownika {target}" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "Odpowiedział(a) na komentarz na swoim profilu" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Edytowano komentarz na profilu użytkownika {target}" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "Edytował(a) komentarz na swoim profilu" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Edytowano profil użytkownika {target}" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "Edytował(a) swój profil" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "Wyczyszczono pole {field}" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "pole \"{field}\" zostało zmienione na: {desc}" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "Usunął permanentnie komentarz na profilu użytkownika {target}" + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Usunął komentarz na profilu użytkownika {target}" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Zmieniono przynależność do grup dla {target}" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} automatycznie otrzymał nową grupę użytkownika" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, 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:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "Zabezpieczono {target}" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Zmieniono poziom zabezpieczeń {article}" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "Usunięto zabezpieczenie {article}" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " @@ -641,7 +710,7 @@ msgstr[0] "Zmieniono widoczność wersji na stronie {article} " msgstr[1] "Zmieniono widoczność {amount} wersji na stronie {article} " msgstr[2] "Zmieniono widoczność {amount} wersji na stronie {article} " -#: rcgcdw.py:709 +#: rcgcdw.py:829 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" @@ -649,339 +718,363 @@ msgstr[0] "Zaimportowano {article} z {count} wersją" msgstr[1] "Zaimportowano {article} z {count} wersjami" msgstr[2] "Zaimportowano {article} z {count} wersjami" -#: rcgcdw.py:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "Przywrócono {article}" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "Zmieniono widoczność logów" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "Zaimportowano interwiki" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Edytowano filtr nadużyć numer {number}" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Utworzono filtr nadużyć numer {number}" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Połączono historie {article} z {dest}" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "Dodano wpis do tabeli interwiki" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Prefix: {prefix}, strona: {website} | {desc}" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "Edytowano wpis interwiki" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "Usunięto wpis interwiki" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Prefix: {prefix} | {desc}" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Zmieniono model zawartości {article}" -#: rcgcdw.py:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Model został zmieniony z {old} na {new}: {reason}" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Edytowano sprite dla {article}" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Utworzono sprite sheet dla {article}" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Edytowano część sprite dla {article}" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, python-brace-format +msgid "Created the Cargo table \"{table}\"" +msgstr "Utworzono tabelę Cargo \"{table}\"" + +#: rcgcdw.py:891 +#, python-brace-format +msgid "Deleted the Cargo table \"{table}\"" +msgstr "Usunięto tabelę Cargo \"{table}\"" + +#: rcgcdw.py:898 +#, python-brace-format +msgid "Recreated the Cargo table \"{table}\"" +msgstr "Utworzono ponownie tabelę Cargo \"{table}\"" + +#: rcgcdw.py:905 +#, python-brace-format +msgid "Replaced the Cargo table \"{table}\"" +msgstr "Zastąpiono tabelę Cargo \"{table}\"" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Utworzono tag \"{tag}\"" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Usunięto tag \"{tag}\"" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Aktywowano tag \"{tag}\"" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Dezaktywowano tag \"{tag}\"" -#: rcgcdw.py:784 +#: rcgcdw.py:923 msgid "Action has been hidden by administration." msgstr "Akcja została ukryta przez administrację." -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "Tagi" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "**Dodane**: " -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr " oraz {} innych\n" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "**Usunięte**: " -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr " oraz {} innych" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "Zmienione kategorie" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "~~ukryte~~" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "ukryte" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "{value} (średnio {avg})" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "Podsumowanie dnia" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "Brak aktywności" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} akcja)" msgstr[1] " ({} akcje)" msgstr[2] " ({} akcji)" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} edycja)" msgstr[1] " ({} edycje)" msgstr[2] " ({} edycji)" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} akcja)" msgstr[1] " UTC ({} akcje)" msgstr[2] " UTC ({} akcji)" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "Ale nikt nie przyszedł" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 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:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Najczęściej edytowany artykuł" msgstr[1] "Najczęściej edytowane artykuły" msgstr[2] "Najczęściej edytowane artykuły" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "Zrobionych edycji" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "Nowych plików" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "Akcji administratorskich" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "Zmienionych bajtów" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "Nowych artykułów" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "Unikalnych edytujących" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 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:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "Wynik dnia" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "Połączenie z {wiki} wygląda na stabilne." -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "Problem z połączeniem" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} nie działa lub jest nieosiągalna." -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "Dyrektor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "Bot" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "Redaktor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "Dyrektorzy" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "Administrator" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "Biurokrata" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "Przeglądający" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "Automatycznie przeglądający" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "Automatycznie zatwierdzający" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "Strażnik wiki" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "sekunda" msgstr[1] "sekundy" msgstr[2] "sekund" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "minuta" msgstr[1] "minuty" msgstr[2] "minut" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "godzina" msgstr[1] "godziny" msgstr[2] "godzin" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "dzień" msgstr[1] "dni" msgstr[2] "dni" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "tydzień" msgstr[1] "tygodnie" msgstr[2] "tygodni" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "miesiąc" msgstr[1] "miesiące" msgstr[2] "miesięcy" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "rok" msgstr[1] "lata" msgstr[2] "lat" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "tysiąclecie" msgstr[1] "tysiąclecia" msgstr[2] "tysiącleci" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "dekada" msgstr[1] "dekady" msgstr[2] "dekad" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "stulecie" diff --git a/locale/pt-br/LC_MESSAGES/rcgcdw.mo b/locale/pt-br/LC_MESSAGES/rcgcdw.mo index 1145158..faca48a 100644 Binary files a/locale/pt-br/LC_MESSAGES/rcgcdw.mo and b/locale/pt-br/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/pt-br/LC_MESSAGES/rcgcdw.po b/locale/pt-br/LC_MESSAGES/rcgcdw.po index e5f2750..8a0507c 100644 --- a/locale/pt-br/LC_MESSAGES/rcgcdw.po +++ b/locale/pt-br/LC_MESSAGES/rcgcdw.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" -"PO-Revision-Date: 2019-08-10 17:07+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" +"PO-Revision-Date: 2020-03-18 13:37+0100\n" "Last-Translator: Frisk \n" "Language-Team: \n" "Language: pt_BR\n" @@ -16,131 +16,138 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "Localização" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "Sobre mim" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "Link do Google" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "Facebook link" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "Link do Twitter" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "Link do Reddit" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "Link do Twitch" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "Link do PSN" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "Link do VK" -#: rcgcdw.py:69 -msgid "XVL link" -msgstr "Link do XVL" +#: rcgcdw.py:71 +msgid "XBL link" +msgstr "Link do XBL" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "Link do Steam" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "Desconhecido" -#: rcgcdw.py:92 +#: rcgcdw.py:174 #, fuzzy #| msgid "Unknown" msgid "unknown" msgstr "Desconhecido" -#: rcgcdw.py:162 +#: rcgcdw.py:244 #, python-brace-format msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" "{edit_size})" msgstr "" -#: rcgcdw.py:164 +#: rcgcdw.py:246 #, python-brace-format msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" "{edit_size})" msgstr "" -#: rcgcdw.py:168 +#: rcgcdw.py:249 #, python-brace-format msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgstr "" -#: rcgcdw.py:176 +#: rcgcdw.py:256 +#, python-brace-format +msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" +"[{author}]({author_url}) reverteu a versão do [{file}]({file_link}){comment}" + +#: rcgcdw.py:260 #, python-brace-format msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" "{comment}" msgstr "" -#: rcgcdw.py:180 +#: rcgcdw.py:263 #, python-brace-format msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgstr "" -#: rcgcdw.py:185 +#: rcgcdw.py:267 #, python-brace-format msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" "({page_link}){comment}" msgstr "" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "" -#: rcgcdw.py:191 +#: rcgcdw.py:272 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" "({target_url}) {made_a_redirect}{comment}" msgstr "" -#: rcgcdw.py:198 +#: rcgcdw.py:278 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " "[{target}]({target_url}) {made_a_redirect}{comment}" msgstr "" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, fuzzy, python-brace-format #| msgid "Moved protection settings from {redirect}{article} to {title}" msgid "" @@ -148,17 +155,31 @@ msgid "" "* to [{target}]({target_url}){comment}" msgstr "Configurações de proteção movidos de {redirect}{article} para {title}" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "infinito e além" -#: rcgcdw.py:231 -#, python-brace-format -msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" -msgstr "" +#: rcgcdw.py:311 +msgid " on pages: " +msgstr " nas páginas: " -#: rcgcdw.py:236 +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr " e espaços nominais: " + +#: rcgcdw.py:320 +msgid " on namespaces: " +msgstr " nos espaços nominais: " + +#: rcgcdw.py:332 +#, fuzzy, python-brace-format +#| msgid "Changed block settings for {blocked_user}" +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" +msgstr "Configurações de bloqueio alteradas para {blocked_user}" + +#: rcgcdw.py:336 #, fuzzy, python-brace-format #| msgid "Changed block settings for {blocked_user}" msgid "" @@ -166,26 +187,26 @@ msgid "" "({user_url}){comment}" msgstr "Configurações de bloqueio alteradas para {blocked_user}" -#: rcgcdw.py:241 +#: rcgcdw.py:340 #, python-brace-format msgid "" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" msgstr "" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, fuzzy, python-brace-format #| msgid "Left a comment on {target}'s profile" msgid "" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile" msgstr "Deixou um comentário no perfil de {target}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, fuzzy #| msgid "Edited their own profile" msgid "their own profile" msgstr "Editou seu próprio perfil" -#: rcgcdw.py:250 +#: rcgcdw.py:346 #, fuzzy, python-brace-format #| msgid "Replied to a comment on {target}'s profile" msgid "" @@ -193,73 +214,78 @@ msgid "" "profile" msgstr "Respondeu a um comentário no perfil de {target}" -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 msgid "their own" msgstr "" -#: rcgcdw.py:258 +#: rcgcdw.py:352 #, fuzzy, python-brace-format #| msgid "Edited a comment on {target}'s profile" msgid "" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" msgstr "Editou um comentário no perfil de {target}" -#: rcgcdw.py:263 +#: rcgcdw.py:358 +#, python-brace-format +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "[{author}]({author_url}) limpou um comentário no perfil {target}" + +#: rcgcdw.py:368 #, fuzzy, python-brace-format #| msgid "Deleted a comment on {target}'s profile" msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgstr "Excluiu um comentário no perfil de {target}" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[{target}]({target_url})'s" msgstr "" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[their own]({target_url})" msgstr "" -#: rcgcdw.py:271 +#: rcgcdw.py:375 #, python-brace-format msgid "" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" msgstr "" -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 msgid "none" msgstr "nenhum" -#: rcgcdw.py:293 rcgcdw.py:662 +#: rcgcdw.py:397 rcgcdw.py:787 msgid "System" msgstr "Sistema" -#: rcgcdw.py:299 +#: rcgcdw.py:402 #, python-brace-format msgid "" "[{author}]({author_url}) protected [{article}]({article_url}) with the " "following settings: {settings}{comment}" msgstr "" -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 msgid " [cascading]" msgstr " [em cascata]" -#: rcgcdw.py:307 +#: rcgcdw.py:409 #, python-brace-format msgid "" "[{author}]({author_url}) modified protection settings of [{article}]" "({article_url}) to: {settings}{comment}" msgstr "" -#: rcgcdw.py:315 +#: rcgcdw.py:416 #, python-brace-format msgid "" "[{author}]({author_url}) removed protection from [{article}]({article_url})" "{comment}" msgstr "" -#: rcgcdw.py:320 +#: rcgcdw.py:420 #, fuzzy, python-brace-format #| msgid "Changed visibility of revision on page {article} " #| msgid_plural "Changed visibility of {amount} revisions on page {article} " @@ -272,7 +298,7 @@ msgid_plural "" msgstr[0] "Visibilidade alterada da revisão na página {article} " msgstr[1] "Visibilidade alterada de {amount} revisões na página {article} " -#: rcgcdw.py:326 +#: rcgcdw.py:425 #, python-brace-format msgid "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " @@ -283,78 +309,78 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:332 +#: rcgcdw.py:430 #, python-brace-format msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" msgstr "" -#: rcgcdw.py:334 +#: rcgcdw.py:432 #, fuzzy, python-brace-format #| msgid "Changed visibility of log events" msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgstr "Visibilidade alterada de eventos de registros" -#: rcgcdw.py:336 +#: rcgcdw.py:434 #, python-brace-format msgid "[{author}]({author_url}) imported interwiki{comment}" msgstr "" -#: rcgcdw.py:339 +#: rcgcdw.py:437 #, fuzzy, python-brace-format #| msgid "Edited abuse filter number {number}" msgid "" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" msgstr "Número de filtro de abuso editado {number}" -#: rcgcdw.py:342 +#: rcgcdw.py:440 #, fuzzy, python-brace-format #| msgid "Created abuse filter number {number}" msgid "" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" msgstr "Criado filtro de abuso número {number}" -#: rcgcdw.py:348 +#: rcgcdw.py:444 #, python-brace-format msgid "" "[{author}]({author_url}) merged revision histories of [{article}]" "({article_url}) into [{dest}]({dest_url}){comment}" msgstr "" -#: rcgcdw.py:352 +#: rcgcdw.py:448 #, python-brace-format msgid "" "[{author}]({author_url}) added an entry to the [interwiki table]" "({table_url}) pointing to {website} with {prefix} prefix" msgstr "" -#: rcgcdw.py:358 +#: rcgcdw.py:454 #, python-brace-format msgid "" "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " "pointing to {website} with {prefix} prefix" msgstr "" -#: rcgcdw.py:364 +#: rcgcdw.py:460 #, fuzzy, python-brace-format #| msgid "Deleted an entry in interwiki table" msgid "" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" msgstr "Excluiu uma entrada na tabela interwiki" -#: rcgcdw.py:368 +#: rcgcdw.py:463 #, python-brace-format msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" "({article_url}) from {old} to {new}{comment}" msgstr "" -#: rcgcdw.py:373 +#: rcgcdw.py:467 #, python-brace-format msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" msgstr "" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, fuzzy, python-brace-format #| msgid "Created the sprite sheet for {article}" msgid "" @@ -362,88 +388,113 @@ msgid "" "({article_url})" msgstr "Criou a folha de sprites para {article}" -#: rcgcdw.py:381 +#: rcgcdw.py:473 #, python-brace-format msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" msgstr "" -#: rcgcdw.py:384 +#: rcgcdw.py:478 +#, python-brace-format +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) criou tabela no Cargo \"{table}\"" + +#: rcgcdw.py:480 +#, python-brace-format +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) excluiu a tabela no Cargo \"{table}\"" + +#: rcgcdw.py:485 +#, python-brace-format +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) recriou a tabela no Cargo \"{table}\"" + +#: rcgcdw.py:490 +#, python-brace-format +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) substituiu a tabela no Cargo \"{table}\"" + +#: rcgcdw.py:493 #, python-brace-format msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:388 +#: rcgcdw.py:497 #, python-brace-format msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:392 +#: rcgcdw.py:501 #, python-brace-format msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:395 +#: rcgcdw.py:504 #, python-brace-format msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:397 +#: rcgcdw.py:506 msgid "An action has been hidden by administration." msgstr "" -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "Nenhuma descrição fornecida" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "(N!) " -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "m" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "b" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "__Apenas espaço em branco__" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "Removido" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "Adicionado" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "Opções" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([visualização]({link}) | [desfazer]({undolink}))" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Carregou uma nova versão de {name}" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +msgid "Reverted a version of {name}" +msgstr "Reverteu uma versão do {name}" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "Carregado {name}" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "* * Sem licença!* *" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" @@ -451,472 +502,513 @@ msgstr "" "\n" "Licença: {}" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "([visualização]({link}))" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "Página {article} excluída" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Redirecionado {article} excluído por sobrescrevendo" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "Nenhum redirecionamento foi feito" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "Foi feito um redirecionamento" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Movido {redirect}{article} para {target}" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "Movido {redirect}{article} para {title} ao redirecionar" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Configurações de proteção movidos de {redirect}{article} para {title}" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "Bloqueado de editar as seguintes páginas: " + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "Bloqueado de editar páginas nos seguintes espaços nominais: " + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "Detalhes do bloqueio parcial" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Bloqueado {blocked_user} por {time}" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Configurações de bloqueio alteradas para {blocked_user}" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Desbloqueado {blocked_user}" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Deixou um comentário no perfil de {target}" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "Deixou um comentário em seu próprio perfil" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Respondeu a um comentário no perfil de {target}" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "Respondeu a um comentário em seu próprio perfil" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Editou um comentário no perfil de {target}" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "Editou um comentário em seu próprio perfil" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Editado perfil {target}" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "Editou seu próprio perfil" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "campo {field} alterado para: {desc}" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "Eliminou um comentário no perfil de {target}" + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Excluiu um comentário no perfil de {target}" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Alterado grupo do membro de {target}" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} recebeu um promovido para um novo grupo de usuários" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "Grupos alterados de {old_groups} para {new_groups} {reason}" -#: rcgcdw.py:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "Protegido {target}" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Nível de proteção alterado para {article}" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "Removida a proteção de {article}" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " msgstr[0] "Visibilidade alterada da revisão na página {article} " msgstr[1] "Visibilidade alterada de {amount} revisões na página {article} " -#: rcgcdw.py:709 +#: rcgcdw.py:829 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" msgstr[0] "Importou {article} com {count} revisão" msgstr[1] "{article} importado com {count} revisões" -#: rcgcdw.py:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "Página {article} excluída" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "Visibilidade alterada de eventos de registros" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "Interwiki importado" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Número de filtro de abuso editado {number}" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Criado filtro de abuso número {number}" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Históricos de revisão mesclados de {article} em {dest}" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "Adicionado uma entrada para a tabela interwiki" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Prefixo: {prefix}, site: {website} | {desc}" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "Editou uma entrada na tabela interwiki" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "Excluiu uma entrada na tabela interwiki" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Prefixo: {prefix} | {desc}" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Alterou o modelo de conteúdo da página {article}" -#: rcgcdw.py:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Modelo alterado de {old} para {new}: {reason}" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Editou o sprite para {article}" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Criou a folha de sprites para {article}" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Editou a fatia de {article}" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, python-brace-format +msgid "Created the Cargo table \"{table}\"" +msgstr "Criou a tabela no Cargo \"{table}\"" + +#: rcgcdw.py:891 +#, python-brace-format +msgid "Deleted the Cargo table \"{table}\"" +msgstr "Excluiu a tabela no Cargo \"{table}\"" + +#: rcgcdw.py:898 +#, python-brace-format +msgid "Recreated the Cargo table \"{table}\"" +msgstr "Recriou a tabela no Cargo \"{table}\"" + +#: rcgcdw.py:905 +#, python-brace-format +msgid "Replaced the Cargo table \"{table}\"" +msgstr "Substituiu a tabela no Cargo \"{table}\"" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Criei uma etiqueta \"{tag}\"" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Excluiu uma etiqueta \"{tag}\"" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Ativou uma etiqueta \"{tag}\"" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Desativou uma etiqueta \"{tag}\"" -#: rcgcdw.py:784 +#: rcgcdw.py:923 msgid "Action has been hidden by administration." msgstr "" -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "Etiquetas" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "**Adicionado**: " -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr " e {} mais\n" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "**Removida**: " -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr " e {} mais" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "Mudanças de categorias" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "Visão geral diária" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "Sem atividade" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} açao)" msgstr[1] " ({} ações)" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} editado)" msgstr[1] " ({} edições)" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} ação)" msgstr[1] " UTC ({} ações)" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "Mas ninguém veio" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Usuário mais ativo" msgstr[1] "Usuários mais ativos" -#: rcgcdw.py:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Artigo mais editado" msgstr[1] "Artigos mais editados" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "Edições feitas" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "Novos arquivos" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "Ações de administração" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "Bytes alterados" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "Novos artigos" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "Contribuidores exclusivos" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Hora mais ativa" msgstr[1] "Horas mais ativas" -#: rcgcdw.py:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "Pontuação do dia" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "A conexão com {wiki} parece estar estável agora." -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "Status da conexão" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki} parece estar inativo ou inacessível." -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "diretor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "robô" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "editor" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "diretores" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "administrador" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "burocrata" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "revisor" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "revisão automática" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "patrulha automatica" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "guardião_wiki" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "segundo" msgstr[1] "segundos" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "minuto" msgstr[1] "minutos" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "hora" msgstr[1] "horas" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "dia" msgstr[1] "dias" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "semana" msgstr[1] "semanas" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "ano" msgstr[1] "anos" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "milénio" msgstr[1] "milénios" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "década" msgstr[1] "décadas" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "século" diff --git a/locale/ru/LC_MESSAGES/rcgcdw.mo b/locale/ru/LC_MESSAGES/rcgcdw.mo index 0e9e229..691179f 100644 Binary files a/locale/ru/LC_MESSAGES/rcgcdw.mo and b/locale/ru/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/ru/LC_MESSAGES/rcgcdw.po b/locale/ru/LC_MESSAGES/rcgcdw.po index 4fd59c8..b1a1f7f 100644 --- a/locale/ru/LC_MESSAGES/rcgcdw.po +++ b/locale/ru/LC_MESSAGES/rcgcdw.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" -"PO-Revision-Date: 2019-08-10 17:10+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" +"PO-Revision-Date: 2020-03-18 13:59+0100\n" "Last-Translator: BabylonAS\n" "Language-Team: \n" "Language: ru_RU\n" @@ -17,69 +17,69 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "Местоположение" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "О себе" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "Ссылка на учётную запись Google" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "Ссылка на учётную запись Facebook" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "Ссылка на учётную запись Twitter" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "Ссылка на учётную запись Reddit" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "Ссылка на учётную запись Twitch" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "Ссылка на учётную запись PSN" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "Ссылка на учётную запись ВКонтакте" -#: rcgcdw.py:69 -msgid "XVL link" -msgstr "Ссылка на учётную запись XVL" +#: rcgcdw.py:71 +msgid "XBL link" +msgstr "Ссылка на учётную запись XBL" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "Ссылка на учётную запись Steam" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "Ссылка на учётную запись Discord" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "Ссылка на учётную запись Battle.net" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "Неизвестно" -#: rcgcdw.py:92 +#: rcgcdw.py:174 msgid "unknown" msgstr "неизвестно" -#: rcgcdw.py:162 +#: rcgcdw.py:244 #, python-brace-format msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" @@ -88,7 +88,7 @@ msgstr "" "[{author}]({author_url}) отредактировал страницу [{article}]({edit_link})" "{comment} ({sign}{edit_size})" -#: rcgcdw.py:164 +#: rcgcdw.py:246 #, python-brace-format msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" @@ -97,12 +97,19 @@ msgstr "" "[{author}]({author_url}) создал страницу [{article}]({edit_link}){comment} " "({sign}{edit_size})" -#: rcgcdw.py:168 +#: rcgcdw.py:249 #, python-brace-format msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgstr "[{author}]({author_url}) загрузил [{file}]({file_link}){comment}" -#: rcgcdw.py:176 +#: rcgcdw.py:256 +#, python-brace-format +msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" +"[{author}]({author_url}) возвратил версию [{file}]({file_link}) {comment}" + +#: rcgcdw.py:260 #, python-brace-format msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" @@ -110,13 +117,13 @@ msgid "" msgstr "" "[{author}]({author_url}) загрузил новую версию [{file}]({file_link}){comment}" -#: rcgcdw.py:180 +#: rcgcdw.py:263 #, python-brace-format msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgstr "" "[{author}]({author_url}) удалил страницу [{page}]({page_link}){comment}" -#: rcgcdw.py:185 +#: rcgcdw.py:267 #, python-brace-format msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" @@ -125,15 +132,15 @@ msgstr "" "[{author}]({author_url}) удалил перенаправление с помощью перезаписи [{page}]" "({page_link}){comment}" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "без перенаправления" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "с перенаправлением" -#: rcgcdw.py:191 +#: rcgcdw.py:272 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" @@ -142,7 +149,7 @@ msgstr "" "[{author}]({author_url}) переименовал страницу {redirect}*{article}* в " "[{target}]({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:198 +#: rcgcdw.py:278 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " @@ -151,7 +158,7 @@ msgstr "" "[{author}]({author_url}) переименовал страницу {redirect}*{article}* поверх " "перенаправления в [{target}]({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, python-brace-format msgid "" "[{author}]({author_url}) moved protection settings from {redirect}*{article}" @@ -160,19 +167,34 @@ msgstr "" "[{author}]({author_url}) перенёс параметры защиты со страницы {redirect}" "*{article}* на страницу [{target}]({target_url}){comment}" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "навеки и навсегда" -#: rcgcdw.py:231 -#, python-brace-format +#: rcgcdw.py:311 +msgid " on pages: " +msgstr " на страницах: " + +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr " и в пространствах имён: " + +#: rcgcdw.py:320 +msgid " on namespaces: " +msgstr " в пространствах имён: " + +#: rcgcdw.py:332 +#, fuzzy, python-brace-format +#| msgid "" +#| "[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" msgstr "" "[{author}]({author_url}) заблокировал участника [{user}]({user_url}) на срок " "«{time}»{comment}" -#: rcgcdw.py:236 +#: rcgcdw.py:336 #, python-brace-format msgid "" "[{author}]({author_url}) changed block settings for [{blocked_user}]" @@ -181,7 +203,7 @@ msgstr "" "[{author}]({author_url}) изменил параметры блокировки для участника " "[{blocked_user}]({user_url}){comment}" -#: rcgcdw.py:241 +#: rcgcdw.py:340 #, python-brace-format msgid "" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" @@ -189,7 +211,7 @@ msgstr "" "[{author}]({author_url}) разблокировал участника [{blocked_user}]({user_url})" "{comment}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, python-brace-format msgid "" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile" @@ -197,11 +219,11 @@ msgstr "" "[{author}]({author_url}) оставил [комментарий]({comment}) на профиле " "участника {target}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 msgid "their own profile" msgstr "на своём профиле" -#: rcgcdw.py:250 +#: rcgcdw.py:346 #, python-brace-format msgid "" "[{author}]({author_url}) replied to a [comment]({comment}) on {target} " @@ -210,11 +232,11 @@ msgstr "" "[{author}]({author_url}) ответил на [комметарий]({comment}) на профиле " "участника {target}" -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 msgid "their own" msgstr "на своём" -#: rcgcdw.py:258 +#: rcgcdw.py:352 #, python-brace-format msgid "" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" @@ -222,23 +244,28 @@ msgstr "" "[{author}]({author_url}) отредактировал [комментарий]({comment}) на профиле " "участника {target}" -#: rcgcdw.py:263 +#: rcgcdw.py:358 +#, python-brace-format +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "[{author}]({author_url}) удалил комментарий в профиле {target}" + +#: rcgcdw.py:368 #, python-brace-format msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgstr "" "[{author}]({author_url}) удалил комментарий на профиле участника {target}" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[{target}]({target_url})'s" msgstr "[{target}]({target_url})" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[their own]({target_url})" msgstr "[на своём]({target_url})" -#: rcgcdw.py:271 +#: rcgcdw.py:375 #, python-brace-format msgid "" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" @@ -246,15 +273,15 @@ msgstr "" "[{author}]({author_url}) отредактировал поле «{field}» на профиле участника " "{target}. *({desc})*" -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 msgid "none" msgstr "ничего" -#: rcgcdw.py:293 rcgcdw.py:662 +#: rcgcdw.py:397 rcgcdw.py:787 msgid "System" msgstr "Система" -#: rcgcdw.py:299 +#: rcgcdw.py:402 #, python-brace-format msgid "" "[{author}]({author_url}) protected [{article}]({article_url}) with the " @@ -263,11 +290,11 @@ msgstr "" "[{author}]({author_url}) защитил страницу [{article}]({article_url}) со " "следующими настройками: {settings}{comment}" -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 msgid " [cascading]" msgstr " [каскадно]" -#: rcgcdw.py:307 +#: rcgcdw.py:409 #, python-brace-format msgid "" "[{author}]({author_url}) modified protection settings of [{article}]" @@ -276,7 +303,7 @@ msgstr "" "[{author}]({author_url}) изменил настройки защиты страницы [{article}]" "({article_url}) на: {settings}{comment}" -#: rcgcdw.py:315 +#: rcgcdw.py:416 #, python-brace-format msgid "" "[{author}]({author_url}) removed protection from [{article}]({article_url})" @@ -285,7 +312,7 @@ msgstr "" "[{author}]({author_url}) снял защиту со страницу [{article}]({article_url})" "{comment}" -#: rcgcdw.py:320 +#: rcgcdw.py:420 #, python-brace-format msgid "" "[{author}]({author_url}) changed visibility of revision on page [{article}]" @@ -303,7 +330,7 @@ msgstr[2] "" "[{author}]({author_url}) изменил видимость {amount} правок на странице " "[{article}]({article_url}){comment}" -#: rcgcdw.py:326 +#: rcgcdw.py:425 #, python-brace-format msgid "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " @@ -321,24 +348,24 @@ msgstr[2] "" "[{author}]({author_url}) импортировал страницу [{article}]({article_url}) с " "{count} правками{comment}" -#: rcgcdw.py:332 +#: rcgcdw.py:430 #, python-brace-format msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" msgstr "" "[{author}]({author_url}) восстановил страницу [{article}]({article_url})" "{comment}" -#: rcgcdw.py:334 +#: rcgcdw.py:432 #, python-brace-format msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgstr "[{author}]({author_url}) изменил видимость событий журнала{comment}" -#: rcgcdw.py:336 +#: rcgcdw.py:434 #, python-brace-format msgid "[{author}]({author_url}) imported interwiki{comment}" msgstr "[{author}]({author_url}) импортировал интервики{comment}" -#: rcgcdw.py:339 +#: rcgcdw.py:437 #, python-brace-format msgid "" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" @@ -346,7 +373,7 @@ msgstr "" "[{author}]({author_url}) отредактировал фильтр злоупотреблений [под номером " "{number}]({filter_url})" -#: rcgcdw.py:342 +#: rcgcdw.py:440 #, python-brace-format msgid "" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" @@ -354,7 +381,7 @@ msgstr "" "[{author}]({author_url}) создал фильтр злоупотреблений [под номером {number}]" "({filter_url})" -#: rcgcdw.py:348 +#: rcgcdw.py:444 #, python-brace-format msgid "" "[{author}]({author_url}) merged revision histories of [{article}]" @@ -363,7 +390,7 @@ msgstr "" "[{author}]({author_url}) объединил истории версий [{article}]({article_url}) " "с [{dest}]({dest_url}){comment}" -#: rcgcdw.py:352 +#: rcgcdw.py:448 #, python-brace-format msgid "" "[{author}]({author_url}) added an entry to the [interwiki table]" @@ -372,7 +399,7 @@ msgstr "" "[{author}]({author_url}) добавил запись в [таблицу интервики]({table_url}), " "указывающая на {website} с префиксом {prefix}" -#: rcgcdw.py:358 +#: rcgcdw.py:454 #, python-brace-format msgid "" "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " @@ -381,14 +408,14 @@ msgstr "" "[{author}]({author_url}) отредактировал запись в [таблице интервики]" "({table_url}), указывающая на {website} с префиксом {prefix}" -#: rcgcdw.py:364 +#: rcgcdw.py:460 #, python-brace-format msgid "" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" msgstr "" "[{author}]({author_url}) удалил запись из [таблицы интервики]({table_url})" -#: rcgcdw.py:368 +#: rcgcdw.py:463 #, python-brace-format msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" @@ -397,14 +424,14 @@ msgstr "" "[{author}]({author_url}) изменил модель содержимого страницы [{article}]" "({article_url}) с {old} на {new}{comment}" -#: rcgcdw.py:373 +#: rcgcdw.py:467 #, python-brace-format msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) отредактировал спрайт для [{article}]({article_url})" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, python-brace-format msgid "" "[{author}]({author_url}) created the sprite sheet for [{article}]" @@ -413,7 +440,7 @@ msgstr "" "[{author}]({author_url}) создал таблицу спрайтов для [{article}]" "({article_url})" -#: rcgcdw.py:381 +#: rcgcdw.py:473 #, python-brace-format msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" @@ -421,82 +448,111 @@ msgstr "" "[{author}]({author_url}) отредактировал фрагмент для [{article}]" "({article_url})" -#: rcgcdw.py:384 +#: rcgcdw.py:478 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) создал [метку]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:480 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) удалил [метку]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:485 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) создал [метку]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:490 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) создал [метку]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:493 #, python-brace-format msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) создал [метку]({tag_url}) \"{tag}\"" -#: rcgcdw.py:388 +#: rcgcdw.py:497 #, python-brace-format msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) удалил [метку]({tag_url}) \"{tag}\"" -#: rcgcdw.py:392 +#: rcgcdw.py:501 #, python-brace-format msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) активировал [метку]({tag_url}) \"{tag}\"" -#: rcgcdw.py:395 +#: rcgcdw.py:504 #, python-brace-format msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) деактивировал [метку]({tag_url}) \"{tag}\"" -#: rcgcdw.py:397 +#: rcgcdw.py:506 msgid "An action has been hidden by administration." msgstr "Действие было скрыто администрацией." -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "Нет описания правки" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "(Н!) " -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "м" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "б" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "__Только пробел__" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "Удалено" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "Добавлено" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "Настройки" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([просмотр]({link}) | [отмена]({undolink}))" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Загрузил новую версию {name}" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +msgid "Reverted a version of {name}" +msgstr "Возвратил версию {name}" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "Загрузил {name}" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "**Отсутствует лицензия!**" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" @@ -504,142 +560,160 @@ msgstr "" "\n" "Лицензия: {}" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "([просмотр]({link}))" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "Удалил страницу «{article}»" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Удалил перенаправление «{article}» с помощью перезаписи" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "Перенаправление не было сделано" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "Было сделано перенаправление" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Переименовал страницу {redirect}{article} в {target}" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "" "Переименовал страницу {redirect}{article} в {title} поверх перенаправления" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Перенёс параметры защиты с «{redirect}{article}» на «{title}»" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "Заблокирован от редактирования в следующих страницах: " + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "" +"Заблокирован от редактирования на страницах в следующих пространствах имён: " + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "Частичные детали блокировки" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Заблокировал участника {blocked_user} на срок «{time}»" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Изменил параметры блокировки для {blocked_user}" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Разблокировал участника {blocked_user}" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Оставил комментарий на профиле участника {target}" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "Оставил комментарий на своём профиле" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Ответил на комментарий на профиле участника {target}" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "Ответил на комментарий на своём профиле" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Отредактировал комментарий на профиле участника {target}" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "Отредактировал комментарий на своём профиле" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Отредактировал профиль участника {target}" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "Отредактировал свой профиль" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "Очистил поле «{field}»" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "Поле «{field}» изменено на: {desc}" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "Удалил комментарий в профиле {target}" + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Удалил комментарий на профиле участника {target}" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Изменил членство в группах для участника {target}" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "Участник {target} был автоматически повышен до новой группы участников" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "Группы изменены с {old_groups} на {new_groups}{reason}" -#: rcgcdw.py:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "Защитил страницу «{target}»" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Изменил уровень защиты для страницы «{article}»" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "Убрал защиту со страницы «{article}»" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " @@ -647,7 +721,7 @@ msgstr[0] "Изменил видимость {amount} правки на стра msgstr[1] "Изменил видимость {amount} правок на странице «{article}» " msgstr[2] "Изменил видимость {amount} правок на странице «{article}» " -#: rcgcdw.py:709 +#: rcgcdw.py:829 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" @@ -655,340 +729,368 @@ msgstr[0] "Импортировал страницу «{article}» с {count} п msgstr[1] "Импортировал страницу «{article}» с {count} правками" msgstr[2] "Импортировал страницу «{article}» с {count} правками" -#: rcgcdw.py:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "Восстановил страницу «{article}»" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "Изменил видимость событий в журнале" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "Импортировал префикс интервики" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Отредактировал фильтр злоупотреблений под номером {number}" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Создал фильтр злоупотреблений под номером {number}" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "" "Объединил историю правок страницы «{article}» с историей правок «{dest}»" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "Добавил запись в таблицу префиксов интервики" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Префикс: {prefix}, сайт: {website} | {desc}" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "Отредактировал запись в таблице префиксов интервики" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "Удалил запись из таблицы префиксов интервики" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Префикс: {prefix} | {desc}" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Изменил модель содержимого для страницы «{article}»" -#: rcgcdw.py:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Модель изменена с «{old}» на «{new}»: {reason}" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Отредактировал спрайт для страницы «{article}»" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Создал таблицу спрайтов для страницы «{article}»" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Отредактировал срез для страницы «{article}»" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, fuzzy, python-brace-format +#| msgid "Created a tag \"{tag}\"" +msgid "Created the Cargo table \"{table}\"" +msgstr "Создал метку «{tag}»" + +#: rcgcdw.py:891 +#, fuzzy, python-brace-format +#| msgid "Deleted a tag \"{tag}\"" +msgid "Deleted the Cargo table \"{table}\"" +msgstr "Удалил метку «{tag}»" + +#: rcgcdw.py:898 +#, fuzzy, python-brace-format +#| msgid "Created a tag \"{tag}\"" +msgid "Recreated the Cargo table \"{table}\"" +msgstr "Создал метку «{tag}»" + +#: rcgcdw.py:905 +#, fuzzy, python-brace-format +#| msgid "Deleted a tag \"{tag}\"" +msgid "Replaced the Cargo table \"{table}\"" +msgstr "Удалил метку «{tag}»" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Создал метку «{tag}»" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Удалил метку «{tag}»" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Активировал метку «{tag}»" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Деактивировал метку «{tag}»" -#: rcgcdw.py:784 +#: rcgcdw.py:923 msgid "Action has been hidden by administration." msgstr "Действие было скрыто администрацией." -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "Метки" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "**Добавлено**: " -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr " и ещё {}\n" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "**Удалено**: " -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr " и ещё {}" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "Изменены категории" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "~~скрыто~~" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "скрыто" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "{value} (ср. {avg})" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "Ежедневный обзор" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "Нет активности" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} действие)" msgstr[1] " ({} действия)" msgstr[2] " ({} действий)" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} правка)" msgstr[1] " ({} правки)" msgstr[2] " ({} правок)" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} действие)" msgstr[1] " UTC ({} действия)" msgstr[2] " UTC ({} действий)" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "Но никто не пришёл" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Самый активный участник" msgstr[1] "Самые активные участники" msgstr[2] "Самые активные участники" -#: rcgcdw.py:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "Самая редактируемая статья" msgstr[1] "Самые редактируемые статьи" msgstr[2] "Самые редактируемые статьи" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "Сделано правок" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "Новых файлов" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "Административных действий" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "Изменено байтов" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "Новых статей" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "Уникальных редакторов" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Самый активный час" msgstr[1] "Самые активные часы" msgstr[2] "Самые активные часы" -#: rcgcdw.py:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "Очков за день" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "Соединение с {wiki} сейчас кажется стабильным." -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "Статус соединения" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki}, вероятно, не работает или недоступна." -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "директор" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "бот" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "досматривающий" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "директора" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "администратор" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "бюрократ" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "выверяющий" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "автодосматриваемый" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "автопатрулируемый" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "смотритель вики" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "секунда" msgstr[1] "секунды" msgstr[2] "секунд" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "минута" msgstr[1] "минуты" msgstr[2] "минут" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "час" msgstr[1] "часа" msgstr[2] "часов" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "день" msgstr[1] "дня" msgstr[2] "дней" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "неделя" msgstr[1] "недели" msgstr[2] "недель" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "месяц" msgstr[1] "месяца" msgstr[2] "месяцев" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "год" msgstr[1] "года" msgstr[2] "лет" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "тысячелетие" msgstr[1] "тысячелетия" msgstr[2] "тысячелетий" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "десятилетие" msgstr[1] "десятилетия" msgstr[2] "десятилетий" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "век" diff --git a/locale/uk/LC_MESSAGES/rcgcdw.mo b/locale/uk/LC_MESSAGES/rcgcdw.mo index 5508eed..262b3bf 100644 Binary files a/locale/uk/LC_MESSAGES/rcgcdw.mo and b/locale/uk/LC_MESSAGES/rcgcdw.mo differ diff --git a/locale/uk/LC_MESSAGES/rcgcdw.po b/locale/uk/LC_MESSAGES/rcgcdw.po index d8d8636..753639c 100644 --- a/locale/uk/LC_MESSAGES/rcgcdw.po +++ b/locale/uk/LC_MESSAGES/rcgcdw.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" -"PO-Revision-Date: 2019-08-10 17:10+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" +"PO-Revision-Date: 2020-03-18 13:51+0100\n" "Last-Translator: \n" "Language-Team: \n" "Language: uk\n" @@ -17,69 +17,71 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" "%10<=4 && (n%100<12 || n%100>14) ? 1 : 2);\n" -"X-Generator: Poedit 2.2.1\n" +"X-Generator: Poedit 2.3\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "Місцезнаходження" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "Про мене" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "Посилання на Google" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "Посилання на Facebook" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "Посилання на Twitter" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "Посилання на Reddit" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "Посилання на Twitch" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "Посилання на PSN" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "Посилання на VK" -#: rcgcdw.py:69 -msgid "XVL link" +#: rcgcdw.py:71 +#, fuzzy +#| msgid "XVL link" +msgid "XBL link" msgstr "Посилання на XVL" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "Посилання на Steam" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "Посилання на Discord" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "Посилання на Battle.net" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "Невідомо" -#: rcgcdw.py:92 +#: rcgcdw.py:174 msgid "unknown" msgstr "невідомо" -#: rcgcdw.py:162 +#: rcgcdw.py:244 #, python-brace-format msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" @@ -88,7 +90,7 @@ msgstr "" "[{author}]({author_url}) відредагував [{article}]({edit_link}){comment} " "({sign}{edit_size})" -#: rcgcdw.py:164 +#: rcgcdw.py:246 #, python-brace-format msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" @@ -97,12 +99,19 @@ msgstr "" "[{author}]({author_url}) створив [{article}]({edit_link}){comment} ({sign}" "{edit_size})" -#: rcgcdw.py:168 +#: rcgcdw.py:249 #, python-brace-format msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgstr "[{author}]({author_url}) завантажив [{file}]({file_link}){comment}" -#: rcgcdw.py:176 +#: rcgcdw.py:256 +#, python-brace-format +msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" +"[{author}] ({author_url}) повернув версію [{file}] ({file_link}) {comment}" + +#: rcgcdw.py:260 #, python-brace-format msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" @@ -111,12 +120,12 @@ msgstr "" "[{author}]({author_url}) завантажив нову версію [{file}]({file_link})" "{comment}" -#: rcgcdw.py:180 +#: rcgcdw.py:263 #, python-brace-format msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgstr "[{author}]({author_url}) вилучив [{page}]({page_link}){comment}" -#: rcgcdw.py:185 +#: rcgcdw.py:267 #, python-brace-format msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" @@ -125,15 +134,15 @@ msgstr "" "[{author}]({author_url}) вилучив перенаправлення за допомогою перезапису " "[{page}]({page_link}){comment}" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "не залишивши перенаправлення" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "з перенаправленням" -#: rcgcdw.py:191 +#: rcgcdw.py:272 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" @@ -142,7 +151,7 @@ msgstr "" "[{author}]({author_url}) перейменував {redirect}*{article}* в [{target}]" "({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:198 +#: rcgcdw.py:278 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " @@ -151,7 +160,7 @@ msgstr "" "[{author}]({author_url}) перейменував {redirect}*{article}* поверх " "перенаправлення в [{target}]({target_url}) {made_a_redirect}{comment}" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, python-brace-format msgid "" "[{author}]({author_url}) moved protection settings from {redirect}*{article}" @@ -160,18 +169,33 @@ msgstr "" "[{author}]({author_url}) переніс налаштування захисту з {redirect}*{article}" "* на [{target}]({target_url}){comment}" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "навіки і назавжди" -#: rcgcdw.py:231 -#, python-brace-format +#: rcgcdw.py:311 +msgid " on pages: " +msgstr " на сторінках: " + +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr " і в простору імен: " + +#: rcgcdw.py:320 +msgid " on namespaces: " +msgstr " в просторах імен: " + +#: rcgcdw.py:332 +#, fuzzy, python-brace-format +#| msgid "" +#| "[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" msgstr "" "[{author}]({author_url}) заблокував [{user}]({user_url}) на {time}{comment}" -#: rcgcdw.py:236 +#: rcgcdw.py:336 #, python-brace-format msgid "" "[{author}]({author_url}) changed block settings for [{blocked_user}]" @@ -180,25 +204,25 @@ msgstr "" "[{author}]({author_url}) змінив блокування для [{blocked_user}]({user_url})" "{comment}" -#: rcgcdw.py:241 +#: rcgcdw.py:340 #, python-brace-format msgid "" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" msgstr "" "[{author}]({author_url}) розблокував [{blocked_user}]({user_url}){comment}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, python-brace-format msgid "" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile" msgstr "" "[{author}]({author_url}) залишив [коментар]({comment}) на профілі {target}" -#: rcgcdw.py:245 +#: rcgcdw.py:343 msgid "their own profile" msgstr "на своєму профілі" -#: rcgcdw.py:250 +#: rcgcdw.py:346 #, python-brace-format msgid "" "[{author}]({author_url}) replied to a [comment]({comment}) on {target} " @@ -207,11 +231,11 @@ msgstr "" "[{author}]({author_url}) відповів на [коментар]({comment}) на профілі " "{target}" -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 msgid "their own" msgstr "на своєму" -#: rcgcdw.py:258 +#: rcgcdw.py:352 #, python-brace-format msgid "" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" @@ -219,37 +243,42 @@ msgstr "" "[{author}]({author_url}) відредагував [коментар]({comment}) на профілі " "{target}" -#: rcgcdw.py:263 +#: rcgcdw.py:358 +#, python-brace-format +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "[{author}] ({author_url}) вилучив коментар в профілі {target}" + +#: rcgcdw.py:368 #, python-brace-format msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgstr "[{author}]({author_url}) видалив коментар з профілю {target}" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[{target}]({target_url})'s" msgstr "[{target}]({target_url})" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[their own]({target_url})" msgstr "[на своєму]({target_url})" -#: rcgcdw.py:271 +#: rcgcdw.py:375 #, python-brace-format msgid "" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" msgstr "" "[{author}]({author_url}) відредагував {field} на профілі {target}. *({desc})*" -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 msgid "none" msgstr "нічого" -#: rcgcdw.py:293 rcgcdw.py:662 +#: rcgcdw.py:397 rcgcdw.py:787 msgid "System" msgstr "Система" -#: rcgcdw.py:299 +#: rcgcdw.py:402 #, python-brace-format msgid "" "[{author}]({author_url}) protected [{article}]({article_url}) with the " @@ -258,11 +287,11 @@ msgstr "" "[{author}]({author_url}) захистив [{article}]({article_url}) з наступними " "налаштуваннями: {settings}{comment}" -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 msgid " [cascading]" msgstr " [каскадний]" -#: rcgcdw.py:307 +#: rcgcdw.py:409 #, python-brace-format msgid "" "[{author}]({author_url}) modified protection settings of [{article}]" @@ -271,7 +300,7 @@ msgstr "" "[{author}]({author_url}) змінив налаштування захисту [{article}]" "({article_url}) на: {settings}{comment}" -#: rcgcdw.py:315 +#: rcgcdw.py:416 #, python-brace-format msgid "" "[{author}]({author_url}) removed protection from [{article}]({article_url})" @@ -279,7 +308,7 @@ msgid "" msgstr "" "[{author}]({author_url}) зняв захист з [{article}]({article_url}){comment}" -#: rcgcdw.py:320 +#: rcgcdw.py:420 #, python-brace-format msgid "" "[{author}]({author_url}) changed visibility of revision on page [{article}]" @@ -297,7 +326,7 @@ msgstr[2] "" "[{author}]({author_url}) змінив видимість {amount} версій сторінки " "[{article}]({article_url}){comment}" -#: rcgcdw.py:326 +#: rcgcdw.py:425 #, python-brace-format msgid "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " @@ -315,22 +344,22 @@ msgstr[2] "" "[{author}]({author_url}) імпортував [{article}]({article_url}) з {count} " "версіями{comment}" -#: rcgcdw.py:332 +#: rcgcdw.py:430 #, python-brace-format msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" msgstr "[{author}]({author_url}) відновив [{article}]({article_url}){comment}" -#: rcgcdw.py:334 +#: rcgcdw.py:432 #, python-brace-format msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgstr "[{author}]({author_url}) змінив видимість подій журналу{comment}" -#: rcgcdw.py:336 +#: rcgcdw.py:434 #, python-brace-format msgid "[{author}]({author_url}) imported interwiki{comment}" msgstr "[{author}]({author_url}) імпортував інтервікі{comment}" -#: rcgcdw.py:339 +#: rcgcdw.py:437 #, python-brace-format msgid "" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" @@ -338,7 +367,7 @@ msgstr "" "[{author}]({author_url}) відредагував фільтр зловживань [під номером " "{number}]({filter_url})" -#: rcgcdw.py:342 +#: rcgcdw.py:440 #, python-brace-format msgid "" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" @@ -346,7 +375,7 @@ msgstr "" "[{author}]({author_url}) створив фільтр зловживань [під номером {number}]" "({filter_url})" -#: rcgcdw.py:348 +#: rcgcdw.py:444 #, python-brace-format msgid "" "[{author}]({author_url}) merged revision histories of [{article}]" @@ -355,7 +384,7 @@ msgstr "" "[{author}]({author_url}) об'єднав історії версій [{article}]({article_url}) " "з [{dest}]({dest_url}){comment}" -#: rcgcdw.py:352 +#: rcgcdw.py:448 #, python-brace-format msgid "" "[{author}]({author_url}) added an entry to the [interwiki table]" @@ -364,7 +393,7 @@ msgstr "" "[{author}]({author_url}) додав запис в [таблицю інтервікі]({table_url}), яка " "вказує на {website} з префіксом {prefix}" -#: rcgcdw.py:358 +#: rcgcdw.py:454 #, python-brace-format msgid "" "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " @@ -373,14 +402,14 @@ msgstr "" "[{author}]({author_url}) відредагував запис в [таблиці інтервікі]" "({table_url}), яка вказує на {website} з префіксом {prefix}" -#: rcgcdw.py:364 +#: rcgcdw.py:460 #, python-brace-format msgid "" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" msgstr "" "[{author}]({author_url}) вилучив запис в [таблиці інтервікі]({table_url})" -#: rcgcdw.py:368 +#: rcgcdw.py:463 #, python-brace-format msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" @@ -389,14 +418,14 @@ msgstr "" "[{author}]({author_url}) змінив модель вмісту сторінки [{article}]" "({article_url}) з {old} на {new}{comment}" -#: rcgcdw.py:373 +#: rcgcdw.py:467 #, python-brace-format msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) відредагував спрайт для [{article}]({article_url})" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, python-brace-format msgid "" "[{author}]({author_url}) created the sprite sheet for [{article}]" @@ -405,89 +434,118 @@ msgstr "" "[{author}]({author_url}) створив таблицю спрайтів для [{article}]" "({article_url})" -#: rcgcdw.py:381 +#: rcgcdw.py:473 #, python-brace-format msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" msgstr "" "[{author}]({author_url}) відредагував фрагмент для [{article}]({article_url})" -#: rcgcdw.py:384 +#: rcgcdw.py:478 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) створив [тег]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:480 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) вилучив [тег]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:485 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) створив [тег]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:490 +#, fuzzy, python-brace-format +#| msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "[{author}]({author_url}) створив [тег]({tag_url}) \"{tag}\"" + +#: rcgcdw.py:493 #, python-brace-format msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) створив [тег]({tag_url}) \"{tag}\"" -#: rcgcdw.py:388 +#: rcgcdw.py:497 #, python-brace-format msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) вилучив [тег]({tag_url}) \"{tag}\"" -#: rcgcdw.py:392 +#: rcgcdw.py:501 #, python-brace-format msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) активував [тег]({tag_url}) \"{tag}\"" -#: rcgcdw.py:395 +#: rcgcdw.py:504 #, python-brace-format msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgstr "[{author}]({author_url}) деактивував [тег]({tag_url}) \"{tag}\"" -#: rcgcdw.py:397 +#: rcgcdw.py:506 msgid "An action has been hidden by administration." msgstr "Дія була прихована адміністрацією." -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "Немає опису редагування" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "(Н!) " -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "м" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "б" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "__Тільки пробіли__" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "Вилучено" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "Додано" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "Параметри" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "([перегляд]({link}) | [скасувати]({undolink}))" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "Завантажив нову версію {name}" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +msgid "Reverted a version of {name}" +msgstr "Повернув версію {name}" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "Загрузил {name}" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "**Немає ліцензії!**" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" @@ -495,142 +553,159 @@ msgstr "" "\n" "Ліцензія: {}" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "([перегляд]({link}))" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "Вилучив сторінку {article}" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "Вилучив перенаправлення {article} by overwriting" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "Перенаправлення не зроблено" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "Перенаправлення було зроблено" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "Перейменував сторінку {redirect}{article} to {target}" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "" "Перейменував сторінку {redirect}{article} to {title} поверх перенаправлення" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "Переніс налаштування захисту з {redirect}{article} на {title}" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "Заблокований від редагування в наступних сторінках: " + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "Заблокований від редагування на сторінках в наступних просторах назв: " + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "Часткові деталі блокування" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "Заблокував {blocked_user} на {time}" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "Змінив блокування для {blocked_user}" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "Розблокував {blocked_user}" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "Залишив коментар на профілі {target}" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "Залишив коментар на своєму профілі" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "Відповів на коментар на профілі {target}" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "Відповів на коментар на своєму профілі" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "Відредагував коментар на профілі {target}" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "Відредагував коментар на своєму профілі" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "Відредагував профіль {target}" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "Відредагував свій профіль" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "Очистив поле {field}" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "Поле {field} змінено на: {desc}" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "Вилучив коментар в профілі {target}" + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "Вилучив коментар на профілі {target}" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "Змінено членство в групі для {target}" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "{target} автоматично переведений в нову групу користувачів" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "Групи змінені з {old_groups} на {new_groups}{reason}" -#: rcgcdw.py:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "Захистив {target}" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "Змінив рівень захисту для {article}" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "Зняв захист з {article}" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, python-brace-format msgid "Changed visibility of revision on page {article} " msgid_plural "Changed visibility of {amount} revisions on page {article} " @@ -638,7 +713,7 @@ msgstr[0] "Змінив видимість {amount} версії сторінк msgstr[1] "Змінив видимість {amount} версій сторінки {article} " msgstr[2] "Змінив видимість {amount} версій сторінки {article} " -#: rcgcdw.py:709 +#: rcgcdw.py:829 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" @@ -646,339 +721,367 @@ msgstr[0] "Імпортував {article} з {count} версією" msgstr[1] "Імпортував {article} з {count} версіями" msgstr[2] "Імпортував {article} з {count} версіями" -#: rcgcdw.py:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "Відновив {article}" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "Змінив видимість подій журналу" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "Імпортував інтервікі" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "Відредагував фільтр зловживань під номером {number}" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "Створив фільтр зловживань під номером {number}" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "Об'єднав історії версій {article} з {dest}" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "Додав запис в таблицю інтервікі" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "Префікс: {prefix}, веб-сайт: {website} | {desc}" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "Відредагував запис в таблиці інтервікі" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "Вилучив запис в таблиці інтервікі" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "Префікс: {prefix} | {desc}" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "Змінив модель вмісту сторінки {article}" -#: rcgcdw.py:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "Модель змінена з {old} на {new}: {reason}" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "Відредагував спрайт для {article}" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "Створив таблицю спрайтів для {article}" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "Відредагував фрагмент для {article}" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, fuzzy, python-brace-format +#| msgid "Created a tag \"{tag}\"" +msgid "Created the Cargo table \"{table}\"" +msgstr "Створив тег \"{tag}\"" + +#: rcgcdw.py:891 +#, fuzzy, python-brace-format +#| msgid "Deleted a tag \"{tag}\"" +msgid "Deleted the Cargo table \"{table}\"" +msgstr "Вилучив тег \"{tag}\"" + +#: rcgcdw.py:898 +#, fuzzy, python-brace-format +#| msgid "Created a tag \"{tag}\"" +msgid "Recreated the Cargo table \"{table}\"" +msgstr "Створив тег \"{tag}\"" + +#: rcgcdw.py:905 +#, fuzzy, python-brace-format +#| msgid "Deleted a tag \"{tag}\"" +msgid "Replaced the Cargo table \"{table}\"" +msgstr "Вилучив тег \"{tag}\"" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "Створив тег \"{tag}\"" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "Вилучив тег \"{tag}\"" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "Активував тег \"{tag}\"" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "Деактивував тег \"{tag}\"" -#: rcgcdw.py:784 +#: rcgcdw.py:923 msgid "Action has been hidden by administration." msgstr "Дія була прихована адміністрацією." -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "Теги" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "**Додано**: " -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr " та ще {}\n" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "**Вилучено**: " -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr " та ще {}" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "Змінені категорії" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "~~прихована~~" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "прихована" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "{value} (сер. {avg})" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "Щоденний огляд" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "Немає активності" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] " ({} дія)" msgstr[1] " ({} дії)" msgstr[2] " ({} дій)" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] " ({} редагування)" msgstr[1] " ({} редагування)" msgstr[2] " ({} редагувань)" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] " UTC ({} дія)" msgstr[1] " UTC ({} дії)" msgstr[2] " UTC ({} дій)" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "Але ніхто не прийшов" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "Найактивніший користувач" msgstr[1] "Найактивніші користувачі" msgstr[2] "Найактивніші користувачі" -#: rcgcdw.py:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" -msgstr[0] "Сама редагована стаття" -msgstr[1] "Самі редаговані статті" -msgstr[2] "Самі редаговані статті" +msgstr[0] "Найредаговішана стаття" +msgstr[1] "Найредаговішані статті" +msgstr[2] "Найредаговішані статті" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "Зроблено редагувань" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "Нових файлів" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "Адміністративних дій" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "Змінено байтів" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "Нових статей" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "Унікальних редакторів" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "Найактивніша година" msgstr[1] "Найактивніший час" msgstr[2] "Найактивніший час" -#: rcgcdw.py:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "Очок за день" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "З'єднання з {wiki} зараз здається стабільним." -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "Статус з'єднання" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "{wiki}, здається, не працює або недоступна." -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "директор" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "бот" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "редактор" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "директора" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "администратор" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "бюрократ" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "оглядач" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "автоперегляд" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "автопатрульний" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "зберігач_вікі" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "секунда" msgstr[1] "секунди" msgstr[2] "секунд" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "хвилина" msgstr[1] "хвилини" msgstr[2] "хвилин" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "година" msgstr[1] "години" msgstr[2] "годин" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "день" msgstr[1] "дня" msgstr[2] "днів" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "тиждень" msgstr[1] "тижні" msgstr[2] "тижнів" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "місяць" msgstr[1] "місяці" msgstr[2] "місяців" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "рік" msgstr[1] "роки" msgstr[2] "років" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "тисячоліття" msgstr[1] "тисячоліття" msgstr[2] "тисячоліть" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "десятиліття" msgstr[1] "десятиліття" msgstr[2] "десятиліть" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "століття" diff --git a/misc.pot b/misc.pot index 605b6aa..db2e0cb 100644 --- a/misc.pot +++ b/misc.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 16:48+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/misc.py b/misc.py index 0578b1d..68051bf 100644 --- a/misc.py +++ b/misc.py @@ -45,9 +45,9 @@ def generate_datafile(): sys.exit(1) -def load_datafile() -> object: +def load_datafile() -> dict: """Read a data.json file and return a dictionary with contents - :rtype: object + :rtype: dict """ try: with open("data.json") as data: @@ -75,7 +75,7 @@ def weighted_average(value, weight, new_value): def link_formatter(link): """Formats a link to not embed it""" - return "<" + re.sub(r"([ )])", "\\\\\\1", link) + ">" + return "<" + re.sub(r"([)])", "\\\\\\1", link).replace(" ", "_") + ">" class ContentParser(HTMLParser): @@ -147,34 +147,6 @@ class ContentParser(HTMLParser): self.current_tag = "" -class LinkParser(HTMLParser): - new_string = "" - recent_href = "" - - def handle_starttag(self, tag, attrs): - for attr in attrs: - if attr[0] == 'href': - self.recent_href = attr[1] - if self.recent_href.startswith("//"): - self.recent_href = "https:{rest}".format(rest=self.recent_href) - elif not self.recent_href.startswith("http"): - self.recent_href = "https://{wiki}.gamepedia.com".format(wiki=settings["wiki"]) + self.recent_href - self.recent_href = self.recent_href.replace(")", "\\)") - - def handle_data(self, data): - if self.recent_href: - self.new_string = self.new_string + "[{}](<{}>)".format(data, self.recent_href) - self.recent_href = "" - else: - self.new_string = self.new_string + data - - def handle_comment(self, data): - self.new_string = self.new_string + data - - def handle_endtag(self, tag): - misc_logger.debug(self.new_string) - - def safe_read(request, *keys): if request is None: return None diff --git a/rcgcdw.pot b/rcgcdw.pot index 0d64dd0..a31a3f0 100644 --- a/rcgcdw.pot +++ b/rcgcdw.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-08-10 17:05+0200\n" +"POT-Creation-Date: 2020-03-17 20:53+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,238 +18,262 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Location" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "About me" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Google link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Facebook link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitter link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Reddit link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Twitch link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "PSN link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "VK link" msgstr "" -#: rcgcdw.py:69 -msgid "XVL link" +#: rcgcdw.py:71 +msgid "XBL link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Steam link" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Discord handle" msgstr "" -#: rcgcdw.py:69 +#: rcgcdw.py:71 msgid "Battle.net handle" msgstr "" -#: rcgcdw.py:90 rcgcdw.py:785 +#: rcgcdw.py:172 rcgcdw.py:924 msgid "Unknown" msgstr "" -#: rcgcdw.py:92 +#: rcgcdw.py:174 msgid "unknown" msgstr "" -#: rcgcdw.py:162 +#: rcgcdw.py:244 #, python-brace-format msgid "" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" "{edit_size})" msgstr "" -#: rcgcdw.py:164 +#: rcgcdw.py:246 #, python-brace-format msgid "" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" "{edit_size})" msgstr "" -#: rcgcdw.py:168 +#: rcgcdw.py:249 #, python-brace-format msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgstr "" -#: rcgcdw.py:176 +#: rcgcdw.py:256 +#, python-brace-format +msgid "" +"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}" +msgstr "" + +#: rcgcdw.py:260 #, python-brace-format msgid "" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" "{comment}" msgstr "" -#: rcgcdw.py:180 +#: rcgcdw.py:263 #, python-brace-format msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgstr "" -#: rcgcdw.py:185 +#: rcgcdw.py:267 #, python-brace-format msgid "" "[{author}]({author_url}) deleted redirect by overwriting [{page}]" "({page_link}){comment}" msgstr "" -#: rcgcdw.py:190 rcgcdw.py:196 +#: rcgcdw.py:271 rcgcdw.py:276 msgid "without making a redirect" msgstr "" -#: rcgcdw.py:190 rcgcdw.py:197 +#: rcgcdw.py:271 rcgcdw.py:277 msgid "with a redirect" msgstr "" -#: rcgcdw.py:191 +#: rcgcdw.py:272 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" "({target_url}) {made_a_redirect}{comment}" msgstr "" -#: rcgcdw.py:198 +#: rcgcdw.py:278 #, python-brace-format msgid "" "[{author}]({author_url}) moved {redirect}*{article}* over redirect to " "[{target}]({target_url}) {made_a_redirect}{comment}" msgstr "" -#: rcgcdw.py:204 +#: rcgcdw.py:283 #, python-brace-format msgid "" "[{author}]({author_url}) moved protection settings from {redirect}*{article}" "* to [{target}]({target_url}){comment}" msgstr "" -#: rcgcdw.py:216 rcgcdw.py:593 +#: rcgcdw.py:294 rcgcdw.py:699 msgid "infinity and beyond" msgstr "" -#: rcgcdw.py:231 -#, python-brace-format -msgid "" -"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}" +#: rcgcdw.py:311 +msgid " on pages: " msgstr "" -#: rcgcdw.py:236 +#: rcgcdw.py:318 rcgcdw.py:719 +msgid " and namespaces: " +msgstr "" + +#: rcgcdw.py:320 +msgid " on namespaces: " +msgstr "" + +#: rcgcdw.py:332 +#, python-brace-format +msgid "" +"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" +"{restriction_desc}{comment}" +msgstr "" + +#: rcgcdw.py:336 #, python-brace-format msgid "" "[{author}]({author_url}) changed block settings for [{blocked_user}]" "({user_url}){comment}" msgstr "" -#: rcgcdw.py:241 +#: rcgcdw.py:340 #, python-brace-format msgid "" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" msgstr "" -#: rcgcdw.py:245 +#: rcgcdw.py:343 #, python-brace-format msgid "" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile" msgstr "" -#: rcgcdw.py:245 +#: rcgcdw.py:343 msgid "their own profile" msgstr "" -#: rcgcdw.py:250 +#: rcgcdw.py:346 #, python-brace-format msgid "" "[{author}]({author_url}) replied to a [comment]({comment}) on {target} " "profile" msgstr "" -#: rcgcdw.py:253 rcgcdw.py:261 rcgcdw.py:265 +#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 msgid "their own" msgstr "" -#: rcgcdw.py:258 +#: rcgcdw.py:352 #, python-brace-format msgid "" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" msgstr "" -#: rcgcdw.py:263 +#: rcgcdw.py:358 +#, python-brace-format +msgid "[{author}]({author_url}) purged a comment on {target} profile" +msgstr "" + +#: rcgcdw.py:368 #, python-brace-format msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgstr "" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[{target}]({target_url})'s" msgstr "" -#: rcgcdw.py:270 +#: rcgcdw.py:374 #, python-brace-format msgid "[their own]({target_url})" msgstr "" -#: rcgcdw.py:271 +#: rcgcdw.py:375 #, python-brace-format msgid "" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" msgstr "" -#: rcgcdw.py:285 rcgcdw.py:287 rcgcdw.py:675 rcgcdw.py:677 +#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 msgid "none" msgstr "" -#: rcgcdw.py:293 rcgcdw.py:662 +#: rcgcdw.py:397 rcgcdw.py:787 msgid "System" msgstr "" -#: rcgcdw.py:299 +#: rcgcdw.py:402 #, python-brace-format msgid "" "[{author}]({author_url}) protected [{article}]({article_url}) with the " "following settings: {settings}{comment}" msgstr "" -#: rcgcdw.py:301 rcgcdw.py:310 rcgcdw.py:686 rcgcdw.py:693 +#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 msgid " [cascading]" msgstr "" -#: rcgcdw.py:307 +#: rcgcdw.py:409 #, python-brace-format msgid "" "[{author}]({author_url}) modified protection settings of [{article}]" "({article_url}) to: {settings}{comment}" msgstr "" -#: rcgcdw.py:315 +#: rcgcdw.py:416 #, python-brace-format msgid "" "[{author}]({author_url}) removed protection from [{article}]({article_url})" "{comment}" msgstr "" -#: rcgcdw.py:320 +#: rcgcdw.py:420 #, python-brace-format msgid "" "[{author}]({author_url}) changed visibility of revision on page [{article}]" @@ -260,7 +284,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:326 +#: rcgcdw.py:425 #, python-brace-format msgid "" "[{author}]({author_url}) imported [{article}]({article_url}) with {count} " @@ -271,633 +295,699 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:332 +#: rcgcdw.py:430 #, python-brace-format msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" msgstr "" -#: rcgcdw.py:334 +#: rcgcdw.py:432 #, python-brace-format msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgstr "" -#: rcgcdw.py:336 +#: rcgcdw.py:434 #, python-brace-format msgid "[{author}]({author_url}) imported interwiki{comment}" msgstr "" -#: rcgcdw.py:339 +#: rcgcdw.py:437 #, python-brace-format msgid "" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" msgstr "" -#: rcgcdw.py:342 +#: rcgcdw.py:440 #, python-brace-format msgid "" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" msgstr "" -#: rcgcdw.py:348 +#: rcgcdw.py:444 #, python-brace-format msgid "" "[{author}]({author_url}) merged revision histories of [{article}]" "({article_url}) into [{dest}]({dest_url}){comment}" msgstr "" -#: rcgcdw.py:352 +#: rcgcdw.py:448 #, python-brace-format msgid "" "[{author}]({author_url}) added an entry to the [interwiki table]" "({table_url}) pointing to {website} with {prefix} prefix" msgstr "" -#: rcgcdw.py:358 +#: rcgcdw.py:454 #, python-brace-format msgid "" "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " "pointing to {website} with {prefix} prefix" msgstr "" -#: rcgcdw.py:364 +#: rcgcdw.py:460 #, python-brace-format msgid "" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" msgstr "" -#: rcgcdw.py:368 +#: rcgcdw.py:463 #, python-brace-format msgid "" "[{author}]({author_url}) changed the content model of the page [{article}]" "({article_url}) from {old} to {new}{comment}" msgstr "" -#: rcgcdw.py:373 +#: rcgcdw.py:467 #, python-brace-format msgid "" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})" msgstr "" -#: rcgcdw.py:377 +#: rcgcdw.py:470 #, python-brace-format msgid "" "[{author}]({author_url}) created the sprite sheet for [{article}]" "({article_url})" msgstr "" -#: rcgcdw.py:381 +#: rcgcdw.py:473 #, python-brace-format msgid "" "[{author}]({author_url}) edited the slice for [{article}]({article_url})" msgstr "" -#: rcgcdw.py:384 +#: rcgcdw.py:478 +#, python-brace-format +msgid "[{author}]({author_url}) created the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:480 +#, python-brace-format +msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:485 +#, python-brace-format +msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:490 +#, python-brace-format +msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:493 #, python-brace-format msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:388 +#: rcgcdw.py:497 #, python-brace-format msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:392 +#: rcgcdw.py:501 #, python-brace-format msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:395 +#: rcgcdw.py:504 #, python-brace-format msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgstr "" -#: rcgcdw.py:397 +#: rcgcdw.py:506 msgid "An action has been hidden by administration." msgstr "" -#: rcgcdw.py:406 rcgcdw.py:678 +#: rcgcdw.py:515 rcgcdw.py:803 msgid "No description provided" msgstr "" -#: rcgcdw.py:456 +#: rcgcdw.py:563 msgid "(N!) " msgstr "" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "m" msgstr "" -#: rcgcdw.py:457 +#: rcgcdw.py:564 msgid "b" msgstr "" -#: rcgcdw.py:476 rcgcdw.py:481 +#: rcgcdw.py:583 rcgcdw.py:588 msgid "__Only whitespace__" msgstr "" -#: rcgcdw.py:487 +#: rcgcdw.py:594 msgid "Removed" msgstr "" -#: rcgcdw.py:490 +#: rcgcdw.py:597 msgid "Added" msgstr "" -#: rcgcdw.py:520 rcgcdw.py:555 +#: rcgcdw.py:631 rcgcdw.py:669 msgid "Options" msgstr "" -#: rcgcdw.py:520 +#: rcgcdw.py:631 #, python-brace-format msgid "([preview]({link}) | [undo]({undolink}))" msgstr "" -#: rcgcdw.py:522 +#: rcgcdw.py:634 #, python-brace-format msgid "Uploaded a new version of {name}" msgstr "" -#: rcgcdw.py:524 +#: rcgcdw.py:636 +#, python-brace-format +msgid "Reverted a version of {name}" +msgstr "" + +#: rcgcdw.py:638 #, python-brace-format msgid "Uploaded {name}" msgstr "" -#: rcgcdw.py:540 +#: rcgcdw.py:654 msgid "**No license!**" msgstr "" -#: rcgcdw.py:552 +#: rcgcdw.py:666 msgid "" "\n" "License: {}" msgstr "" -#: rcgcdw.py:555 +#: rcgcdw.py:669 #, python-brace-format msgid "([preview]({link}))" msgstr "" -#: rcgcdw.py:560 +#: rcgcdw.py:673 #, python-brace-format msgid "Deleted page {article}" msgstr "" -#: rcgcdw.py:564 +#: rcgcdw.py:676 #, python-brace-format msgid "Deleted redirect {article} by overwriting" msgstr "" -#: rcgcdw.py:569 +#: rcgcdw.py:680 msgid "No redirect has been made" msgstr "" -#: rcgcdw.py:570 +#: rcgcdw.py:681 msgid "A redirect has been made" msgstr "" -#: rcgcdw.py:571 +#: rcgcdw.py:682 #, python-brace-format msgid "Moved {redirect}{article} to {target}" msgstr "" -#: rcgcdw.py:575 +#: rcgcdw.py:685 #, python-brace-format msgid "Moved {redirect}{article} to {title} over redirect" msgstr "" -#: rcgcdw.py:580 +#: rcgcdw.py:689 #, python-brace-format msgid "Moved protection settings from {redirect}{article} to {title}" msgstr "" -#: rcgcdw.py:603 +#: rcgcdw.py:712 +msgid "Blocked from editing the following pages: " +msgstr "" + +#: rcgcdw.py:721 +msgid "Blocked from editing pages on following namespaces: " +msgstr "" + +#: rcgcdw.py:735 +msgid "Partial block details" +msgstr "" + +#: rcgcdw.py:736 #, python-brace-format msgid "Blocked {blocked_user} for {time}" msgstr "" -#: rcgcdw.py:609 +#: rcgcdw.py:740 #, python-brace-format msgid "Changed block settings for {blocked_user}" msgstr "" -#: rcgcdw.py:615 +#: rcgcdw.py:744 #, python-brace-format msgid "Unblocked {blocked_user}" msgstr "" -#: rcgcdw.py:621 +#: rcgcdw.py:749 #, python-brace-format msgid "Left a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:623 +#: rcgcdw.py:751 msgid "Left a comment on their own profile" msgstr "" -#: rcgcdw.py:629 +#: rcgcdw.py:756 #, python-brace-format msgid "Replied to a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:631 +#: rcgcdw.py:758 msgid "Replied to a comment on their own profile" msgstr "" -#: rcgcdw.py:637 +#: rcgcdw.py:763 #, python-brace-format msgid "Edited a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:639 +#: rcgcdw.py:765 msgid "Edited a comment on their own profile" msgstr "" -#: rcgcdw.py:645 +#: rcgcdw.py:768 #, python-brace-format msgid "Edited {target}'s profile" msgstr "" -#: rcgcdw.py:645 +#: rcgcdw.py:768 msgid "Edited their own profile" msgstr "" -#: rcgcdw.py:647 +#: rcgcdw.py:770 #, python-brace-format msgid "Cleared the {field} field" msgstr "" -#: rcgcdw.py:649 +#: rcgcdw.py:772 #, python-brace-format msgid "{field} field changed to: {desc}" msgstr "" -#: rcgcdw.py:656 +#: rcgcdw.py:775 +#, python-brace-format +msgid "Purged a comment on {target}'s profile" +msgstr "" + +#: rcgcdw.py:781 #, python-brace-format msgid "Deleted a comment on {target}'s profile" msgstr "" -#: rcgcdw.py:660 +#: rcgcdw.py:785 #, python-brace-format msgid "Changed group membership for {target}" msgstr "" -#: rcgcdw.py:664 +#: rcgcdw.py:789 #, python-brace-format msgid "{target} got autopromoted to a new usergroup" msgstr "" -#: rcgcdw.py:679 +#: rcgcdw.py:804 #, python-brace-format msgid "Groups changed from {old_groups} to {new_groups}{reason}" msgstr "" -#: rcgcdw.py:684 +#: rcgcdw.py:808 #, python-brace-format msgid "Protected {target}" msgstr "" -#: rcgcdw.py:691 +#: rcgcdw.py:814 #, python-brace-format msgid "Changed protection level for {article}" msgstr "" -#: rcgcdw.py:698 +#: rcgcdw.py:820 #, python-brace-format msgid "Removed protection from {article}" msgstr "" -#: rcgcdw.py:703 +#: rcgcdw.py:824 #, 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:709 +#: rcgcdw.py:829 #, python-brace-format msgid "Imported {article} with {count} revision" msgid_plural "Imported {article} with {count} revisions" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:715 +#: rcgcdw.py:834 #, python-brace-format msgid "Restored {article}" msgstr "" -#: rcgcdw.py:718 +#: rcgcdw.py:837 msgid "Changed visibility of log events" msgstr "" -#: rcgcdw.py:721 +#: rcgcdw.py:840 msgid "Imported interwiki" msgstr "" -#: rcgcdw.py:724 +#: rcgcdw.py:843 #, python-brace-format msgid "Edited abuse filter number {number}" msgstr "" -#: rcgcdw.py:727 +#: rcgcdw.py:846 #, python-brace-format msgid "Created abuse filter number {number}" msgstr "" -#: rcgcdw.py:731 +#: rcgcdw.py:849 #, python-brace-format msgid "Merged revision histories of {article} into {dest}" msgstr "" -#: rcgcdw.py:735 +#: rcgcdw.py:853 msgid "Added an entry to the interwiki table" msgstr "" -#: rcgcdw.py:736 rcgcdw.py:742 +#: rcgcdw.py:854 rcgcdw.py:860 #, python-brace-format msgid "Prefix: {prefix}, website: {website} | {desc}" msgstr "" -#: rcgcdw.py:741 +#: rcgcdw.py:859 msgid "Edited an entry in interwiki table" msgstr "" -#: rcgcdw.py:747 +#: rcgcdw.py:865 msgid "Deleted an entry in interwiki table" msgstr "" -#: rcgcdw.py:748 +#: rcgcdw.py:866 #, python-brace-format msgid "Prefix: {prefix} | {desc}" msgstr "" -#: rcgcdw.py:752 +#: rcgcdw.py:869 #, python-brace-format msgid "Changed the content model of the page {article}" msgstr "" -#: rcgcdw.py:753 +#: rcgcdw.py:870 #, python-brace-format msgid "Model changed from {old} to {new}: {reason}" msgstr "" -#: rcgcdw.py:759 +#: rcgcdw.py:875 #, python-brace-format msgid "Edited the sprite for {article}" msgstr "" -#: rcgcdw.py:763 +#: rcgcdw.py:878 #, python-brace-format msgid "Created the sprite sheet for {article}" msgstr "" -#: rcgcdw.py:767 +#: rcgcdw.py:881 #, python-brace-format msgid "Edited the slice for {article}" msgstr "" -#: rcgcdw.py:770 +#: rcgcdw.py:887 +#, python-brace-format +msgid "Created the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:891 +#, python-brace-format +msgid "Deleted the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:898 +#, python-brace-format +msgid "Recreated the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:905 +#, python-brace-format +msgid "Replaced the Cargo table \"{table}\"" +msgstr "" + +#: rcgcdw.py:909 #, python-brace-format msgid "Created a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:774 +#: rcgcdw.py:913 #, python-brace-format msgid "Deleted a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:778 +#: rcgcdw.py:917 #, python-brace-format msgid "Activated a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:781 +#: rcgcdw.py:920 #, python-brace-format msgid "Deactivated a tag \"{tag}\"" msgstr "" -#: rcgcdw.py:784 +#: rcgcdw.py:923 msgid "Action has been hidden by administration." msgstr "" -#: rcgcdw.py:811 +#: rcgcdw.py:951 msgid "Tags" msgstr "" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid "**Added**: " msgstr "" -#: rcgcdw.py:816 +#: rcgcdw.py:956 msgid " and {} more\n" msgstr "" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid "**Removed**: " msgstr "" -#: rcgcdw.py:817 +#: rcgcdw.py:957 msgid " and {} more" msgstr "" -#: rcgcdw.py:818 +#: rcgcdw.py:958 msgid "Changed categories" msgstr "" -#: rcgcdw.py:837 +#: rcgcdw.py:977 msgid "~~hidden~~" msgstr "" -#: rcgcdw.py:843 +#: rcgcdw.py:983 msgid "hidden" msgstr "" -#: rcgcdw.py:910 rcgcdw.py:912 rcgcdw.py:914 rcgcdw.py:916 rcgcdw.py:918 -#: rcgcdw.py:920 rcgcdw.py:922 +#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 +#: rcgcdw.py:1060 rcgcdw.py:1062 #, python-brace-format msgid "{value} (avg. {avg})" msgstr "" -#: rcgcdw.py:963 +#: rcgcdw.py:1086 rcgcdw.py:1114 msgid "Daily overview" msgstr "" -#: rcgcdw.py:972 +#: rcgcdw.py:1088 +msgid "No activity" +msgstr "" + +#: rcgcdw.py:1123 msgid " ({} action)" msgid_plural " ({} actions)" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:974 +#: rcgcdw.py:1125 msgid " ({} edit)" msgid_plural " ({} edits)" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:979 +#: rcgcdw.py:1130 msgid " UTC ({} action)" msgid_plural " UTC ({} actions)" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:981 rcgcdw.py:982 rcgcdw.py:986 +#: rcgcdw.py:1132 rcgcdw.py:1133 rcgcdw.py:1137 msgid "But nobody came" msgstr "" -#: rcgcdw.py:990 +#: rcgcdw.py:1141 msgid "Most active user" msgid_plural "Most active users" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:991 +#: rcgcdw.py:1142 msgid "Most edited article" msgid_plural "Most edited articles" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Edits made" msgstr "" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "New files" msgstr "" -#: rcgcdw.py:992 +#: rcgcdw.py:1143 msgid "Admin actions" msgstr "" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "Bytes changed" msgstr "" -#: rcgcdw.py:993 +#: rcgcdw.py:1144 msgid "New articles" msgstr "" -#: rcgcdw.py:994 +#: rcgcdw.py:1145 msgid "Unique contributors" msgstr "" -#: rcgcdw.py:995 +#: rcgcdw.py:1146 msgid "Most active hour" msgid_plural "Most active hours" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:996 +#: rcgcdw.py:1147 msgid "Day score" msgstr "" -#: rcgcdw.py:1137 +#: rcgcdw.py:1291 #, python-brace-format msgid "Connection to {wiki} seems to be stable now." msgstr "" -#: rcgcdw.py:1138 rcgcdw.py:1249 +#: rcgcdw.py:1292 rcgcdw.py:1407 msgid "Connection status" msgstr "" -#: rcgcdw.py:1248 +#: rcgcdw.py:1406 #, python-brace-format msgid "{wiki} seems to be down or unreachable." msgstr "" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "director" msgstr "" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bot" msgstr "" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "editor" msgstr "" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "directors" msgstr "" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "sysop" msgstr "" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "bureaucrat" msgstr "" -#: rcgcdw.py:1304 +#: rcgcdw.py:1465 msgid "reviewer" msgstr "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autoreview" msgstr "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "autopatrol" msgstr "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "wiki_guardian" msgstr "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "second" msgid_plural "seconds" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "minute" msgid_plural "minutes" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "hour" msgid_plural "hours" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "day" msgid_plural "days" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "week" msgid_plural "weeks" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "month" msgid_plural "months" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "year" msgid_plural "years" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "millennium" msgid_plural "millennia" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "decade" msgid_plural "decades" msgstr[0] "" msgstr[1] "" -#: rcgcdw.py:1305 +#: rcgcdw.py:1466 msgid "century" msgid_plural "centuries" msgstr[0] "" diff --git a/rcgcdw.py b/rcgcdw.py index 53ad1a7..6184694 100644 --- a/rcgcdw.py +++ b/rcgcdw.py @@ -20,13 +20,15 @@ # WARNING! SHITTY CODE AHEAD. ENTER ONLY IF YOU ARE SURE YOU CAN TAKE IT # You have been warned -import time, logging.config, json, requests, datetime, re, gettext, math, random, os.path, schedule, sys, ipaddress +import time, logging.config, json, requests, datetime, re, gettext, math, random, os.path, schedule, sys, ipaddress, base64 +from html.parser import HTMLParser + import misc from bs4 import BeautifulSoup from collections import defaultdict, Counter -from urllib.parse import quote_plus +from urllib.parse import quote_plus, urlparse, urlunparse from configloader import settings -from misc import link_formatter, LinkParser, ContentParser, safe_read, handle_discord_http, add_to_dict +from misc import link_formatter, ContentParser, safe_read, handle_discord_http, add_to_dict, misc_logger if __name__ != "__main__": # return if called as a module logging.critical("The file is being executed as a module. Please execute the script using the console.") @@ -65,14 +67,94 @@ if settings["limitrefetch"] != -1 and os.path.exists("lastchange.txt") is True: # A few initial vars logged_in = False -supported_logs = ["protect/protect", "protect/modify", "protect/unprotect", "upload/overwrite", "upload/upload", "delete/delete", "delete/delete_redir", "delete/restore", "delete/revision", "delete/event", "import/upload", "import/interwiki", "merge/merge", "move/move", "move/move_redir", "protect/move_prot", "block/block", "block/unblock", "block/reblock", "rights/rights", "rights/autopromote", "abusefilter/modify", "abusefilter/create", "interwiki/iw_add", "interwiki/iw_edit", "interwiki/iw_delete", "curseprofile/comment-created", "curseprofile/comment-edited", "curseprofile/comment-deleted", "curseprofile/profile-edited", "curseprofile/comment-replied", "contentmodel/change", "sprite/sprite", "sprite/sheet", "sprite/slice", "managetags/create", "managetags/delete", "managetags/activate", "managetags/deactivate", "tag/update", "cargo/createtable", "cargo/deletetable", "cargo/recreatetable", "cargo/replacetable"] -profile_fields = {"profile-location": _("Location"), "profile-aboutme": _("About me"), "profile-link-google": _("Google link"), "profile-link-facebook":_("Facebook link"), "profile-link-twitter": _("Twitter link"), "profile-link-reddit": _("Reddit link"), "profile-link-twitch": _("Twitch link"), "profile-link-psn": _("PSN link"), "profile-link-vk": _("VK link"), "profile-link-xbl": _("XVL link"), "profile-link-steam": _("Steam link"), "profile-link-discord": _("Discord handle"), "profile-link-battlenet": _("Battle.net handle")} +supported_logs = ["protect/protect", "protect/modify", "protect/unprotect", "upload/overwrite", "upload/upload", "delete/delete", "delete/delete_redir", "delete/restore", "delete/revision", "delete/event", "import/upload", "import/interwiki", "merge/merge", "move/move", "move/move_redir", "protect/move_prot", "block/block", "block/unblock", "block/reblock", "rights/rights", "rights/autopromote", "abusefilter/modify", "abusefilter/create", "interwiki/iw_add", "interwiki/iw_edit", "interwiki/iw_delete", "curseprofile/comment-created", "curseprofile/comment-edited", "curseprofile/comment-deleted", "curseprofile/comment-purged", "curseprofile/profile-edited", "curseprofile/comment-replied", "contentmodel/change", "sprite/sprite", "sprite/sheet", "sprite/slice", "managetags/create", "managetags/delete", "managetags/activate", "managetags/deactivate", "tag/update", "cargo/createtable", "cargo/deletetable", "cargo/recreatetable", "cargo/replacetable", "upload/revert"] +profile_fields = {"profile-location": _("Location"), "profile-aboutme": _("About me"), "profile-link-google": _("Google link"), "profile-link-facebook":_("Facebook link"), "profile-link-twitter": _("Twitter link"), "profile-link-reddit": _("Reddit link"), "profile-link-twitch": _("Twitch link"), "profile-link-psn": _("PSN link"), "profile-link-vk": _("VK link"), "profile-link-xbl": _("XBL link"), "profile-link-steam": _("Steam link"), "profile-link-discord": _("Discord handle"), "profile-link-battlenet": _("Battle.net handle")} +WIKI_API_PATH: str = "" +WIKI_ARTICLE_PATH: str = "" +WIKI_SCRIPT_PATH: str = "" +WIKI_JUST_DOMAIN: str = "" + + +class LinkParser(HTMLParser): + new_string = "" + recent_href = "" + + def handle_starttag(self, tag, attrs): + for attr in attrs: + if attr[0] == 'href': + self.recent_href = attr[1] + if self.recent_href.startswith("//"): + self.recent_href = "https:{rest}".format(rest=self.recent_href) + elif not self.recent_href.startswith("http"): + self.recent_href = WIKI_JUST_DOMAIN + self.recent_href + self.recent_href = self.recent_href.replace(")", "\\)") + elif attr[0] == 'data-uncrawlable-url': + self.recent_href = attr[1].encode('ascii') + self.recent_href = base64.b64decode(self.recent_href) + self.recent_href = WIKI_JUST_DOMAIN + self.recent_href.decode('ascii') + + def handle_data(self, data): + if self.recent_href: + self.new_string = self.new_string + "[{}](<{}>)".format(data, self.recent_href) + self.recent_href = "" + else: + self.new_string = self.new_string + data + + def handle_comment(self, data): + self.new_string = self.new_string + data + + def handle_endtag(self, tag): + logger.debug(self.new_string) + LinkParser = LinkParser() class MWError(Exception): pass +def prepare_paths(): + global WIKI_API_PATH + global WIKI_ARTICLE_PATH + global WIKI_SCRIPT_PATH + global WIKI_JUST_DOMAIN + """Set the URL paths for article namespace and script namespace + WIKI_API_PATH will be: WIKI_DOMAIN/api.php + WIKI_ARTICLE_PATH will be: WIKI_DOMAIN/articlepath/$1 where $1 is the replaced string + WIKI_SCRIPT_PATH will be: WIKI_DOMAIN/ + WIKI_JUST_DOMAIN will be: WIKI_DOMAIN""" + def quick_try_url(url): + """Quickly test if URL is the proper script path, + False if it appears invalid + dictionary when it appears valid""" + try: + request = requests.get(url, timeout=5) + if request.status_code == requests.codes.ok: + if request.json()["query"]["general"] is not None: + return request + return False + except (KeyError, requests.exceptions.ConnectionError): + return False + try: + parsed_url = urlparse(settings["wiki_url"]) + except KeyError: + logger.critical("wiki_url is not specified in the settings. Please provide the wiki url in the settings and start the script again.") + sys.exit(1) + for url_scheme in (settings["wiki_url"], settings["wiki_url"].split("wiki")[0], urlunparse((*parsed_url[0:2], "", "", "", ""))): # check different combinations, it's supposed to be idiot-proof + tested = quick_try_url(url_scheme + "/api.php?action=query&format=json&meta=siteinfo") + if tested: + WIKI_API_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["scriptpath"] + "/api.php" + WIKI_SCRIPT_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["scriptpath"] + "/" + WIKI_ARTICLE_PATH = urlunparse((*parsed_url[0:2], "", "", "", "")) + tested.json()["query"]["general"]["articlepath"] + WIKI_JUST_DOMAIN = urlunparse((*parsed_url[0:2], "", "", "", "")) + break + else: + logger.critical("Could not verify wikis paths. Please make sure you have given the proper wiki URL in settings.json and your Internet connection is working.") + sys.exit(1) + +def create_article_path(article: str) -> str: + """Takes the string and creates an URL with it as the article name""" + return WIKI_ARTICLE_PATH.replace("$1", article) + def send(message, name, avatar): dictionary_creator = {"content": message} if name: @@ -127,7 +209,7 @@ def send_to_discord(data): def pull_comment(comment_id): try: - comment = recent_changes.handle_mw_errors(recent_changes.safe_request("https://{}.gamepedia.com/api.php?action=comment&do=getRaw&comment_id={}&format=json".format(settings["wiki"], comment_id)).json())["text"] + comment = recent_changes.handle_mw_errors(recent_changes.safe_request("{wiki}?action=comment&do=getRaw&comment_id={comment}&format=json".format(wiki=WIKI_API_PATH, comment=comment_id)).json())["text"] logger.debug("Got the following comment from the API: {}".format(comment)) except MWError: pass @@ -144,12 +226,12 @@ def pull_comment(comment_id): def compact_formatter(action, change, parsed_comment, categories): if action != "suppressed": - author_url = link_formatter("https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"], user=change["user"])) + author_url = link_formatter(create_article_path("User:{user}".format( user=change["user"]))) author = change["user"] parsed_comment = "" if parsed_comment is None else " *("+parsed_comment+")*" if action in ["edit", "new"]: - edit_link = link_formatter("https://{wiki}.gamepedia.com/index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format( - wiki=settings["wiki"], pageid=change["pageid"], diff=change["revid"], oldrev=change["old_revid"], + edit_link = link_formatter("{wiki}index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format( + wiki=WIKI_SCRIPT_PATH, pageid=change["pageid"], diff=change["revid"], oldrev=change["old_revid"], article=change["title"])) edit_size = change["newlen"] - change["oldlen"] if edit_size > 0: @@ -163,55 +245,51 @@ def compact_formatter(action, change, parsed_comment, categories): else: content = _("[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}{edit_size})").format(author=author, author_url=author_url, article=change["title"], edit_link=edit_link, comment=parsed_comment, edit_size=edit_size, sign=sign) elif action =="upload/upload": - file_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + file_link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) uploaded [{file}]({file_link}){comment}").format(author=author, author_url=author_url, file=change["title"], file_link=file_link, comment=parsed_comment) + elif action == "upload/revert": + file_link = link_formatter(create_article_path(change["title"])) + content = _("[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}").format( + author=author, author_url=author_url, file=change["title"], file_link=file_link, comment=parsed_comment) elif action == "upload/overwrite": - file_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + file_link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) uploaded a new version of [{file}]({file_link}){comment}").format(author=author, author_url=author_url, file=change["title"], file_link=file_link, comment=parsed_comment) elif action == "delete/delete": - page_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + page_link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) deleted [{page}]({page_link}){comment}").format(author=author, author_url=author_url, page=change["title"], page_link=page_link, comment=parsed_comment) elif action == "delete/delete_redir": - page_link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + page_link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) deleted redirect by overwriting [{page}]({page_link}){comment}").format(author=author, author_url=author_url, page=change["title"], page_link=page_link, comment=parsed_comment) elif action == "move/move": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["logparams"]['target_title'])) + link = link_formatter(create_article_path(change["logparams"]['target_title'])) redirect_status = _("without making a redirect") if "suppressredirect" in change["logparams"] else _("with a redirect") content = _("[{author}]({author_url}) moved {redirect}*{article}* to [{target}]({target_url}) {made_a_redirect}{comment}").format(author=author, author_url=author_url, redirect="⤷ " if "redirect" in change else "", article=change["title"], target=change["logparams"]['target_title'], target_url=link, comment=parsed_comment, made_a_redirect=redirect_status) elif action == "move/move_redir": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["logparams"]["target_title"])) + link = link_formatter(create_article_path(change["logparams"]["target_title"])) redirect_status = _("without making a redirect") if "suppressredirect" in change["logparams"] else _( "with a redirect") content = _("[{author}]({author_url}) moved {redirect}*{article}* over redirect to [{target}]({target_url}) {made_a_redirect}{comment}").format(author=author, author_url=author_url, redirect="⤷ " if "redirect" in change else "", article=change["title"], target=change["logparams"]['target_title'], target_url=link, comment=parsed_comment, made_a_redirect=redirect_status) elif action == "protect/move_prot": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["logparams"]["oldtitle_title"])) + link = link_formatter(create_article_path(change["logparams"]["oldtitle_title"])) content = _( "[{author}]({author_url}) moved protection settings from {redirect}*{article}* to [{target}]({target_url}){comment}").format(author=author, author_url=author_url, redirect="⤷ " if "redirect" in change else "", article=change["logparams"]["oldtitle_title"], target=change["title"], target_url=link, comment=parsed_comment) elif action == "block/block": user = change["title"].split(':')[1] + restriction_description = "" try: ipaddress.ip_address(user) - link = link_formatter("https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"], - user=user)) + link = link_formatter(create_article_path("Special:Contributions/{user}".format(user=user))) except ValueError: - link = link_formatter("https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=change["title"])) + link = link_formatter(create_article_path(change["title"])) if change["logparams"]["duration"] == "infinite": block_time = _("infinity and beyond") else: @@ -227,46 +305,72 @@ def compact_formatter(action, change, parsed_comment, categories): except AttributeError: logger.error("Could not strip s from the block event, seems like the regex didn't work?") return + if "sitewide" not in change["logparams"]: + restriction_description = "" + if change["logparams"]["restrictions"]["pages"]: + restriction_description = _(" on pages: ") + for page in change["logparams"]["restrictions"]["pages"]: + restricted_pages = ["*{page}*".format(page=i["page_title"]) for i in change["logparams"]["restrictions"]["pages"]] + restriction_description = restriction_description + ", ".join(restricted_pages) + if change["logparams"]["restrictions"]["namespaces"]: + namespaces = [] + if restriction_description: + restriction_description = restriction_description + _(" and namespaces: ") + else: + restriction_description = _(" on namespaces: ") + for namespace in change["logparams"]["restrictions"]["namespaces"]: + if str(namespace) in recent_changes.namespaces: # if we have cached namespace name for given namespace number, add its name to the list + namespaces.append("*{ns}*".format(ns=recent_changes.namespaces[str(namespace)]["*"])) + else: + namespaces.append("*{ns}*".format(ns=namespace)) + restriction_description = restriction_description + ", ".join(namespaces) + restriction_description = restriction_description + "." + if len(restriction_description) > 1020: + logger.debug(restriction_description) + restriction_description = restriction_description[:1020] + "…" content = _( - "[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{comment}").format(author=author, author_url=author_url, user=user, time=block_time, user_url=link, comment=parsed_comment) + "[{author}]({author_url}) blocked [{user}]({user_url}) for {time}{restriction_desc}{comment}").format(author=author, author_url=author_url, user=user, time=block_time, user_url=link, restriction_desc=restriction_description, comment=parsed_comment) elif action == "block/reblock": - link = link_formatter("https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=change["title"])) + link = link_formatter(create_article_path(change["title"])) user = change["title"].split(':')[1] content = _("[{author}]({author_url}) changed block settings for [{blocked_user}]({user_url}){comment}").format(author=author, author_url=author_url, blocked_user=user, user_url=link, comment=parsed_comment) elif action == "block/unblock": - link = link_formatter("https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=change["title"])) + link = link_formatter(create_article_path(change["title"])) user = change["title"].split(':')[1] content = _("[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}").format(author=author, author_url=author_url, blocked_user=user, user_url=link, comment=parsed_comment) elif action == "curseprofile/comment-created": - link = link_formatter("https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=change["logparams"]["4:comment_id"])) + link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) content = _("[{author}]({author_url}) left a [comment]({comment}) on {target} profile").format(author=author, author_url=author_url, comment=link, target=change["title"].split(':')[1]+"'s" if change["title"].split(':')[1] != change["user"] else _("their own profile")) elif action == "curseprofile/comment-replied": - link = link_formatter("https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=change["logparams"][ - "4:comment_id"])) + link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) content = _("[{author}]({author_url}) replied to a [comment]({comment}) on {target} profile").format(author=author, author_url=author_url, comment=link, target=change["title"].split(':')[1] if change["title"].split(':')[1] !=change["user"] else _("their own")) elif action == "curseprofile/comment-edited": - link = link_formatter("https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=change["logparams"][ - "4:comment_id"])) + link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) content = _("[{author}]({author_url}) edited a [comment]({comment}) on {target} profile").format(author=author, author_url=author_url, comment=link, target=change["title"].split(':')[1] if change["title"].split(':')[1] !=change["user"] else _("their own")) + elif action == "curseprofile/comment-purged": + link = link_formatter(create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"]))) + content = _("[{author}]({author_url}) purged a comment on {target} profile").format(author=author, + author_url=author_url, + target= + change["title"].split(':')[ + 1] if + change["title"].split(':')[ + 1] != change[ + "user"] else _( + "their own")) elif action == "curseprofile/comment-deleted": content = _("[{author}]({author_url}) deleted a comment on {target} profile").format(author=author, author_url=author_url, target=change["title"].split(':')[1] if change["title"].split(':')[1] !=change["user"] else _("their own")) elif action == "curseprofile/profile-edited": - link = link_formatter("https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], - target=change["title"].split(':')[1])) + link = link_formatter(create_article_path("UserProfile:{user}".format(user=change["title"].split(":")[1]))) target = _("[{target}]({target_url})'s").format(target=change["title"].split(':')[1], target_url=link) if change["title"].split(':')[1] != author else _("[their own]({target_url})").format(target_url=link) content = _("[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*").format(author=author, author_url=author_url, @@ -274,7 +378,7 @@ def compact_formatter(action, change, parsed_comment, categories): field=profile_field_name(change["logparams"]['4:section'], False), desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text()) elif action in ("rights/rights", "rights/autopromote"): - link = link_formatter("https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"], user=change["title"].split(":")[1])) + link = link_formatter(create_article_path("User:{user}".format(user=change["title"].split(":")[1]))) old_groups = [] new_groups = [] for name in change["logparams"]["oldgroups"]: @@ -288,21 +392,19 @@ def compact_formatter(action, change, parsed_comment, categories): if action == "rights/rights": content = "[{author}]({author_url}) changed group membership for [{target}]({target_url}) from {old_groups} to {new_groups}{comment}".format(author=author, author_url=author_url, target=change["title"].split(":")[1], target_url=link, old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), comment=parsed_comment) - else: # TODO Check what happens with author when the system autopromotes + else: content = "{author} autopromoted [{target}]({target_url}) from {old_groups} to {new_groups}{comment}".format( author=_("System"), author_url=author_url, target=change["title"].split(":")[1], target_url=link, old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), comment=parsed_comment) elif action == "protect/protect": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) protected [{article}]({article_url}) with the following settings: {settings}{comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, settings=change["logparams"]["description"]+_(" [cascading]") if "cascade" in change["logparams"] else "", comment=parsed_comment) elif action == "protect/modify": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _( "[{author}]({author_url}) modified protection settings of [{article}]({article_url}) to: {settings}{comment}").format( author=author, author_url=author_url, @@ -310,74 +412,64 @@ def compact_formatter(action, change, parsed_comment, categories): settings=change["logparams"]["description"] + _(" [cascading]") if "cascade" in change["logparams"] else "", comment=parsed_comment) elif action == "protect/unprotect": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) removed protection from [{article}]({article_url}){comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, comment=parsed_comment) elif action == "delete/revision": amount = len(change["logparams"]["ids"]) - link = link_formatter("".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = ngettext("[{author}]({author_url}) changed visibility of revision on page [{article}]({article_url}){comment}", "[{author}]({author_url}) changed visibility of {amount} revisions on page [{article}]({article_url}){comment}", amount).format(author=author, author_url=author_url, article=change["title"], article_url=link, amount=amount, comment=parsed_comment) elif action == "import/upload": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = ngettext("[{author}]({author_url}) imported [{article}]({article_url}) with {count} revision{comment}", "[{author}]({author_url}) imported [{article}]({article_url}) with {count} revisions{comment}", change["logparams"]["count"]).format( author=author, author_url=author_url, article=change["title"], article_url=link, count=change["logparams"]["count"], comment=parsed_comment) elif action == "delete/restore": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) restored [{article}]({article_url}){comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, comment=parsed_comment) elif action == "delete/event": content = _("[{author}]({author_url}) changed visibility of log events{comment}").format(author=author, author_url=author_url, comment=parsed_comment) elif action == "import/interwiki": content = _("[{author}]({author_url}) imported interwiki{comment}").format(author=author, author_url=author_url, comment=parsed_comment) elif action == "abusefilter/modify": - link = "".format(wiki=settings["wiki"], number=change["logparams"]['newId'], historyid=change["logparams"]["historyId"]) + link = link_formatter(create_article_path("Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(number=change["logparams"]['newId'], historyid=change["logparams"]["historyId"]))) content = _("[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})").format(author=author, author_url=author_url, number=change["logparams"]['newId'], filter_url=link) elif action == "abusefilter/create": - link = "".format(wiki=settings["wiki"], number=change["logparams"]['newId']) + link = link_formatter(create_article_path("Special:AbuseFilter/{number}".format(number=change["logparams"]['newId']))) content = _("[{author}]({author_url}) created abuse filter [number {number}]({filter_url})").format(author=author, author_url=author_url, number=change["logparams"]['newId'], filter_url=link) elif action == "merge/merge": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) - link_dest = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["logparams"]["dest_title"])) + link = link_formatter(create_article_path(change["title"])) + link_dest = link_formatter(create_article_path(change["logparams"]["dest_title"])) content = _("[{author}]({author_url}) merged revision histories of [{article}]({article_url}) into [{dest}]({dest_url}){comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, dest_url=link_dest, dest=change["logparams"]["dest_title"], comment=parsed_comment) elif action == "interwiki/iw_add": - link = link_formatter("https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])) + link = link_formatter(create_article_path("Special:Interwiki")) content = _("[{author}]({author_url}) added an entry to the [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format(author=author, author_url=author_url, desc=parsed_comment, prefix=change["logparams"]['0'], website=change["logparams"]['1'], table_url=link) elif action == "interwiki/iw_edit": - link = link_formatter("https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])) + link = link_formatter(create_article_path("Special:Interwiki")) content = _("[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) pointing to {website} with {prefix} prefix").format(author=author, author_url=author_url, desc=parsed_comment, prefix=change["logparams"]['0'], website=change["logparams"]['1'], table_url=link) elif action == "interwiki/iw_delete": - link = link_formatter("https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"])) + link = link_formatter(create_article_path("Special:Interwiki")) content = _("[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})").format(author=author, author_url=author_url, table_url=link) elif action == "contentmodel/change": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) changed the content model of the page [{article}]({article_url}) from {old} to {new}{comment}").format(author=author, author_url=author_url, article=change["title"], article_url=link, old=change["logparams"]["oldmodel"], new=change["logparams"]["newmodel"], comment=parsed_comment) elif action == "sprite/sprite": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) edited the sprite for [{article}]({article_url})").format(author=author, author_url=author_url, article=change["title"], article_url=link) elif action == "sprite/sheet": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) created the sprite sheet for [{article}]({article_url})").format(author=author, author_url=author_url, article=change["title"], article_url=link) elif action == "sprite/slice": - link = link_formatter("https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"])) + link = link_formatter(create_article_path(change["title"])) content = _("[{author}]({author_url}) edited the slice for [{article}]({article_url})").format(author=author, author_url=author_url, article=change["title"], article_url=link) elif action == "cargo/createtable": LinkParser.feed(change["logparams"]["0"]) @@ -397,18 +489,18 @@ def compact_formatter(action, change, parsed_comment, categories): LinkParser.new_string = "" content = _("[{author}]({author_url}) replaced the Cargo table \"{table}\"").format(author=author, author_url=author_url, table=table) elif action == "managetags/create": - link = "".format(wiki=settings["wiki"]) + link = link_formatter(create_article_path("Special:Tags")) content = _("[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) recent_changes.init_info() elif action == "managetags/delete": - link = "".format(wiki=settings["wiki"]) + link = link_formatter(create_article_path("Special:Tags")) content = _("[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) recent_changes.init_info() elif action == "managetags/activate": - link = "".format(wiki=settings["wiki"]) + link = link_formatter(create_article_path("Special:Tags")) content = _("[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) elif action == "managetags/deactivate": - link = "".format(wiki=settings["wiki"]) + link = link_formatter(create_article_path("Special:Tags")) content = _("[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"").format(author=author, author_url=author_url, tag=change["logparams"]["tag"], tag_url=link) elif action == "suppressed": content = _("An action has been hidden by administration.") @@ -423,13 +515,12 @@ def embed_formatter(action, change, parsed_comment, categories): parsed_comment = _("No description provided") if action != "suppressed": if "anon" in change: - author_url = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"], - user=change["user"].replace(" ", "_")) # Replace here needed in case of #75 + author_url = create_article_path("Special:Contributions/{user}".format(user=change["user"].replace(" ", "_"))) # Replace here needed in case of #75 logger.debug("current user: {} with cache of IPs: {}".format(change["user"], recent_changes.map_ips.keys())) if change["user"] not in list(recent_changes.map_ips.keys()): contibs = safe_read(recent_changes.safe_request( - "https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=usercontribs&uclimit=max&ucuser={user}&ucstart={timestamp}&ucprop=".format( - wiki=settings["wiki"], user=change["user"], timestamp=change["timestamp"])), "query", "usercontribs") + "{wiki}?action=query&format=json&list=usercontribs&uclimit=max&ucuser={user}&ucstart={timestamp}&ucprop=".format( + wiki=WIKI_API_PATH, user=change["user"], timestamp=change["timestamp"])), "query", "usercontribs") if contibs is None: logger.warning( "WARNING: Something went wrong when checking amount of contributions for given IP address") @@ -446,8 +537,7 @@ def embed_formatter(action, change, parsed_comment, categories): change["user"] = "{author} ({amount})".format(author=change["user"], amount=recent_changes.map_ips[change["user"]]) else: - author_url = "https://{wiki}.gamepedia.com/User:{user}".format(wiki=settings["wiki"], - user=change["user"].replace(" ", "_")) + author_url = create_article_path("User:{}".format(change["user"].replace(" ", "_"))) embed["author"]["name"] = change["user"] embed["author"]["url"] = author_url if action in ("edit", "new"): # edit or new page @@ -466,8 +556,8 @@ def embed_formatter(action, change, parsed_comment, categories): colornumber = 8750469 if change["title"].startswith("MediaWiki:Tag-"): # Refresh tag list when tag display name is edited recent_changes.init_info() - link = "https://{wiki}.gamepedia.com/index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format( - wiki=settings["wiki"], pageid=change["pageid"], diff=change["revid"], oldrev=change["old_revid"], + link = "{wiki}index.php?title={article}&curid={pageid}&diff={diff}&oldid={oldrev}".format( + wiki=WIKI_SCRIPT_PATH, pageid=change["pageid"], diff=change["revid"], oldrev=change["old_revid"], article=change["title"].replace(" ", "_")) embed["title"] = "{redirect}{article} ({new}{minor}{bot} {editsize})".format(redirect="⤷ " if "redirect" in change else "", article=change["title"], editsize="+" + str( editsize) if editsize > 0 else editsize, new=_("(N!) ") if action == "new" else "", @@ -475,13 +565,13 @@ def embed_formatter(action, change, parsed_comment, categories): if settings["appearance"]["embed"]["show_edit_changes"]: if action == "new": changed_content = safe_read(recent_changes.safe_request( - "https://{wiki}.gamepedia.com/api.php?action=compare&format=json&fromtext=&torev={diff}&topst=1&prop=diff".format( - wiki=settings["wiki"], diff=change["revid"] + "{wiki}?action=compare&format=json&fromtext=&torev={diff}&topst=1&prop=diff".format( + wiki=WIKI_API_PATH, diff=change["revid"] )), "compare", "*") else: changed_content = safe_read(recent_changes.safe_request( - "https://{wiki}.gamepedia.com/api.php?action=compare&format=json&fromrev={oldrev}&torev={diff}&topst=1&prop=diff".format( - wiki=settings["wiki"], diff=change["revid"],oldrev=change["old_revid"] + "{wiki}?action=compare&format=json&fromrev={oldrev}&torev={diff}&topst=1&prop=diff".format( + wiki=WIKI_API_PATH, diff=change["revid"],oldrev=change["old_revid"] )), "compare", "*") if changed_content: if "fields" not in embed: @@ -507,42 +597,49 @@ def embed_formatter(action, change, parsed_comment, categories): {"name": _("Added"), "value": "{data}".format(data=EditDiff.small_prev_ins), "inline": True}) else: logger.warning("Unable to download data on the edit content!") - elif action in ("upload/overwrite", "upload/upload"): # sending files + elif action in ("upload/overwrite", "upload/upload", "upload/revert"): # 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=change["title"])), "query", "pages") - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + "{wiki}?action=query&format=json&prop=imageinfo&list=&meta=&titles={filename}&iiprop=timestamp%7Curl%7Carchivename&iilimit=5".format( + wiki=WIKI_API_PATH, filename=change["title"])), "query", "pages") + link = create_article_path(change["title"].replace(" ", "_")) additional_info_retrieved = False if urls is not None: logger.debug(urls) if "-1" not in urls: # image still exists and not removed - img_info = next(iter(urls.values()))["imageinfo"] - embed["image"]["url"] = img_info[0]["url"] - additional_info_retrieved = True + try: + img_info = next(iter(urls.values()))["imageinfo"] + for num, revision in enumerate(img_info): + if revision["timestamp"] == change["logparams"]["img_timestamp"]: # find the correct revision corresponding for this log entry + embed["image"]["url"] = "{rev}?{cache}".format(rev=revision["url"], cache=int(time.time()*5)) # cachebusting + additional_info_retrieved = True + break + except KeyError: + logger.warning("Wiki did not respond with extended information about file. The preview will not be shown.") else: logger.warning("Request for additional image information have failed. The preview will not be shown.") - if action == "upload/overwrite": + if action in ("upload/overwrite", "upload/revert"): if additional_info_retrieved: article_encoded = change["title"].replace(" ", "_").replace(')', '\)') try: - img_timestamp = [x for x in img_info[1]["timestamp"] if x.isdigit()] + revision = img_info[num+1] except IndexError: logger.exception("Could not analize the information about the image (does it have only one version when expected more in overwrite?) which resulted in no Options field: {}".format(img_info)) else: - undolink = "https://{wiki}.gamepedia.com/index.php?title={filename}&action=revert&oldimage={timestamp}%21{filenamewon}".format( - wiki=settings["wiki"], filename=article_encoded, timestamp="".join(img_timestamp), - filenamewon=article_encoded.split(":", 1)[1]) + undolink = "{wiki}index.php?title={filename}&action=revert&oldimage={archiveid}".format( + wiki=WIKI_SCRIPT_PATH, filename=article_encoded, archiveid=revision["archivename"]) embed["fields"] = [{"name": _("Options"), "value": _("([preview]({link}) | [undo]({undolink}))").format( link=embed["image"]["url"], undolink=undolink)}] - embed["title"] = _("Uploaded a new version of {name}").format(name=change["title"]) + if action == "upload/overwrite": + embed["title"] = _("Uploaded a new version of {name}").format(name=change["title"]) + elif action == "upload/revert": + embed["title"] = _("Reverted a version of {name}").format(name=change["title"]) else: embed["title"] = _("Uploaded {name}").format(name=change["title"]) if settings["license_detection"]: article_content = safe_read(recent_changes.safe_request( - "https://{wiki}.gamepedia.com/api.php?action=query&format=json&prop=revisions&titles={article}&rvprop=content".format( - wiki=settings["wiki"], article=quote_plus(change["title"], safe=''))), "query", "pages") + "{wiki}?action=query&format=json&prop=revisions&titles={article}&rvprop=content".format( + wiki=WIKI_API_PATH, article=quote_plus(change["title"], safe=''))), "query", "pages") if article_content is None: logger.warning("Something went wrong when getting license for the image") return 0 @@ -572,40 +669,32 @@ def embed_formatter(action, change, parsed_comment, categories): {"name": _("Options"), "value": _("([preview]({link}))").format(link=embed["image"]["url"])}] elif action == "delete/delete": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Deleted page {article}").format(article=change["title"]) elif action == "delete/delete_redir": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Deleted redirect {article} by overwriting").format(article=change["title"]) elif action == "move/move": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["logparams"]['target_title'].replace(" ", "_")) + link = create_article_path(change["logparams"]['target_title'].replace(" ", "_")) parsed_comment = "{supress}. {desc}".format(desc=parsed_comment, supress=_("No redirect has been made") if "suppressredirect" in change["logparams"] else _( "A redirect has been made")) embed["title"] = _("Moved {redirect}{article} to {target}").format(redirect="⤷ " if "redirect" in change else "", article=change["title"], target=change["logparams"]['target_title']) elif action == "move/move_redir": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["logparams"]["target_title"].replace(" ", "_")) + link = create_article_path(change["logparams"]["target_title"].replace(" ", "_")) embed["title"] = _("Moved {redirect}{article} to {title} over redirect").format(redirect="⤷ " if "redirect" in change else "", article=change["title"], title=change["logparams"]["target_title"]) elif action == "protect/move_prot": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["logparams"]["oldtitle_title"].replace(" ", "_")) + link = create_article_path(change["logparams"]["oldtitle_title"].replace(" ", "_")) embed["title"] = _("Moved protection settings from {redirect}{article} to {title}").format(redirect="⤷ " if "redirect" in change else "", article=change["logparams"]["oldtitle_title"], title=change["title"]) elif action == "block/block": user = change["title"].split(':')[1] try: ipaddress.ip_address(user) - link = "https://{wiki}.gamepedia.com/Special:Contributions/{user}".format(wiki=settings["wiki"], - user=user) + link = create_article_path("Special:Contributions/{user}".format(user=user)) except ValueError: - link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=change["title"].replace(" ", "_").replace(')', - '\)')) + link = create_article_path(change["title"].replace(" ", "_").replace(')', '\)')) if change["logparams"]["duration"] == "infinite": block_time = _("infinity and beyond") else: @@ -617,62 +706,81 @@ def embed_formatter(action, change, parsed_comment, categories): except AttributeError: logger.error("Could not strip s from the block event, seems like the regex didn't work?") return + if "sitewide" not in change["logparams"]: + restriction_description = "" + if change["logparams"]["restrictions"]["pages"]: + restriction_description = _("Blocked from editing the following pages: ") + for page in change["logparams"]["restrictions"]["pages"]: + restricted_pages = ["*"+i["page_title"]+"*" for i in change["logparams"]["restrictions"]["pages"]] + restriction_description = restriction_description + ", ".join(restricted_pages) + if change["logparams"]["restrictions"]["namespaces"]: + namespaces = [] + if restriction_description: + restriction_description = restriction_description + _(" and namespaces: ") + else: + restriction_description = _("Blocked from editing pages on following namespaces: ") + for namespace in change["logparams"]["restrictions"]["namespaces"]: + if str(namespace) in recent_changes.namespaces: # if we have cached namespace name for given namespace number, add its name to the list + namespaces.append("*{ns}*".format(ns=recent_changes.namespaces[str(namespace)]["*"])) + else: + namespaces.append("*{ns}*".format(ns=namespace)) + restriction_description = restriction_description + ", ".join(namespaces) + restriction_description = restriction_description + "." + if len(restriction_description) > 1020: + logger.debug(restriction_description) + restriction_description = restriction_description[:1020]+"…" + if "fields" not in embed: + embed["fields"] = [] + embed["fields"].append( + {"name": _("Partial block details"), "value": restriction_description, "inline": True}) embed["title"] = _("Blocked {blocked_user} for {time}").format(blocked_user=user, time=block_time) elif action == "block/reblock": - link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=change["title"].replace(" ", "_").replace(')', - '\)')) + link = create_article_path(change["title"].replace(" ", "_").replace(')', '\)')) user = change["title"].split(':')[1] embed["title"] = _("Changed block settings for {blocked_user}").format(blocked_user=user) elif action == "block/unblock": - link = "https://{wiki}.gamepedia.com/{user}".format(wiki=settings["wiki"], - user=change["title"].replace(" ", "_").replace(')', - '\)')) + link = create_article_path(change["title"].replace(" ", "_").replace(')', '\)')) user = change["title"].split(':')[1] embed["title"] = _("Unblocked {blocked_user}").format(blocked_user=user) elif action == "curseprofile/comment-created": if settings["appearance"]["embed"]["show_edit_changes"]: parsed_comment = pull_comment(change["logparams"]["4:comment_id"]) - link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=change["logparams"]["4:comment_id"]) + link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) embed["title"] = _("Left a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \ change["user"] else _( "Left a comment on their own profile") elif action == "curseprofile/comment-replied": if settings["appearance"]["embed"]["show_edit_changes"]: parsed_comment = pull_comment(change["logparams"]["4:comment_id"]) - link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=change["logparams"]["4:comment_id"]) + link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) embed["title"] = _("Replied to a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \ change["user"] else _( "Replied to a comment on their own profile") elif action == "curseprofile/comment-edited": if settings["appearance"]["embed"]["show_edit_changes"]: parsed_comment = pull_comment(change["logparams"]["4:comment_id"]) - link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=change["logparams"]["4:comment_id"]) + link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) embed["title"] = _("Edited a comment on {target}'s profile").format(target=change["title"].split(':')[1]) if change["title"].split(':')[1] != \ change["user"] else _( "Edited a comment on their own profile") elif action == "curseprofile/profile-edited": - link = "https://{wiki}.gamepedia.com/UserProfile:{target}".format(wiki=settings["wiki"], - target=change["title"].split(':')[1].replace(" ", - "_").replace( - ')', '\)')) + link = create_article_path("UserProfile:{target}".format(target=change["title"].split(':')[1].replace(" ", "_").replace(')', '\)'))) embed["title"] = _("Edited {target}'s profile").format(target=change["title"].split(':')[1]) if change["user"] != change["title"].split(':')[1] else _("Edited their own profile") if not change["parsedcomment"]: # If the field is empty parsed_comment = _("Cleared the {field} field").format(field=profile_field_name(change["logparams"]['4:section'], True)) else: parsed_comment = _("{field} field changed to: {desc}").format(field=profile_field_name(change["logparams"]['4:section'], True), desc=BeautifulSoup(change["parsedcomment"], "lxml").get_text()) + elif action == "curseprofile/comment-purged": + link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) + embed["title"] = _("Purged a comment on {target}'s profile").format(target=change["title"].split(':')[1]) elif action == "curseprofile/comment-deleted": if "4:comment_id" in change["logparams"]: - link = "https://{wiki}.gamepedia.com/Special:CommentPermalink/{commentid}".format(wiki=settings["wiki"], - commentid=change["logparams"]["4:comment_id"]) + link = create_article_path("Special:CommentPermalink/{commentid}".format(commentid=change["logparams"]["4:comment_id"])) else: - link = "https://{wiki}.gamepedia.com/{profile}".format(wiki=settings["wiki"], profile=change["title"]) + link = create_article_path(change["title"]) embed["title"] = _("Deleted a comment on {target}'s profile").format(target=change["title"].split(':')[1]) elif action in ("rights/rights", "rights/autopromote"): - link = "https://{wiki}.gamepedia.com/User:".format(wiki=settings["wiki"]) + change["title"].split(":")[1].replace(" ", "_") + link = create_article_path("User:{}".format(change["title"].split(":")[1].replace(" ", "_"))) if action == "rights/rights": embed["title"] = _("Changed group membership for {target}").format(target=change["title"].split(":")[1]) else: @@ -696,91 +804,80 @@ def embed_formatter(action, change, parsed_comment, categories): parsed_comment = _("Groups changed from {old_groups} to {new_groups}{reason}").format( old_groups=", ".join(old_groups), new_groups=', '.join(new_groups), reason=reason) elif action == "protect/protect": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Protected {target}").format(target=change["title"]) parsed_comment = "{settings}{cascade} | {reason}".format(settings=change["logparams"]["description"], cascade=_(" [cascading]") if "cascade" in change["logparams"] else "", reason=parsed_comment) elif action == "protect/modify": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Changed protection level for {article}").format(article=change["title"]) parsed_comment = "{settings}{cascade} | {reason}".format(settings=change["logparams"]["description"], cascade=_(" [cascading]") if "cascade" in change["logparams"] else "", reason=parsed_comment) elif action == "protect/unprotect": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Removed protection from {article}").format(article=change["title"]) elif action == "delete/revision": amount = len(change["logparams"]["ids"]) - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = ngettext("Changed visibility of revision on page {article} ", "Changed visibility of {amount} revisions on page {article} ", amount).format( article=change["title"], amount=amount) elif action == "import/upload": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = ngettext("Imported {article} with {count} revision", "Imported {article} with {count} revisions", change["logparams"]["count"]).format( article=change["title"], count=change["logparams"]["count"]) elif action == "delete/restore": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Restored {article}").format(article=change["title"]) elif action == "delete/event": - link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) + link = create_article_path("Special:RecentChanges") embed["title"] = _("Changed visibility of log events") elif action == "import/interwiki": - link = "https://{wiki}.gamepedia.com/Special:RecentChanges".format(wiki=settings["wiki"]) + link = create_article_path("Special:RecentChanges") embed["title"] = _("Imported interwiki") elif action == "abusefilter/modify": - link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(wiki=settings["wiki"], number=change["logparams"]['newId'], historyid=change["logparams"]["historyId"]) + link = create_article_path("Special:AbuseFilter/history/{number}/diff/prev/{historyid}".format(number=change["logparams"]['newId'], historyid=change["logparams"]["historyId"])) embed["title"] = _("Edited abuse filter number {number}").format(number=change["logparams"]['newId']) elif action == "abusefilter/create": - link = "https://{wiki}.gamepedia.com/Special:AbuseFilter/{number}".format(wiki=settings["wiki"], number=change["logparams"]['newId']) + link = create_article_path("Special:AbuseFilter/{number}".format( number=change["logparams"]['newId'])) embed["title"] = _("Created abuse filter number {number}").format(number=change["logparams"]['newId']) elif action == "merge/merge": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Merged revision histories of {article} into {dest}").format(article=change["title"], dest=change["logparams"]["dest_title"]) elif action == "interwiki/iw_add": - link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) + link = create_article_path("Special:Interwiki") embed["title"] = _("Added an entry to the interwiki table") parsed_comment = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=parsed_comment, prefix=change["logparams"]['0'], website=change["logparams"]['1']) elif action == "interwiki/iw_edit": - link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) + link = create_article_path("Special:Interwiki") embed["title"] = _("Edited an entry in interwiki table") parsed_comment = _("Prefix: {prefix}, website: {website} | {desc}").format(desc=parsed_comment, prefix=change["logparams"]['0'], website=change["logparams"]['1']) elif action == "interwiki/iw_delete": - link = "https://{wiki}.gamepedia.com/Special:Interwiki".format(wiki=settings["wiki"]) + link = create_article_path("Special:Interwiki") embed["title"] = _("Deleted an entry in interwiki table") parsed_comment = _("Prefix: {prefix} | {desc}").format(desc=parsed_comment, prefix=change["logparams"]['0']) elif action == "contentmodel/change": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Changed the content model of the page {article}").format(article=change["title"]) parsed_comment = _("Model changed from {old} to {new}: {reason}").format(old=change["logparams"]["oldmodel"], new=change["logparams"]["newmodel"], reason=parsed_comment) elif action == "sprite/sprite": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Edited the sprite for {article}").format(article=change["title"]) elif action == "sprite/sheet": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Created the sprite sheet for {article}").format(article=change["title"]) elif action == "sprite/slice": - link = "https://{wiki}.gamepedia.com/{article}".format(wiki=settings["wiki"], - article=change["title"].replace(" ", "_")) + link = create_article_path(change["title"].replace(" ", "_")) embed["title"] = _("Edited the slice for {article}").format(article=change["title"]) elif action == "cargo/createtable": LinkParser.feed(change["logparams"]["0"]) @@ -788,44 +885,49 @@ def embed_formatter(action, change, parsed_comment, categories): LinkParser.new_string = "" link = table.group(2) embed["title"] = _("Created the Cargo table \"{table}\"").format(table=table.group(1)) + parsed_comment = None elif action == "cargo/deletetable": - link = "https://{wiki}.gamepedia.com/Special:CargoTables".format(wiki=settings["wiki"]) + link = create_article_path("Special:CargoTables") embed["title"] = _("Deleted the Cargo table \"{table}\"").format(table=change["logparams"]["0"]) + parsed_comment = None elif action == "cargo/recreatetable": LinkParser.feed(change["logparams"]["0"]) table = re.search(r"\[(.*?)\]\(<(.*?)>\)", LinkParser.new_string) LinkParser.new_string = "" link = table.group(2) embed["title"] = _("Recreated the Cargo table \"{table}\"").format(table=table.group(1)) + parsed_comment = None elif action == "cargo/replacetable": LinkParser.feed(change["logparams"]["0"]) table = re.search(r"\[(.*?)\]\(<(.*?)>\)", LinkParser.new_string) LinkParser.new_string = "" link = table.group(2) embed["title"] = _("Replaced the Cargo table \"{table}\"").format(table=table.group(1)) + parsed_comment = None elif action == "managetags/create": - link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) + link = create_article_path("Special:Tags") embed["title"] = _("Created a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) recent_changes.init_info() elif action == "managetags/delete": - link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) + link = create_article_path("Special:Tags") embed["title"] = _("Deleted a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) recent_changes.init_info() elif action == "managetags/activate": - link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) + link = create_article_path("Special:Tags") embed["title"] = _("Activated a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) elif action == "managetags/deactivate": - link = "https://{wiki}.gamepedia.com/Special:Tags".format(wiki=settings["wiki"]) + link = create_article_path("Special:Tags") embed["title"] = _("Deactivated a tag \"{tag}\"").format(tag=change["logparams"]["tag"]) elif action == "suppressed": - link = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"]) + link = create_article_path("") embed["title"] = _("Action has been hidden by administration.") embed["author"]["name"] = _("Unknown") else: logger.warning("No entry for {event} with params: {params}".format(event=action, params=change)) embed["author"]["icon_url"] = settings["appearance"]["embed"][action]["icon"] embed["url"] = link - embed["description"] = parsed_comment + if parsed_comment is not None: + embed["description"] = parsed_comment if colornumber is None: if settings["appearance"]["embed"][action]["color"] is None: embed["color"] = random.randrange(1, 16777215) @@ -906,8 +1008,8 @@ def day_overview_request(): continuearg = "" while not complete and passes < 10: request = recent_changes.safe_request( - "https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=recentchanges&rcend={timestamp}Z&rcprop=title%7Ctimestamp%7Csizes%7Cloginfo%7Cuser&rcshow=!bot&rclimit=500&rctype=edit%7Cnew%7Clog{continuearg}".format( - wiki=settings["wiki"], timestamp=timestamp, continuearg=continuearg)) + "{wiki}?action=query&format=json&list=recentchanges&rcend={timestamp}Z&rcprop=title%7Ctimestamp%7Csizes%7Cloginfo%7Cuser&rcshow=!bot&rclimit=500&rctype=edit%7Cnew%7Clog{continuearg}".format( + wiki=WIKI_API_PATH, timestamp=timestamp, continuearg=continuearg)) if request: try: request = request.json() @@ -976,64 +1078,75 @@ def day_overview(): changed_bytes = 0 new_articles = 0 active_articles = [] - if not result[0] and not settings["send_empty_overview"]: - return # no changes in this day - for item in result[0]: - if "actionhidden" in item or "suppressed" in item or "userhidden" in item: - continue # while such actions have type value (edit/new/log) many other values are hidden and therefore can crash with key error, let's not process such events - activity = add_to_dict(activity, item["user"]) - hours = add_to_dict(hours, datetime.datetime.strptime(item["timestamp"], "%Y-%m-%dT%H:%M:%SZ").hour) - if item["type"] == "edit": - edits += 1 - changed_bytes += item["newlen"] - item["oldlen"] - if item["ns"] == 0: - articles = add_to_dict(articles, item["title"]) - if item["type"] == "new": - if item["ns"] == 0: - new_articles += 1 - changed_bytes += item["newlen"] - if item["type"] == "log": - files = files + 1 if item["logtype"] == item["logaction"] == "upload" else files - admin = admin + 1 if item["logtype"] in ["delete", "merge", "block", "protect", "import", "rights", - "abusefilter", "interwiki", "managetags"] else admin - overall = round(new_articles + edits * 0.1 + files * 0.3 + admin * 0.1 + math.fabs(changed_bytes * 0.001), 2) - embed = defaultdict(dict) - embed["title"] = _("Daily overview") - embed["url"] = "https://{wiki}.gamepedia.com/Special:Statistics".format(wiki=settings["wiki"]) - embed["color"] = settings["appearance"]["embed"]["daily_overview"]["color"] - embed["author"]["icon_url"] = settings["appearance"]["embed"]["daily_overview"]["icon"] - embed["author"]["name"] = settings["wikiname"] - embed["author"]["url"] = "https://{wiki}.gamepedia.com/".format(wiki=settings["wiki"]) - if activity: - active_users = [] - for user, numberu in Counter(activity).most_common(3): # find most active users - active_users.append(user + ngettext(" ({} action)", " ({} actions)", numberu).format(numberu)) - for article, numbere in Counter(articles).most_common(3): # find most active users - active_articles.append(article + ngettext(" ({} edit)", " ({} edits)", numbere).format(numbere)) - v = hours.values() - active_hours = [] - for hour, numberh in Counter(hours).most_common(list(v).count(max(v))): # find most active hours - active_hours.append(str(hour)) - houramount = ngettext(" UTC ({} action)", " UTC ({} actions)", numberh).format(numberh) + if not result[0]: + if not settings["send_empty_overview"]: + return # no changes in this day + else: + embed = defaultdict(dict) + embed["title"] = _("Daily overview") + embed["url"] = create_article_path("Special:Statistics") + embed["description"] = _("No activity") + embed["color"] = settings["appearance"]["embed"]["daily_overview"]["color"] + embed["author"]["icon_url"] = settings["appearance"]["embed"]["daily_overview"]["icon"] + embed["author"]["name"] = settings["wikiname"] + embed["author"]["url"] = create_article_path("") else: - active_users = [_("But nobody came")] # a reference to my favorite game of all the time, sorry ^_^ - active_hours = [_("But nobody came")] - usramount = "" - houramount = "" - if not active_articles: - active_articles = [_("But nobody came")] - embed["fields"] = [] - edits, files, admin, changed_bytes, new_articles, unique_contributors, overall = daily_overview_sync(edits, files, admin, changed_bytes, new_articles, len(activity), overall) - fields = ( - (ngettext("Most active user", "Most active users", len(active_users)), ', '.join(active_users)), - (ngettext("Most edited article", "Most edited articles", len(active_articles)), ', '.join(active_articles)), - (_("Edits made"), edits), (_("New files"), files), (_("Admin actions"), admin), - (_("Bytes changed"), changed_bytes), (_("New articles"), new_articles), - (_("Unique contributors"), unique_contributors), - (ngettext("Most active hour", "Most active hours", len(active_hours)), ', '.join(active_hours) + houramount), - (_("Day score"), overall)) - for name, value in fields: - embed["fields"].append({"name": name, "value": value}) + for item in result[0]: + if "actionhidden" in item or "suppressed" in item or "userhidden" in item: + continue # while such actions have type value (edit/new/log) many other values are hidden and therefore can crash with key error, let's not process such events + activity = add_to_dict(activity, item["user"]) + hours = add_to_dict(hours, datetime.datetime.strptime(item["timestamp"], "%Y-%m-%dT%H:%M:%SZ").hour) + if item["type"] == "edit": + edits += 1 + changed_bytes += item["newlen"] - item["oldlen"] + if item["ns"] == 0: + articles = add_to_dict(articles, item["title"]) + if item["type"] == "new": + if item["ns"] == 0: + new_articles += 1 + changed_bytes += item["newlen"] + if item["type"] == "log": + files = files + 1 if item["logtype"] == item["logaction"] == "upload" else files + admin = admin + 1 if item["logtype"] in ["delete", "merge", "block", "protect", "import", "rights", + "abusefilter", "interwiki", "managetags"] else admin + overall = round(new_articles + edits * 0.1 + files * 0.3 + admin * 0.1 + math.fabs(changed_bytes * 0.001), 2) + embed = defaultdict(dict) + embed["title"] = _("Daily overview") + embed["url"] = create_article_path("Special:Statistics") + embed["color"] = settings["appearance"]["embed"]["daily_overview"]["color"] + embed["author"]["icon_url"] = settings["appearance"]["embed"]["daily_overview"]["icon"] + embed["author"]["name"] = settings["wikiname"] + embed["author"]["url"] = create_article_path("") + if activity: + active_users = [] + for user, numberu in Counter(activity).most_common(3): # find most active users + active_users.append(user + ngettext(" ({} action)", " ({} actions)", numberu).format(numberu)) + for article, numbere in Counter(articles).most_common(3): # find most active users + active_articles.append(article + ngettext(" ({} edit)", " ({} edits)", numbere).format(numbere)) + v = hours.values() + active_hours = [] + for hour, numberh in Counter(hours).most_common(list(v).count(max(v))): # find most active hours + active_hours.append(str(hour)) + 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 = "" + if not active_articles: + active_articles = [_("But nobody came")] + embed["fields"] = [] + edits, files, admin, changed_bytes, new_articles, unique_contributors, overall = daily_overview_sync(edits, files, admin, changed_bytes, new_articles, len(activity), overall) + fields = ( + (ngettext("Most active user", "Most active users", len(active_users)), ', '.join(active_users)), + (ngettext("Most edited article", "Most edited articles", len(active_articles)), ', '.join(active_articles)), + (_("Edits made"), edits), (_("New files"), files), (_("Admin actions"), admin), + (_("Bytes changed"), changed_bytes), (_("New articles"), new_articles), + (_("Unique contributors"), unique_contributors), + (ngettext("Most active hour", "Most active hours", len(active_hours)), ', '.join(active_hours) + houramount), + (_("Day score"), overall)) + for name, value in fields: + embed["fields"].append({"name": name, "value": value, "inline": True}) data = {"embeds": [dict(embed)]} formatted_embed = json.dumps(data, indent=4) send_to_discord(formatted_embed) @@ -1053,6 +1166,7 @@ class Recent_Changes_Class(object): self.streak = -1 self.unsent_messages = [] self.mw_messages = {} + self.namespaces = None self.session = requests.Session() self.session.headers.update(settings["header"]) if settings["limitrefetch"] != -1: @@ -1072,22 +1186,22 @@ class Recent_Changes_Class(object): # session.cookies.clear() if '@' not in settings["wiki_bot_login"]: logger.error( - "Please provide proper nickname for login from https://{wiki}.gamepedia.com/Special:BotPasswords".format( - wiki=settings["wiki"])) + "Please provide proper nickname for login from {wiki}Special:BotPasswords".format( + wiki=WIKI_SCRIPT_PATH)) return if len(settings["wiki_bot_password"]) != 32: logger.error( - "Password seems incorrect. It should be 32 characters long! Grab it from https://{wiki}.gamepedia.com/Special:BotPasswords".format( - wiki=settings["wiki"])) + "Password seems incorrect. It should be 32 characters long! Grab it from {wiki}Special:BotPasswords".format( + wiki=WIKI_SCRIPT_PATH)) return - logger.info("Trying to log in to https://{wiki}.gamepedia.com...".format(wiki=settings["wiki"])) + logger.info("Trying to log in to {wiki}...".format(wiki=WIKI_SCRIPT_PATH)) try: response = self.handle_mw_errors( - self.session.post("https://{wiki}.gamepedia.com/api.php".format(wiki=settings["wiki"]), + self.session.post(WIKI_API_PATH, data={'action': 'query', 'format': 'json', 'utf8': '', 'meta': 'tokens', 'type': 'login'})) response = self.handle_mw_errors( - self.session.post("https://{wiki}.gamepedia.com/api.php".format(wiki=settings["wiki"]), + self.session.post(WIKI_API_PATH, data={'action': 'login', 'format': 'json', 'utf8': '', 'lgname': settings["wiki_bot_login"], 'lgpassword': settings["wiki_bot_password"], @@ -1134,8 +1248,11 @@ class Recent_Changes_Class(object): self.unsent_messages = self.unsent_messages[num:] logger.debug(self.unsent_messages) last_check = self.fetch_changes(amount=amount) - 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: + # If the request succeeds the last_check will be the last rcid from recentchanges query + if last_check is not None: + self.recent_id = last_check + # Assigns self.recent_id the last rcid if request succeeded, otherwise set the id from the file + if settings["limitrefetch"] != -1 and self.recent_id != self.file_id and self.recent_id != 0: # if saving to database is disabled, don't save the recent_id self.file_id = self.recent_id storage["rcid"] = self.recent_id misc.save_datafile(storage) @@ -1143,23 +1260,22 @@ class Recent_Changes_Class(object): return self.recent_id def fetch_changes(self, amount, clean=False): + """Fetches the :amount: of changes from the wiki. + Returns None on error and int of rcid of latest change if succeeded""" global logged_in if len(self.ids) == 0: logger.debug("ids is empty, triggering clean fetch") clean = True changes = self.safe_request( - "https://{wiki}.gamepedia.com/api.php?action=query&format=json&list=recentchanges{show_bots}&rcprop=title%7Credirect%7Ctimestamp%7Cids%7Cloginfo%7Cparsedcomment%7Csizes%7Cflags%7Ctags%7Cuser&rclimit={amount}&rctype=edit%7Cnew%7Clog%7Cexternal{categorize}".format( - wiki=settings["wiki"], amount=amount, categorize="%7Ccategorize" if settings["show_added_categories"] else "", show_bots="&rcshow=!bot" if settings["show_bots"] is False else "")) + "{wiki}?action=query&format=json&list=recentchanges{show_bots}&rcprop=title%7Credirect%7Ctimestamp%7Cids%7Cloginfo%7Cparsedcomment%7Csizes%7Cflags%7Ctags%7Cuser&rclimit={amount}&rctype=edit%7Cnew%7Clog%7Cexternal{categorize}".format( + wiki=WIKI_API_PATH, amount=amount, categorize="%7Ccategorize" if settings["show_added_categories"] else "", show_bots="&rcshow=!bot" if settings["show_bots"] is False else "")) if changes: try: changes = changes.json()['query']['recentchanges'] changes.reverse() except ValueError: logger.warning("ValueError in fetching changes") - if changes.url == "https://www.gamepedia.com": - logger.critical( - "The wiki specified in the settings most probably doesn't exist, got redirected to gamepedia.com") - sys.exit(1) + logger.warning("Changes URL:" + changes.url) self.downtime_controller() return None except KeyError: @@ -1297,8 +1413,8 @@ class Recent_Changes_Class(object): def init_info(self): startup_info = safe_read(self.safe_request( - "https://{wiki}.gamepedia.com/api.php?action=query&format=json&uselang=content&list=tags&meta=allmessages&utf8=1&tglimit=max&tgprop=displayname&ammessages=recentchanges-page-added-to-category|recentchanges-page-removed-from-category|recentchanges-page-added-to-category-bundled|recentchanges-page-removed-from-category-bundled&amenableparser=1&amincludelocal=1".format( - wiki=settings["wiki"])), "query") + "{wiki}?action=query&format=json&uselang=content&list=tags&meta=allmessages%7Csiteinfo&utf8=1&tglimit=max&tgprop=displayname&ammessages=recentchanges-page-added-to-category%7Crecentchanges-page-removed-from-category%7Crecentchanges-page-added-to-category-bundled%7Crecentchanges-page-removed-from-category-bundled&amenableparser=1&amincludelocal=1&siprop=namespaces".format( + wiki=WIKI_API_PATH)), "query") if startup_info: if "tags" in startup_info and "allmessages" in startup_info: for tag in startup_info["tags"]: @@ -1311,6 +1427,7 @@ class Recent_Changes_Class(object): for key, message in self.mw_messages.items(): if key.startswith("recentchanges-page-"): self.mw_messages[key] = re.sub(r'\[\[.*?\]\]', '', message) + self.namespaces = startup_info["namespaces"] logger.info("Gathered information about the tags and interface messages.") else: logger.warning("Could not retrieve initial wiki information. Some features may not work correctly!") @@ -1330,14 +1447,16 @@ else: sys.exit(1) # Log in and download wiki information +prepare_paths() try: if settings["wiki_bot_login"] and settings["wiki_bot_password"]: recent_changes.log_in() + time.sleep(2.0) recent_changes.init_info() except requests.exceptions.ConnectionError: logger.critical("A connection can't be established with the wiki. Exiting...") sys.exit(1) -time.sleep(1.0) +time.sleep(3.0) # this timeout is to prevent timeouts. It seems Fandom does not like our ~2-3 request in under a second logger.info("Script started! Fetching newest changes...") recent_changes.fetch(amount=settings["limitrefetch"] if settings["limitrefetch"] != -1 else settings["limit"]) diff --git a/settings.json.example b/settings.json.example index 779b230..134a872 100644 --- a/settings.json.example +++ b/settings.json.example @@ -1,6 +1,6 @@ { - "cooldown": 30, - "wiki": "minecraft", + "cooldown": 60, + "wiki_url": "https://ucp-rail-test.fandom.com/pl/", "lang": "en", "header": { "user-agent": "RcGcDw/{version}" @@ -77,6 +77,10 @@ "icon":"https://i.imgur.com/egJpa81.png", "color":null }, + "upload/revert": { + "icon": "https://i.imgur.com/egJpa81.png", + "color": null + }, "delete/delete":{ "icon":"https://i.imgur.com/BU77GD3.png", "color":1 @@ -189,6 +193,10 @@ "icon":"", "color":null }, + "curseprofile/comment-purged":{ + "icon":"", + "color":null + }, "curseprofile/comment-replied":{ "icon":"https://i.imgur.com/hkyYsI1.png", "color":null