Merge branch 'testing' into 'multiple-webhooks'

# Conflicts:
#   src/discussion_formatters.py
This commit is contained in:
MarkusRost 2020-08-05 01:07:59 +00:00
commit 4de6cb1927
20 changed files with 1381 additions and 1378 deletions

View file

@ -11,3 +11,4 @@ test:
- python3.6 start.py --test - python3.6 start.py --test
only: only:
- testing - testing
- merge_requests

View file

@ -3,16 +3,18 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-17 20:53+0100\n" "POT-Creation-Date: 2020-03-17 20:53+0100\n"
"PO-Revision-Date: 2020-04-23 23:25+0200\n" "PO-Revision-Date: 2020-08-03 13:44+0000\n"
"Last-Translator: Frisk <piotrex43@protonmail.ch>\n" "Last-Translator: MarkusRost <sukramxro@gmail.com>\n"
"Language-Team: German <https://weblate.frisk.space/projects/rcgcdw/main/de/>"
"\n"
"Language: de\n" "Language: de\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n" "Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.1.1\n"
"X-Loco-Source-Locale: de_DE\n" "X-Loco-Source-Locale: de_DE\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\n"
"X-Generator: Lokalize 19.12.3\n"
"X-Loco-Parser: loco_parse_po\n" "X-Loco-Parser: loco_parse_po\n"
#: rcgcdw.py:71 #: rcgcdw.py:71
@ -419,7 +421,7 @@ msgstr ""
msgid "" msgid ""
"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})"
msgstr "" msgstr ""
"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" "[{author}]({author_url}) änderte das Sprite für [{article}]({article_url})"
#: rcgcdw.py:470 #: rcgcdw.py:470
#, python-brace-format #, python-brace-format
@ -435,7 +437,7 @@ msgstr ""
msgid "" msgid ""
"[{author}]({author_url}) edited the slice for [{article}]({article_url})" "[{author}]({author_url}) edited the slice for [{article}]({article_url})"
msgstr "" msgstr ""
"[{author}]({author_url}) edited the slice for [{article}]({article_url})" "[{author}]({author_url}) änderte das Stück für [{article}]({article_url})"
#: rcgcdw.py:478 #: rcgcdw.py:478
#, python-brace-format #, python-brace-format
@ -678,7 +680,7 @@ msgstr "Änderte die Gruppenzugehörigkeit von {target}"
#: rcgcdw.py:789 #: rcgcdw.py:789
#, python-brace-format #, python-brace-format
msgid "{target} got autopromoted to a new usergroup" msgid "{target} got autopromoted to a new usergroup"
msgstr "{target} got autopromoted to a new usergroup" msgstr "{target} wurde automatisch einer neuen Benutzergruppe zugeordnet"
#: rcgcdw.py:804 #: rcgcdw.py:804
#, python-brace-format #, python-brace-format
@ -778,17 +780,17 @@ msgstr "Modell geändert von {old} zu {new}: {reason}"
#: rcgcdw.py:875 #: rcgcdw.py:875
#, python-brace-format #, python-brace-format
msgid "Edited the sprite for {article}" msgid "Edited the sprite for {article}"
msgstr "Edited the sprite for {article}" msgstr "Änderte das Sprite für {article}"
#: rcgcdw.py:878 #: rcgcdw.py:878
#, python-brace-format #, python-brace-format
msgid "Created the sprite sheet for {article}" msgid "Created the sprite sheet for {article}"
msgstr "Created the sprite sheet for {article}" msgstr "Erstellte das Sprite-sheet für {article}"
#: rcgcdw.py:881 #: rcgcdw.py:881
#, python-brace-format #, python-brace-format
msgid "Edited the slice for {article}" msgid "Edited the slice for {article}"
msgstr "Edited the slice for {article}" msgstr "Änderte das Stück für {article}"
#: rcgcdw.py:887 #: rcgcdw.py:887
#, python-brace-format #, python-brace-format
@ -988,11 +990,11 @@ msgstr "Bürokrat"
#: rcgcdw.py:1465 #: rcgcdw.py:1465
msgid "reviewer" msgid "reviewer"
msgstr "reviewer" msgstr "Prüfer"
#: rcgcdw.py:1466 #: rcgcdw.py:1466
msgid "autoreview" msgid "autoreview"
msgstr "autoreview" msgstr "Passive Sichter"
#: rcgcdw.py:1466 #: rcgcdw.py:1466
msgid "autopatrol" msgid "autopatrol"

Binary file not shown.

Binary file not shown.

View file

@ -1,27 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-20 17:18+0200\n"
"PO-Revision-Date: 2019-05-20 17:32+0200\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.2.1\n"
"Last-Translator: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: en\n"
#: misc.py:76
msgid ""
"\n"
"__And more__"
msgstr ""
"\n"
"__And more__"

Binary file not shown.

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,997 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-04 00:46+0200\n"
"PO-Revision-Date: 2020-08-04 09:51+0000\n"
"Last-Translator: Frisk The Evil Goat Overlord <piotrex43@protonmail.ch>\n"
"Language-Team: Lolcat <https://weblate.frisk.space/projects/rcgcdw/main/lol/>"
"\n"
"Language: lol\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.1.1\n"
#: rcgcdw.py:77
msgid "Location"
msgstr "Der place"
#: rcgcdw.py:77
msgid "About me"
msgstr "Abot me"
#: rcgcdw.py:77
msgid "Google link"
msgstr ""
#: rcgcdw.py:77
msgid "Facebook link"
msgstr ""
#: rcgcdw.py:77
msgid "Twitter link"
msgstr ""
#: rcgcdw.py:77
msgid "Reddit link"
msgstr ""
#: rcgcdw.py:77
msgid "Twitch link"
msgstr ""
#: rcgcdw.py:77
msgid "PSN link"
msgstr ""
#: rcgcdw.py:77
msgid "VK link"
msgstr ""
#: rcgcdw.py:77
msgid "XBL link"
msgstr ""
#: rcgcdw.py:77
msgid "Steam link"
msgstr ""
#: rcgcdw.py:77
msgid "Discord handle"
msgstr ""
#: rcgcdw.py:77
msgid "Battle.net handle"
msgstr ""
#: rcgcdw.py:122 rcgcdw.py:838
msgid "Unknown"
msgstr ""
#: rcgcdw.py:124
msgid "unknown"
msgstr ""
#: rcgcdw.py:162
#, python-brace-format
msgid ""
"[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}"
"{edit_size})"
msgstr ""
"[{author}]({author_url}) rearranged lettwers of "
"[{article}]({edit_link}){comment} ({sign}{edit_size})"
#: rcgcdw.py:164
#, python-brace-format
msgid ""
"[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}"
"{edit_size})"
msgstr ""
#: rcgcdw.py:167
#, python-brace-format
msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}"
msgstr ""
#: rcgcdw.py:174
#, python-brace-format
msgid ""
"[{author}]({author_url}) reverted a version of [{file}]({file_link}){comment}"
msgstr ""
#: rcgcdw.py:178
#, python-brace-format
msgid ""
"[{author}]({author_url}) uploaded a new version of [{file}]({file_link})"
"{comment}"
msgstr ""
#: rcgcdw.py:181
#, python-brace-format
msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}"
msgstr ""
#: rcgcdw.py:185
#, python-brace-format
msgid ""
"[{author}]({author_url}) deleted redirect by overwriting [{page}]"
"({page_link}){comment}"
msgstr ""
#: rcgcdw.py:189 rcgcdw.py:194
msgid "without making a redirect"
msgstr ""
#: rcgcdw.py:189 rcgcdw.py:195
msgid "with a redirect"
msgstr ""
#: rcgcdw.py:190
#, python-brace-format
msgid ""
"[{author}]({author_url}) moved {redirect}*{article}* to [{target}]"
"({target_url}) {made_a_redirect}{comment}"
msgstr ""
#: rcgcdw.py:196
#, python-brace-format
msgid ""
"[{author}]({author_url}) moved {redirect}*{article}* over redirect to "
"[{target}]({target_url}) {made_a_redirect}{comment}"
msgstr ""
#: rcgcdw.py:201
#, python-brace-format
msgid ""
"[{author}]({author_url}) moved protection settings from {redirect}*{article}"
"* to [{target}]({target_url}){comment}"
msgstr ""
#: rcgcdw.py:212 rcgcdw.py:616
msgid "infinity and beyond"
msgstr ""
#: rcgcdw.py:229
msgid " on pages: "
msgstr ""
#: rcgcdw.py:236 rcgcdw.py:636
msgid " and namespaces: "
msgstr ""
#: rcgcdw.py:238
msgid " on namespaces: "
msgstr ""
#: rcgcdw.py:250
#, python-brace-format
msgid ""
"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}"
"{restriction_desc}{comment}"
msgstr ""
#: rcgcdw.py:254
#, python-brace-format
msgid ""
"[{author}]({author_url}) changed block settings for [{blocked_user}]"
"({user_url}){comment}"
msgstr ""
#: rcgcdw.py:258
#, python-brace-format
msgid ""
"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}"
msgstr ""
#: rcgcdw.py:261
#, python-brace-format
msgid ""
"[{author}]({author_url}) left a [comment]({comment}) on {target} profile"
msgstr ""
#: rcgcdw.py:261
msgid "their own profile"
msgstr ""
#: rcgcdw.py:264
#, python-brace-format
msgid ""
"[{author}]({author_url}) replied to a [comment]({comment}) on {target} "
"profile"
msgstr ""
#: rcgcdw.py:267 rcgcdw.py:273 rcgcdw.py:284 rcgcdw.py:288
msgid "their own"
msgstr ""
#: rcgcdw.py:270
#, python-brace-format
msgid ""
"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile"
msgstr ""
#: rcgcdw.py:276
#, python-brace-format
msgid "[{author}]({author_url}) purged a comment on {target} profile"
msgstr ""
#: rcgcdw.py:286
#, python-brace-format
msgid "[{author}]({author_url}) deleted a comment on {target} profile"
msgstr ""
#: rcgcdw.py:292
#, python-brace-format
msgid "[{target}]({target_url})'s"
msgstr ""
#: rcgcdw.py:292
#, python-brace-format
msgid "[their own]({target_url})"
msgstr ""
#: rcgcdw.py:293
#, python-brace-format
msgid ""
"[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*"
msgstr ""
#: rcgcdw.py:307 rcgcdw.py:309 rcgcdw.py:714 rcgcdw.py:716
msgid "none"
msgstr ""
#: rcgcdw.py:315 rcgcdw.py:701
msgid "System"
msgstr ""
#: rcgcdw.py:320
#, python-brace-format
msgid ""
"[{author}]({author_url}) protected [{article}]({article_url}) with the "
"following settings: {settings}{comment}"
msgstr ""
#: rcgcdw.py:322 rcgcdw.py:330 rcgcdw.py:724 rcgcdw.py:730
msgid " [cascading]"
msgstr ""
#: rcgcdw.py:327
#, python-brace-format
msgid ""
"[{author}]({author_url}) modified protection settings of [{article}]"
"({article_url}) to: {settings}{comment}"
msgstr ""
#: rcgcdw.py:334
#, python-brace-format
msgid ""
"[{author}]({author_url}) removed protection from [{article}]({article_url})"
"{comment}"
msgstr ""
#: rcgcdw.py:338
#, python-brace-format
msgid ""
"[{author}]({author_url}) changed visibility of revision on page [{article}]"
"({article_url}){comment}"
msgid_plural ""
"[{author}]({author_url}) changed visibility of {amount} revisions on page "
"[{article}]({article_url}){comment}"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:343
#, python-brace-format
msgid ""
"[{author}]({author_url}) imported [{article}]({article_url}) with {count} "
"revision{comment}"
msgid_plural ""
"[{author}]({author_url}) imported [{article}]({article_url}) with {count} "
"revisions{comment}"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:348
#, python-brace-format
msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}"
msgstr ""
#: rcgcdw.py:350
#, python-brace-format
msgid "[{author}]({author_url}) changed visibility of log events{comment}"
msgstr ""
#: rcgcdw.py:352
#, python-brace-format
msgid "[{author}]({author_url}) imported interwiki{comment}"
msgstr ""
#: rcgcdw.py:355
#, python-brace-format
msgid ""
"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})"
msgstr ""
#: rcgcdw.py:359
#, python-brace-format
msgid ""
"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})"
msgstr ""
#: rcgcdw.py:363
#, python-brace-format
msgid ""
"[{author}]({author_url}) merged revision histories of [{article}]"
"({article_url}) into [{dest}]({dest_url}){comment}"
msgstr ""
#: rcgcdw.py:367
#, 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:373
#, python-brace-format
msgid ""
"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) "
"pointing to {website} with {prefix} prefix"
msgstr ""
#: rcgcdw.py:379
#, python-brace-format
msgid ""
"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})"
msgstr ""
#: rcgcdw.py:382
#, 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:386
#, python-brace-format
msgid ""
"[{author}]({author_url}) edited the sprite for [{article}]({article_url})"
msgstr ""
#: rcgcdw.py:389
#, python-brace-format
msgid ""
"[{author}]({author_url}) created the sprite sheet for [{article}]"
"({article_url})"
msgstr ""
#: rcgcdw.py:392
#, python-brace-format
msgid ""
"[{author}]({author_url}) edited the slice for [{article}]({article_url})"
msgstr ""
#: rcgcdw.py:397
#, python-brace-format
msgid "[{author}]({author_url}) created the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:399
#, python-brace-format
msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:404
#, python-brace-format
msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:409
#, python-brace-format
msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:412
#, python-brace-format
msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\""
msgstr ""
#: rcgcdw.py:416
#, python-brace-format
msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\""
msgstr ""
#: rcgcdw.py:420
#, python-brace-format
msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\""
msgstr ""
#: rcgcdw.py:423
#, python-brace-format
msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\""
msgstr ""
#: rcgcdw.py:425
msgid "An action has been hidden by administration."
msgstr ""
#: rcgcdw.py:435 rcgcdw.py:717
msgid "No description provided"
msgstr ""
#: rcgcdw.py:482
msgid "(N!) "
msgstr ""
#: rcgcdw.py:483
msgid "m"
msgstr ""
#: rcgcdw.py:483
msgid "b"
msgstr ""
#: rcgcdw.py:500 rcgcdw.py:505
msgid "__Only whitespace__"
msgstr ""
#: rcgcdw.py:510
msgid "Removed"
msgstr ""
#: rcgcdw.py:512
msgid "Added"
msgstr ""
#: rcgcdw.py:546 rcgcdw.py:585
msgid "Options"
msgstr ""
#: rcgcdw.py:546
#, python-brace-format
msgid "([preview]({link}) | [undo]({undolink}))"
msgstr ""
#: rcgcdw.py:551
#, python-brace-format
msgid "Uploaded a new version of {name}"
msgstr ""
#: rcgcdw.py:553
#, python-brace-format
msgid "Reverted a version of {name}"
msgstr ""
#: rcgcdw.py:555
#, python-brace-format
msgid "Uploaded {name}"
msgstr ""
#: rcgcdw.py:571
msgid "**No license!**"
msgstr ""
#: rcgcdw.py:583
msgid ""
"\n"
"License: {}"
msgstr ""
#: rcgcdw.py:585
#, python-brace-format
msgid "([preview]({link}))"
msgstr ""
#: rcgcdw.py:590
#, python-brace-format
msgid "Deleted page {article}"
msgstr ""
#: rcgcdw.py:593
#, python-brace-format
msgid "Deleted redirect {article} by overwriting"
msgstr ""
#: rcgcdw.py:597
msgid "No redirect has been made"
msgstr ""
#: rcgcdw.py:598
msgid "A redirect has been made"
msgstr ""
#: rcgcdw.py:599
#, python-brace-format
msgid "Moved {redirect}{article} to {target}"
msgstr ""
#: rcgcdw.py:602
#, python-brace-format
msgid "Moved {redirect}{article} to {title} over redirect"
msgstr ""
#: rcgcdw.py:606
#, python-brace-format
msgid "Moved protection settings from {redirect}{article} to {title}"
msgstr ""
#: rcgcdw.py:629
msgid "Blocked from editing the following pages: "
msgstr ""
#: rcgcdw.py:638
msgid "Blocked from editing pages on following namespaces: "
msgstr ""
#: rcgcdw.py:649
msgid "Partial block details"
msgstr ""
#: rcgcdw.py:650
#, python-brace-format
msgid "Blocked {blocked_user} for {time}"
msgstr ""
#: rcgcdw.py:654
#, python-brace-format
msgid "Changed block settings for {blocked_user}"
msgstr ""
#: rcgcdw.py:658
#, python-brace-format
msgid "Unblocked {blocked_user}"
msgstr ""
#: rcgcdw.py:663
#, python-brace-format
msgid "Left a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:665
msgid "Left a comment on their own profile"
msgstr ""
#: rcgcdw.py:670
#, python-brace-format
msgid "Replied to a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:672
msgid "Replied to a comment on their own profile"
msgstr ""
#: rcgcdw.py:677
#, python-brace-format
msgid "Edited a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:679
msgid "Edited a comment on their own profile"
msgstr ""
#: rcgcdw.py:682
#, python-brace-format
msgid "Edited {target}'s profile"
msgstr ""
#: rcgcdw.py:682
msgid "Edited their own profile"
msgstr ""
#: rcgcdw.py:684
#, python-brace-format
msgid "Cleared the {field} field"
msgstr ""
#: rcgcdw.py:686
#, python-brace-format
msgid "{field} field changed to: {desc}"
msgstr ""
#: rcgcdw.py:689
#, python-brace-format
msgid "Purged a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:695
#, python-brace-format
msgid "Deleted a comment on {target}'s profile"
msgstr ""
#: rcgcdw.py:699
#, python-brace-format
msgid "Changed group membership for {target}"
msgstr ""
#: rcgcdw.py:703
#, python-brace-format
msgid "{target} got autopromoted to a new usergroup"
msgstr ""
#: rcgcdw.py:718
#, python-brace-format
msgid "Groups changed from {old_groups} to {new_groups}{reason}"
msgstr ""
#: rcgcdw.py:722
#, python-brace-format
msgid "Protected {target}"
msgstr ""
#: rcgcdw.py:728
#, python-brace-format
msgid "Changed protection level for {article}"
msgstr ""
#: rcgcdw.py:734
#, python-brace-format
msgid "Removed protection from {article}"
msgstr ""
#: rcgcdw.py:738
#, 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:743
#, python-brace-format
msgid "Imported {article} with {count} revision"
msgid_plural "Imported {article} with {count} revisions"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:748
#, python-brace-format
msgid "Restored {article}"
msgstr ""
#: rcgcdw.py:751
msgid "Changed visibility of log events"
msgstr ""
#: rcgcdw.py:754
msgid "Imported interwiki"
msgstr ""
#: rcgcdw.py:757
#, python-brace-format
msgid "Edited abuse filter number {number}"
msgstr ""
#: rcgcdw.py:760
#, python-brace-format
msgid "Created abuse filter number {number}"
msgstr ""
#: rcgcdw.py:763
#, python-brace-format
msgid "Merged revision histories of {article} into {dest}"
msgstr ""
#: rcgcdw.py:767
msgid "Added an entry to the interwiki table"
msgstr ""
#: rcgcdw.py:768 rcgcdw.py:774
#, python-brace-format
msgid "Prefix: {prefix}, website: {website} | {desc}"
msgstr ""
#: rcgcdw.py:773
msgid "Edited an entry in interwiki table"
msgstr ""
#: rcgcdw.py:779
msgid "Deleted an entry in interwiki table"
msgstr ""
#: rcgcdw.py:780
#, python-brace-format
msgid "Prefix: {prefix} | {desc}"
msgstr ""
#: rcgcdw.py:783
#, python-brace-format
msgid "Changed the content model of the page {article}"
msgstr ""
#: rcgcdw.py:784
#, python-brace-format
msgid "Model changed from {old} to {new}: {reason}"
msgstr ""
#: rcgcdw.py:789
#, python-brace-format
msgid "Edited the sprite for {article}"
msgstr ""
#: rcgcdw.py:792
#, python-brace-format
msgid "Created the sprite sheet for {article}"
msgstr ""
#: rcgcdw.py:795
#, python-brace-format
msgid "Edited the slice for {article}"
msgstr ""
#: rcgcdw.py:801
#, python-brace-format
msgid "Created the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:805
#, python-brace-format
msgid "Deleted the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:812
#, python-brace-format
msgid "Recreated the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:819
#, python-brace-format
msgid "Replaced the Cargo table \"{table}\""
msgstr ""
#: rcgcdw.py:823
#, python-brace-format
msgid "Created a tag \"{tag}\""
msgstr ""
#: rcgcdw.py:827
#, python-brace-format
msgid "Deleted a tag \"{tag}\""
msgstr ""
#: rcgcdw.py:831
#, python-brace-format
msgid "Activated a tag \"{tag}\""
msgstr ""
#: rcgcdw.py:834
#, python-brace-format
msgid "Deactivated a tag \"{tag}\""
msgstr ""
#: rcgcdw.py:837
msgid "Action has been hidden by administration."
msgstr ""
#: rcgcdw.py:857
msgid "Tags"
msgstr ""
#: rcgcdw.py:860
msgid "**Added**: "
msgstr ""
#: rcgcdw.py:860
msgid " and {} more\n"
msgstr ""
#: rcgcdw.py:861
msgid "**Removed**: "
msgstr ""
#: rcgcdw.py:861
msgid " and {} more"
msgstr ""
#: rcgcdw.py:862
msgid "Changed categories"
msgstr ""
#: rcgcdw.py:879
msgid "~~hidden~~"
msgstr ""
#: rcgcdw.py:885
msgid "hidden"
msgstr ""
#: rcgcdw.py:955 rcgcdw.py:957 rcgcdw.py:959 rcgcdw.py:961 rcgcdw.py:963
#: rcgcdw.py:965 rcgcdw.py:967
#, python-brace-format
msgid "{value} (avg. {avg})"
msgstr ""
#: rcgcdw.py:987
msgid "Daily overview"
msgstr ""
#: rcgcdw.py:995
msgid "No activity"
msgstr ""
#: rcgcdw.py:1019
msgid " ({} action)"
msgid_plural " ({} actions)"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1021
msgid " ({} edit)"
msgid_plural " ({} edits)"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1026
msgid " UTC ({} action)"
msgid_plural " UTC ({} actions)"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1028 rcgcdw.py:1029 rcgcdw.py:1033
msgid "But nobody came"
msgstr ""
#: rcgcdw.py:1036
msgid "Most active user"
msgid_plural "Most active users"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1037
msgid "Most edited article"
msgid_plural "Most edited articles"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1038
msgid "Edits made"
msgstr ""
#: rcgcdw.py:1038
msgid "New files"
msgstr ""
#: rcgcdw.py:1038
msgid "Admin actions"
msgstr ""
#: rcgcdw.py:1039
msgid "Bytes changed"
msgstr ""
#: rcgcdw.py:1039
msgid "New articles"
msgstr ""
#: rcgcdw.py:1040
msgid "Unique contributors"
msgstr ""
#: rcgcdw.py:1041
msgid "Most active hour"
msgid_plural "Most active hours"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1042
msgid "Day score"
msgstr ""
#: rcgcdw.py:1165
#, python-brace-format
msgid "Connection to {wiki} seems to be stable now."
msgstr ""
#: rcgcdw.py:1166 rcgcdw.py:1281
msgid "Connection status"
msgstr ""
#: rcgcdw.py:1280
#, python-brace-format
msgid "{wiki} seems to be down or unreachable."
msgstr ""
#: rcgcdw.py:1355
msgid "director"
msgstr ""
#: rcgcdw.py:1355
msgid "bot"
msgstr ""
#: rcgcdw.py:1355
msgid "editor"
msgstr ""
#: rcgcdw.py:1355
msgid "directors"
msgstr ""
#: rcgcdw.py:1355
msgid "sysop"
msgstr ""
#: rcgcdw.py:1355
msgid "bureaucrat"
msgstr ""
#: rcgcdw.py:1355
msgid "reviewer"
msgstr ""
#: rcgcdw.py:1356
msgid "autoreview"
msgstr ""
#: rcgcdw.py:1356
msgid "autopatrol"
msgstr ""
#: rcgcdw.py:1356
msgid "wiki_guardian"
msgstr ""
#: rcgcdw.py:1356
msgid "second"
msgid_plural "seconds"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "minute"
msgid_plural "minutes"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "hour"
msgid_plural "hours"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "day"
msgid_plural "days"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "week"
msgid_plural "weeks"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "month"
msgid_plural "months"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "year"
msgid_plural "years"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "millennium"
msgid_plural "millennia"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "decade"
msgid_plural "decades"
msgstr[0] ""
msgstr[1] ""
#: rcgcdw.py:1356
msgid "century"
msgid_plural "centuries"
msgstr[0] ""
msgstr[1] ""

View file

@ -7,17 +7,18 @@ msgstr ""
"Project-Id-Version: RcGcDw\n" "Project-Id-Version: RcGcDw\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-17 20:53+0100\n" "POT-Creation-Date: 2020-03-17 20:53+0100\n"
"PO-Revision-Date: 2020-03-17 20:57+0100\n" "PO-Revision-Date: 2020-08-03 00:52+0000\n"
"Last-Translator: Frisk <piotrex43@protonmail.ch>\n" "Last-Translator: Frisk The Evil Goat Overlord <furrtrex43@protonmail.ch>\n"
"Language-Team: \n" "Language-Team: Polish <https://weblate.frisk.space/projects/rcgcdw/main/pl/>"
"\n"
"Language: pl\n" "Language: pl\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
"|| n%100>=20) ? 1 : 2;\n"
"X-Generator: Weblate 4.1.1\n"
"Generated-By: pygettext.py 1.5\n" "Generated-By: pygettext.py 1.5\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:71 #: rcgcdw.py:71
msgid "Location" msgid "Location"
@ -134,7 +135,7 @@ msgstr ""
#: rcgcdw.py:271 rcgcdw.py:276 #: rcgcdw.py:271 rcgcdw.py:276
msgid "without making a redirect" msgid "without making a redirect"
msgstr "bez utworzenia przekierowania przekierowania" msgstr "bez utworzenia przekierowania"
#: rcgcdw.py:271 rcgcdw.py:277 #: rcgcdw.py:271 rcgcdw.py:277
msgid "with a redirect" msgid "with a redirect"

View file

@ -7,15 +7,16 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-04 00:58+0200\n" "POT-Creation-Date: 2020-07-04 00:58+0200\n"
"PO-Revision-Date: 2020-07-04 01:09+0200\n" "PO-Revision-Date: 2020-08-04 09:51+0000\n"
"Last-Translator: Frisk <piotrex43@protonmail.ch>\n" "Last-Translator: Eduaddad <duduaddad@gmail.com>\n"
"Language-Team: \n" "Language-Team: Portuguese (Brazil) <https://weblate.frisk.space/projects/"
"Language: en_US\n" "rcgcdw/discussions/pt_BR/>\n"
"Language: pt-br\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 2.3\n" "X-Generator: Weblate 4.1.1\n"
#: discussions.py:56 #: discussions.py:56
#, python-brace-format #, python-brace-format
@ -44,16 +45,16 @@ msgstr "Criado \"{title}\" no mural de mensagem de {user}"
#: discussions.py:99 #: discussions.py:99
#, python-brace-format #, python-brace-format
msgid "Created a poll titled \"{title}\"" msgid "Created a poll titled \"{title}\""
msgstr "" msgstr "Criou uma enquete intitulada \"{title}\""
#: discussions.py:104 #: discussions.py:104
msgid "Option {}" msgid "Option {}"
msgstr "" msgstr "Option {}"
#: discussions.py:105 #: discussions.py:105
#, python-brace-format #, python-brace-format
msgid "__[View image]({image_url})__" msgid "__[View image]({image_url})__"
msgstr "" msgstr "__[Ver imagem]({image_url})__"
#: discussions.py:121 #: discussions.py:121
#, python-brace-format #, python-brace-format
@ -61,20 +62,18 @@ msgid ""
"[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}>) " "[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}>) "
"in {forumName}" "in {forumName}"
msgstr "" msgstr ""
"Criado [{title}](<{url}f/p/{threadId}>) por [{author}](<{url}f/u/{creatorId}" "Criado [{title}](<{url}f/p/{threadId}>) por [{author}](<{url}f/u/"
">) no {forumName}" "{creatorId}>) no {forumName}"
#: discussions.py:130 #: discussions.py:130
#, fuzzy, python-brace-format #, python-brace-format
#| msgid ""
#| "[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}"
#| ">) in {forumName}"
msgid "" msgid ""
"[{author}](<{url}f/u/{creatorId}>) created [{title}](<{wikiurl}wiki/" "[{author}](<{url}f/u/{creatorId}>) created [{title}](<{wikiurl}wiki/"
"Message_Wall:{user_wall}?threadId={threadid}>) on {user}'s Message Wall" "Message_Wall:{user_wall}?threadId={threadid}>) on {user}'s Message Wall"
msgstr "" msgstr ""
"Criado [{title}](<{url}f/p/{threadId}>) por [{author}](<{url}f/u/{creatorId}" "[{author}](<{url}f/u/{creatorId}>) criou [{title}](<{wikiurl}wiki/"
">) no {forumName}" "Message_Wall:{user_wall}?threadId={threadid}>) no mural de mensagens de "
"{user}"
#: discussions.py:136 #: discussions.py:136
#, python-brace-format #, python-brace-format
@ -86,17 +85,15 @@ msgstr ""
"{creatorId}>) do [{title}](<{url}f/p/{threadId}>) do {forumName}" "{creatorId}>) do [{title}](<{url}f/p/{threadId}>) do {forumName}"
#: discussions.py:147 #: discussions.py:147
#, fuzzy, python-brace-format #, python-brace-format
#| msgid ""
#| "[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}"
#| ">) in {forumName}"
msgid "" msgid ""
"[{author}](<{url}f/u/{creatorId}>) replied to [{title}](<{wikiurl}wiki/" "[{author}](<{url}f/u/{creatorId}>) replied to [{title}](<{wikiurl}wiki/"
"Message_Wall:{user_wall}?threadId={threadid}#{replyId}>) on {user}'s Message " "Message_Wall:{user_wall}?threadId={threadid}#{replyId}>) on {user}'s Message "
"Wall" "Wall"
msgstr "" msgstr ""
"Criado [{title}](<{url}f/p/{threadId}>) por [{author}](<{url}f/u/{creatorId}" "[{author}](<{url}f/u/{creatorId}>) respondeu [{title}](<{wikiurl}wiki/"
">) no {forumName}" "Message_Wall:{user_wall}?threadId={threadid}#{replyId}>) no mural de "
"mensagens de {user}"
#: discussions.py:153 #: discussions.py:153
#, python-brace-format #, python-brace-format
@ -104,3 +101,5 @@ msgid ""
"[{author}](<{url}f/u/{creatorId}>) created a poll [{title}](<{url}f/p/" "[{author}](<{url}f/u/{creatorId}>) created a poll [{title}](<{url}f/p/"
"{threadId}>) in {forumName}" "{threadId}>) in {forumName}"
msgstr "" msgstr ""
"[{author}](<{url}f/u/{creatorId}>)criou uma enquete [{title}](<{url}f/p/"
"{threadId}>) no {forumName}"

View file

@ -8,15 +8,16 @@ msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-17 20:53+0100\n" "POT-Creation-Date: 2020-03-17 20:53+0100\n"
"PO-Revision-Date: 2020-03-18 13:37+0100\n" "PO-Revision-Date: 2020-08-04 09:51+0000\n"
"Last-Translator: Frisk <piotrex43@protonmail.ch>\n" "Last-Translator: Eduaddad <duduaddad@gmail.com>\n"
"Language-Team: \n" "Language-Team: Portuguese (Brazil) <https://weblate.frisk.space/projects/"
"Language: pt_BR\n" "rcgcdw/main/pt_BR/>\n"
"Language: pt-br\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Poedit 2.3\n" "X-Generator: Weblate 4.1.1\n"
#: rcgcdw.py:71 #: rcgcdw.py:71
msgid "Location" msgid "Location"
@ -64,21 +65,19 @@ msgstr "Link do Steam"
#: rcgcdw.py:71 #: rcgcdw.py:71
msgid "Discord handle" msgid "Discord handle"
msgstr "" msgstr "Link do Discord"
#: rcgcdw.py:71 #: rcgcdw.py:71
msgid "Battle.net handle" msgid "Battle.net handle"
msgstr "" msgstr "Link do Battle.net"
#: rcgcdw.py:172 rcgcdw.py:924 #: rcgcdw.py:172 rcgcdw.py:924
msgid "Unknown" msgid "Unknown"
msgstr "Desconhecido" msgstr "Desconhecido"
#: rcgcdw.py:174 #: rcgcdw.py:174
#, fuzzy
#| msgid "Unknown"
msgid "unknown" msgid "unknown"
msgstr "Desconhecido" msgstr "desconhecido"
#: rcgcdw.py:244 #: rcgcdw.py:244
#, python-brace-format #, python-brace-format
@ -86,6 +85,8 @@ msgid ""
"[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}" "[{author}]({author_url}) edited [{article}]({edit_link}){comment} ({sign}"
"{edit_size})" "{edit_size})"
msgstr "" msgstr ""
"[{author}]({author_url}) editou [{article}]({edit_link}){comment} "
"({sign}{edit_size})"
#: rcgcdw.py:246 #: rcgcdw.py:246
#, python-brace-format #, python-brace-format
@ -93,11 +94,13 @@ msgid ""
"[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}" "[{author}]({author_url}) created [{article}]({edit_link}){comment} ({sign}"
"{edit_size})" "{edit_size})"
msgstr "" msgstr ""
"[{author}]({author_url}) criou [{article}]({edit_link}){comment} "
"({sign}{edit_size})"
#: rcgcdw.py:249 #: rcgcdw.py:249
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}" msgid "[{author}]({author_url}) uploaded [{file}]({file_link}){comment}"
msgstr "" msgstr "[{author}]({author_url}) carregou [{file}]({file_link}){comment}"
#: rcgcdw.py:256 #: rcgcdw.py:256
#, python-brace-format #, python-brace-format
@ -112,11 +115,13 @@ msgid ""
"[{author}]({author_url}) uploaded a new version of [{file}]({file_link})" "[{author}]({author_url}) uploaded a new version of [{file}]({file_link})"
"{comment}" "{comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) carregou a nova versão de "
"[{file}]({file_link}){comment}"
#: rcgcdw.py:263 #: rcgcdw.py:263
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}" msgid "[{author}]({author_url}) deleted [{page}]({page_link}){comment}"
msgstr "" msgstr "[{author}]({author_url}) excluiu [{page}]({page_link}){comment}"
#: rcgcdw.py:267 #: rcgcdw.py:267
#, python-brace-format #, python-brace-format
@ -124,14 +129,16 @@ msgid ""
"[{author}]({author_url}) deleted redirect by overwriting [{page}]" "[{author}]({author_url}) deleted redirect by overwriting [{page}]"
"({page_link}){comment}" "({page_link}){comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) excluiu o redirecionamento substituindo "
"[{page}]({page_link}){comment}"
#: rcgcdw.py:271 rcgcdw.py:276 #: rcgcdw.py:271 rcgcdw.py:276
msgid "without making a redirect" msgid "without making a redirect"
msgstr "" msgstr "sem fazer um redirecionamento"
#: rcgcdw.py:271 rcgcdw.py:277 #: rcgcdw.py:271 rcgcdw.py:277
msgid "with a redirect" msgid "with a redirect"
msgstr "" msgstr "com um redirecionamento"
#: rcgcdw.py:272 #: rcgcdw.py:272
#, python-brace-format #, python-brace-format
@ -139,6 +146,8 @@ msgid ""
"[{author}]({author_url}) moved {redirect}*{article}* to [{target}]" "[{author}]({author_url}) moved {redirect}*{article}* to [{target}]"
"({target_url}) {made_a_redirect}{comment}" "({target_url}) {made_a_redirect}{comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) moveu {redirect}*{article}* para "
"[{target}]({target_url}) {made_a_redirect}{comment}"
#: rcgcdw.py:278 #: rcgcdw.py:278
#, python-brace-format #, python-brace-format
@ -146,14 +155,17 @@ msgid ""
"[{author}]({author_url}) moved {redirect}*{article}* over redirect to " "[{author}]({author_url}) moved {redirect}*{article}* over redirect to "
"[{target}]({target_url}) {made_a_redirect}{comment}" "[{target}]({target_url}) {made_a_redirect}{comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) moveu {redirect}*{article}* sobre o "
"redirecionamento para [{target}]({target_url}) {made_a_redirect}{comment}"
#: rcgcdw.py:283 #: rcgcdw.py:283
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Moved protection settings from {redirect}{article} to {title}"
msgid "" msgid ""
"[{author}]({author_url}) moved protection settings from {redirect}*{article}" "[{author}]({author_url}) moved protection settings from {redirect}*{article}"
"* to [{target}]({target_url}){comment}" "* to [{target}]({target_url}){comment}"
msgstr "Configurações de proteção movidos de {redirect}{article} para {title}" msgstr ""
"[{author}]({author_url}) moveu as configurações de proteção de "
"{redirect}*{article}* para [{target}]({target_url}){comment}"
#: rcgcdw.py:294 rcgcdw.py:699 #: rcgcdw.py:294 rcgcdw.py:699
msgid "infinity and beyond" msgid "infinity and beyond"
@ -172,58 +184,62 @@ msgid " on namespaces: "
msgstr " nos espaços nominais: " msgstr " nos espaços nominais: "
#: rcgcdw.py:332 #: rcgcdw.py:332
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Changed block settings for {blocked_user}"
msgid "" msgid ""
"[{author}]({author_url}) blocked [{user}]({user_url}) for {time}" "[{author}]({author_url}) blocked [{user}]({user_url}) for {time}"
"{restriction_desc}{comment}" "{restriction_desc}{comment}"
msgstr "Configurações de bloqueio alteradas para {blocked_user}" msgstr ""
"[{author}]({author_url}) bloqueou [{user}]({user_url}) por "
"{time}{restriction_desc}{comment}"
#: rcgcdw.py:336 #: rcgcdw.py:336
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Changed block settings for {blocked_user}"
msgid "" msgid ""
"[{author}]({author_url}) changed block settings for [{blocked_user}]" "[{author}]({author_url}) changed block settings for [{blocked_user}]"
"({user_url}){comment}" "({user_url}){comment}"
msgstr "Configurações de bloqueio alteradas para {blocked_user}" msgstr ""
"[{author}]({author_url}) mudou as configurações de bloqueio para "
"[{blocked_user}]({user_url}){comment}"
#: rcgcdw.py:340 #: rcgcdw.py:340
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}" "[{author}]({author_url}) unblocked [{blocked_user}]({user_url}){comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) desbloqueou [{blocked_user}]({user_url}){comment}"
#: rcgcdw.py:343 #: rcgcdw.py:343
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Left a comment on {target}'s profile"
msgid "" msgid ""
"[{author}]({author_url}) left a [comment]({comment}) on {target} profile" "[{author}]({author_url}) left a [comment]({comment}) on {target} profile"
msgstr "Deixou um comentário no perfil de {target}" msgstr ""
"[{author}]({author_url}) deixou um [comentário]({comment}) no perfil de "
"{target}"
#: rcgcdw.py:343 #: rcgcdw.py:343
#, fuzzy
#| msgid "Edited their own profile"
msgid "their own profile" msgid "their own profile"
msgstr "Editou seu próprio perfil" msgstr "seu próprio perfil"
#: rcgcdw.py:346 #: rcgcdw.py:346
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Replied to a comment on {target}'s profile"
msgid "" msgid ""
"[{author}]({author_url}) replied to a [comment]({comment}) on {target} " "[{author}]({author_url}) replied to a [comment]({comment}) on {target} "
"profile" "profile"
msgstr "Respondeu a um comentário no perfil de {target}" msgstr ""
"[{author}]({author_url}) respondeu a um [comentário]({comment}) no perfil de "
"{target}"
#: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370 #: rcgcdw.py:349 rcgcdw.py:355 rcgcdw.py:366 rcgcdw.py:370
msgid "their own" msgid "their own"
msgstr "" msgstr "próprio"
#: rcgcdw.py:352 #: rcgcdw.py:352
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Edited a comment on {target}'s profile"
msgid "" msgid ""
"[{author}]({author_url}) edited a [comment]({comment}) on {target} profile" "[{author}]({author_url}) edited a [comment]({comment}) on {target} profile"
msgstr "Editou um comentário no perfil de {target}" msgstr ""
"[{author}]({author_url}) editou um [comentário]({comment}) no perfil de "
"{target}"
#: rcgcdw.py:358 #: rcgcdw.py:358
#, python-brace-format #, python-brace-format
@ -231,26 +247,26 @@ msgid "[{author}]({author_url}) purged a comment on {target} profile"
msgstr "[{author}]({author_url}) limpou um comentário no perfil {target}" msgstr "[{author}]({author_url}) limpou um comentário no perfil {target}"
#: rcgcdw.py:368 #: rcgcdw.py:368
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Deleted a comment on {target}'s profile"
msgid "[{author}]({author_url}) deleted a comment on {target} profile" msgid "[{author}]({author_url}) deleted a comment on {target} profile"
msgstr "Excluiu um comentário no perfil de {target}" msgstr "[{author}]({author_url}) excluiu um comentário no perfil de {target}"
#: rcgcdw.py:374 #: rcgcdw.py:374
#, python-brace-format #, python-brace-format
msgid "[{target}]({target_url})'s" msgid "[{target}]({target_url})'s"
msgstr "" msgstr "[{target}]({target_url})"
#: rcgcdw.py:374 #: rcgcdw.py:374
#, python-brace-format #, python-brace-format
msgid "[their own]({target_url})" msgid "[their own]({target_url})"
msgstr "" msgstr "[seu próprio]({target_url})"
#: rcgcdw.py:375 #: rcgcdw.py:375
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*" "[{author}]({author_url}) edited the {field} on {target} profile. *({desc})*"
msgstr "" msgstr ""
"[{author}]({author_url}) editou o {field} no perfil de {target}. *({desc})*"
#: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802 #: rcgcdw.py:389 rcgcdw.py:391 rcgcdw.py:800 rcgcdw.py:802
msgid "none" msgid "none"
@ -266,6 +282,8 @@ msgid ""
"[{author}]({author_url}) protected [{article}]({article_url}) with the " "[{author}]({author_url}) protected [{article}]({article_url}) with the "
"following settings: {settings}{comment}" "following settings: {settings}{comment}"
msgstr "" msgstr ""
"[{author}]({author_url})protegeu [{article}]({article_url}) com as seguintes "
"configurações: {settings}{comment}"
#: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816 #: rcgcdw.py:404 rcgcdw.py:412 rcgcdw.py:810 rcgcdw.py:816
msgid " [cascading]" msgid " [cascading]"
@ -277,6 +295,8 @@ msgid ""
"[{author}]({author_url}) modified protection settings of [{article}]" "[{author}]({author_url}) modified protection settings of [{article}]"
"({article_url}) to: {settings}{comment}" "({article_url}) to: {settings}{comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) modificou as configurações de proteção de "
"[{article}]({article_url}) para: {settings}{comment}"
#: rcgcdw.py:416 #: rcgcdw.py:416
#, python-brace-format #, python-brace-format
@ -284,19 +304,23 @@ msgid ""
"[{author}]({author_url}) removed protection from [{article}]({article_url})" "[{author}]({author_url}) removed protection from [{article}]({article_url})"
"{comment}" "{comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) removeu a proteção para "
"[{article}]({article_url}){comment}"
#: rcgcdw.py:420 #: rcgcdw.py:420
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Changed visibility of revision on page {article} "
#| msgid_plural "Changed visibility of {amount} revisions on page {article} "
msgid "" msgid ""
"[{author}]({author_url}) changed visibility of revision on page [{article}]" "[{author}]({author_url}) changed visibility of revision on page [{article}]"
"({article_url}){comment}" "({article_url}){comment}"
msgid_plural "" msgid_plural ""
"[{author}]({author_url}) changed visibility of {amount} revisions on page " "[{author}]({author_url}) changed visibility of {amount} revisions on page "
"[{article}]({article_url}){comment}" "[{article}]({article_url}){comment}"
msgstr[0] "Visibilidade alterada da revisão na página {article} " msgstr[0] ""
msgstr[1] "Visibilidade alterada de {amount} revisões na página {article} " "[{author}]({author_url}) mudou a visibilidade da revisão na "
"página[{article}]({article_url}){comment}"
msgstr[1] ""
"[{author}]({author_url}) mudou a visibilidade da revisão {amount} na página "
"[{article}]({article_url}){comment}"
#: rcgcdw.py:425 #: rcgcdw.py:425
#, python-brace-format #, python-brace-format
@ -307,37 +331,44 @@ msgid_plural ""
"[{author}]({author_url}) imported [{article}]({article_url}) with {count} " "[{author}]({author_url}) imported [{article}]({article_url}) with {count} "
"revisions{comment}" "revisions{comment}"
msgstr[0] "" msgstr[0] ""
"[{author}]({author_url}) importou [{article}]({article_url}) com {count} "
"revisão{comment}"
msgstr[1] "" msgstr[1] ""
"[{author}]({author_url}) importou [{article}]({article_url}) com {count} "
"revisões{comment}"
#: rcgcdw.py:430 #: rcgcdw.py:430
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}" msgid "[{author}]({author_url}) restored [{article}]({article_url}){comment}"
msgstr "" msgstr "[{author}]({author_url}) restaurou [{article}]({article_url}){comment}"
#: rcgcdw.py:432 #: rcgcdw.py:432
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Changed visibility of log events"
msgid "[{author}]({author_url}) changed visibility of log events{comment}" msgid "[{author}]({author_url}) changed visibility of log events{comment}"
msgstr "Visibilidade alterada de eventos de registros" msgstr ""
"[{author}]({author_url}) mudou a visibilidade dos eventos de "
"registro{comment}"
#: rcgcdw.py:434 #: rcgcdw.py:434
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) imported interwiki{comment}" msgid "[{author}]({author_url}) imported interwiki{comment}"
msgstr "" msgstr "[{author}]({author_url}) importou a interwiki{comment}"
#: rcgcdw.py:437 #: rcgcdw.py:437
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Edited abuse filter number {number}"
msgid "" msgid ""
"[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})" "[{author}]({author_url}) edited abuse filter [number {number}]({filter_url})"
msgstr "Número de filtro de abuso editado {number}" msgstr ""
"[{author}]({author_url}) editou o filtro de abuso [number "
"{number}]({filter_url})"
#: rcgcdw.py:440 #: rcgcdw.py:440
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Created abuse filter number {number}"
msgid "" msgid ""
"[{author}]({author_url}) created abuse filter [number {number}]({filter_url})" "[{author}]({author_url}) created abuse filter [number {number}]({filter_url})"
msgstr "Criado filtro de abuso número {number}" msgstr ""
"[{author}]({author_url}) criou o filtro de abuso [number "
"{number}]({filter_url})"
#: rcgcdw.py:444 #: rcgcdw.py:444
#, python-brace-format #, python-brace-format
@ -345,6 +376,8 @@ msgid ""
"[{author}]({author_url}) merged revision histories of [{article}]" "[{author}]({author_url}) merged revision histories of [{article}]"
"({article_url}) into [{dest}]({dest_url}){comment}" "({article_url}) into [{dest}]({dest_url}){comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) mesclou o histórico de revisão de "
"[{article}]({article_url}) para [{dest}]({dest_url}){comment}"
#: rcgcdw.py:448 #: rcgcdw.py:448
#, python-brace-format #, python-brace-format
@ -352,6 +385,8 @@ msgid ""
"[{author}]({author_url}) added an entry to the [interwiki table]" "[{author}]({author_url}) added an entry to the [interwiki table]"
"({table_url}) pointing to {website} with {prefix} prefix" "({table_url}) pointing to {website} with {prefix} prefix"
msgstr "" msgstr ""
"[{author}]({author_url}) adicionou uma entrada à [tabela de "
"interwiki]({table_url}) apontando para {website} com o prefixo {prefix}"
#: rcgcdw.py:454 #: rcgcdw.py:454
#, python-brace-format #, python-brace-format
@ -359,13 +394,16 @@ msgid ""
"[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) " "[{author}]({author_url}) edited an entry in [interwiki table]({table_url}) "
"pointing to {website} with {prefix} prefix" "pointing to {website} with {prefix} prefix"
msgstr "" msgstr ""
"[{author}]({author_url}) editou uma entrada na [tabela de "
"Interwiki]({table_url}) apontando para {website} com o prefixo {prefix}"
#: rcgcdw.py:460 #: rcgcdw.py:460
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Deleted an entry in interwiki table"
msgid "" msgid ""
"[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})" "[{author}]({author_url}) deleted an entry in [interwiki table]({table_url})"
msgstr "Excluiu uma entrada na tabela interwiki" msgstr ""
"[{author}]({author_url}) excluiu uma entrada na [tabela de "
"Interwiki]({table_url})"
#: rcgcdw.py:463 #: rcgcdw.py:463
#, python-brace-format #, python-brace-format
@ -373,26 +411,30 @@ msgid ""
"[{author}]({author_url}) changed the content model of the page [{article}]" "[{author}]({author_url}) changed the content model of the page [{article}]"
"({article_url}) from {old} to {new}{comment}" "({article_url}) from {old} to {new}{comment}"
msgstr "" msgstr ""
"[{author}]({author_url}) mudou o modelo de conteúdo da página "
"[{article}]({article_url}) de {old} para {new}{comment}"
#: rcgcdw.py:467 #: rcgcdw.py:467
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"[{author}]({author_url}) edited the sprite for [{article}]({article_url})" "[{author}]({author_url}) edited the sprite for [{article}]({article_url})"
msgstr "" msgstr ""
"[{author}]({author_url}) editou o sprite para [{article}]({article_url})"
#: rcgcdw.py:470 #: rcgcdw.py:470
#, fuzzy, python-brace-format #, python-brace-format
#| msgid "Created the sprite sheet for {article}"
msgid "" msgid ""
"[{author}]({author_url}) created the sprite sheet for [{article}]" "[{author}]({author_url}) created the sprite sheet for [{article}]"
"({article_url})" "({article_url})"
msgstr "Criou a folha de sprites para {article}" msgstr ""
"[{author}]({author_url})criou a folha de sprite para "
"[{article}]({article_url})"
#: rcgcdw.py:473 #: rcgcdw.py:473
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"[{author}]({author_url}) edited the slice for [{article}]({article_url})" "[{author}]({author_url}) edited the slice for [{article}]({article_url})"
msgstr "" msgstr "[{author}]({author_url}) editou a peça para [{article}]({article_url})"
#: rcgcdw.py:478 #: rcgcdw.py:478
#, python-brace-format #, python-brace-format
@ -402,41 +444,41 @@ msgstr "[{author}]({author_url}) criou tabela no Cargo \"{table}\""
#: rcgcdw.py:480 #: rcgcdw.py:480
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\"" msgid "[{author}]({author_url}) deleted the Cargo table \"{table}\""
msgstr "[{author}]({author_url}) excluiu a tabela no Cargo \"{table}\"" msgstr "[{author}]({author_url}) excluiu a tabela no Cargo \"{table}\""
#: rcgcdw.py:485 #: rcgcdw.py:485
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\"" msgid "[{author}]({author_url}) recreated the Cargo table \"{table}\""
msgstr "[{author}]({author_url}) recriou a tabela no Cargo \"{table}\"" msgstr "[{author}]({author_url}) recriou a tabela no Cargo \"{table}\""
#: rcgcdw.py:490 #: rcgcdw.py:490
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\"" msgid "[{author}]({author_url}) replaced the Cargo table \"{table}\""
msgstr "[{author}]({author_url}) substituiu a tabela no Cargo \"{table}\"" msgstr "[{author}]({author_url}) substituiu a tabela no Cargo \"{table}\""
#: rcgcdw.py:493 #: rcgcdw.py:493
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\"" msgid "[{author}]({author_url}) created a [tag]({tag_url}) \"{tag}\""
msgstr "" msgstr "[{author}]({author_url}) criou a [marcação]({tag_url}) \"{tag}\""
#: rcgcdw.py:497 #: rcgcdw.py:497
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\"" msgid "[{author}]({author_url}) deleted a [tag]({tag_url}) \"{tag}\""
msgstr "" msgstr "[{author}]({author_url}) excluiu a [marcação]({tag_url}) \"{tag}\""
#: rcgcdw.py:501 #: rcgcdw.py:501
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\"" msgid "[{author}]({author_url}) activated a [tag]({tag_url}) \"{tag}\""
msgstr "" msgstr "[{author}]({author_url}) ativou a [marcação]({tag_url}) \"{tag}\""
#: rcgcdw.py:504 #: rcgcdw.py:504
#, python-brace-format #, python-brace-format
msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\"" msgid "[{author}]({author_url}) deactivated a [tag]({tag_url}) \"{tag}\""
msgstr "" msgstr "[{author}]({author_url}) desativou a [marcação]({tag_url}) \"{tag}\""
#: rcgcdw.py:506 #: rcgcdw.py:506
msgid "An action has been hidden by administration." msgid "An action has been hidden by administration."
msgstr "" msgstr "Uma ação foi ocultada pela administração."
#: rcgcdw.py:515 rcgcdw.py:803 #: rcgcdw.py:515 rcgcdw.py:803
msgid "No description provided" msgid "No description provided"
@ -606,7 +648,7 @@ msgstr "Editou seu próprio perfil"
#: rcgcdw.py:770 #: rcgcdw.py:770
#, python-brace-format #, python-brace-format
msgid "Cleared the {field} field" msgid "Cleared the {field} field"
msgstr "" msgstr "Limpo o campo {field}"
#: rcgcdw.py:772 #: rcgcdw.py:772
#, python-brace-format #, python-brace-format
@ -784,7 +826,7 @@ msgstr "Desativou uma etiqueta \"{tag}\""
#: rcgcdw.py:923 #: rcgcdw.py:923
msgid "Action has been hidden by administration." msgid "Action has been hidden by administration."
msgstr "" msgstr "A ação foi ocultada pela administração."
#: rcgcdw.py:951 #: rcgcdw.py:951
msgid "Tags" msgid "Tags"
@ -812,17 +854,17 @@ msgstr "Mudanças de categorias"
#: rcgcdw.py:977 #: rcgcdw.py:977
msgid "~~hidden~~" msgid "~~hidden~~"
msgstr "" msgstr "~~ocultado~~"
#: rcgcdw.py:983 #: rcgcdw.py:983
msgid "hidden" msgid "hidden"
msgstr "" msgstr "oculto"
#: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058 #: rcgcdw.py:1050 rcgcdw.py:1052 rcgcdw.py:1054 rcgcdw.py:1056 rcgcdw.py:1058
#: rcgcdw.py:1060 rcgcdw.py:1062 #: rcgcdw.py:1060 rcgcdw.py:1062
#, python-brace-format #, python-brace-format
msgid "{value} (avg. {avg})" msgid "{value} (avg. {avg})"
msgstr "" msgstr "{value} (med. {avg})"
#: rcgcdw.py:1086 rcgcdw.py:1114 #: rcgcdw.py:1086 rcgcdw.py:1114
msgid "Daily overview" msgid "Daily overview"
@ -987,8 +1029,8 @@ msgstr[1] "semanas"
#: rcgcdw.py:1466 #: rcgcdw.py:1466
msgid "month" msgid "month"
msgid_plural "months" msgid_plural "months"
msgstr[0] "" msgstr[0] "mês"
msgstr[1] "" msgstr[1] "meses"
#: rcgcdw.py:1466 #: rcgcdw.py:1466
msgid "year" msgid "year"

View file

@ -5,86 +5,90 @@
# #
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: \n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-06-23 14:54+0200\n" "POT-Creation-Date: 2020-07-04 00:58+0200\n"
"PO-Revision-Date: 2020-06-23 14:57+0200\n" "PO-Revision-Date: 2020-08-04 09:51+0000\n"
"Last-Translator: \n" "Last-Translator: Dianliang233 <dianliang233@gmail.com>\n"
"Language-Team: \n" "Language-Team: Chinese (Simplified) <https://weblate.frisk.space/projects/"
"Language: en\n" "rcgcdw/discussions/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.3\n" "Plural-Forms: nplurals=1; plural=0;\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: Weblate 4.1.1\n"
#: discussions.py:56 #: discussions.py:56
#, python-brace-format #, python-brace-format
msgid "Replied to \"{title}\"" msgid "Replied to \"{title}\""
msgstr "Replied to \"{title}\"" msgstr "回复了“{title}”"
#: discussions.py:63 discussions.py:79 #: discussions.py:63 discussions.py:79 discussions.py:127 discussions.py:143
msgid "unknown" msgid "unknown"
msgstr "unknown" msgstr "未知"
#: discussions.py:68 #: discussions.py:68
#, python-brace-format #, python-brace-format
msgid "Replied to \"{title}\" on {user}'s Message Wall" msgid "Replied to \"{title}\" on {user}'s Message Wall"
msgstr "Replied to \"{title}\" on {user}'s Message Wall" msgstr ""
#: discussions.py:72 #: discussions.py:72
#, python-brace-format #, python-brace-format
msgid "Created \"{title}\"" msgid "Created \"{title}\""
msgstr "Created \"{title}\"" msgstr ""
#: discussions.py:86 #: discussions.py:86
#, python-brace-format #, python-brace-format
msgid "Created \"{title}\" on {user}'s Message Wall" msgid "Created \"{title}\" on {user}'s Message Wall"
msgstr "Created \"{title}\" on {user}'s Message Wall" msgstr ""
#: discussions.py:99 #: discussions.py:99
#, python-brace-format #, python-brace-format
msgid "Created a poll titled \"{title}\"" msgid "Created a poll titled \"{title}\""
msgstr "Created a poll titled \"{title}\"" msgstr ""
#: discussions.py:104 #: discussions.py:104
msgid "Option {}" msgid "Option {}"
msgstr "Option {}" msgstr ""
#: discussions.py:105 #: discussions.py:105
#, python-brace-format #, python-brace-format
msgid "__[View image]({image_url})__" msgid "__[View image]({image_url})__"
msgstr "__[View image]({image_url})__"
#: discussions.py:118
#, python-brace-format
#| msgid ""
#| "[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}"
#| ">) in ${forumName}"
msgid ""
"[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}>) "
"in {forumName}"
msgstr "" msgstr ""
"[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}>) "
"in {forumName}"
#: discussions.py:121 #: discussions.py:121
#, python-brace-format #, python-brace-format
msgid "" msgid ""
"[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}>) "
"in {forumName}"
msgstr ""
#: discussions.py:130
#, python-brace-format
msgid ""
"[{author}](<{url}f/u/{creatorId}>) created [{title}](<{wikiurl}wiki/"
"Message_Wall:{user_wall}?threadId={threadid}>) on {user}'s Message Wall"
msgstr ""
#: discussions.py:136
#, python-brace-format
msgid ""
"[{author}](<{url}f/u/{creatorId}>) created a [reply](<{url}f/p/{threadId}/r/" "[{author}](<{url}f/u/{creatorId}>) created a [reply](<{url}f/p/{threadId}/r/"
"{postId}>) to [{title}](<{url}f/p/{threadId}>) in {forumName}" "{postId}>) to [{title}](<{url}f/p/{threadId}>) in {forumName}"
msgstr "" msgstr ""
"[{author}](<{url}f/u/{creatorId}>) created a [reply](<{url}f/p/{threadId}/r/"
"{postId}>) to [{title}](<{url}f/p/{threadId}>) in {forumName}"
#: discussions.py:126 #: discussions.py:147
#, python-brace-format
msgid ""
"[{author}](<{url}f/u/{creatorId}>) replied to [{title}](<{wikiurl}wiki/"
"Message_Wall:{user_wall}?threadId={threadid}#{replyId}>) on {user}'s Message "
"Wall"
msgstr ""
#: discussions.py:153
#, python-brace-format #, python-brace-format
#| msgid ""
#| "[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}"
#| ">) in ${forumName}"
msgid "" msgid ""
"[{author}](<{url}f/u/{creatorId}>) created a poll [{title}](<{url}f/p/" "[{author}](<{url}f/u/{creatorId}>) created a poll [{title}](<{url}f/p/"
"{threadId}>) in {forumName}" "{threadId}>) in {forumName}"
msgstr "" msgstr ""
"[{author}](<{url}f/u/{creatorId}>) created a poll [{title}](<{url}f/p/"
"{threadId}>) in {forumName}"

View file

@ -0,0 +1,28 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-04 00:57+0200\n"
"PO-Revision-Date: 2020-08-04 09:51+0000\n"
"Last-Translator: Dianliang233 <dianliang233@gmail.com>\n"
"Language-Team: Chinese (Simplified) <https://weblate.frisk.space/projects/"
"rcgcdw/misc/zh_Hans/>\n"
"Language: zh_Hans\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.1.1\n"
#: misc.py:143
msgid ""
"\n"
"__And more__"
msgstr ""
"\n"
"__还有更多__"

View file

@ -0,0 +1,28 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-07-04 00:57+0200\n"
"PO-Revision-Date: 2020-08-04 09:51+0000\n"
"Last-Translator: Dianliang233 <dianliang233@gmail.com>\n"
"Language-Team: Chinese (Traditional) <https://weblate.frisk.space/projects/"
"rcgcdw/misc/zh_Hant/>\n"
"Language: zh_Hant\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 4.1.1\n"
#: misc.py:143
msgid ""
"\n"
"__And more__"
msgstr ""
"\n"
"__還有更多__"

View file

@ -12,119 +12,124 @@ _ = disc.gettext
discussion_logger = logging.getLogger("rcgcdw.discussion_formatter") discussion_logger = logging.getLogger("rcgcdw.discussion_formatter")
def embed_formatter(post, post_type):
"""Embed formatter for Fandom discussions."""
embed = DiscordMessage("embed", "discussion", settings["fandom_discussions"]["webhookURL"][int(post["id"]) % len(settings["fandom_discussions"]["webhookURL"])])
embed.set_author(post["createdBy"]["name"], "{wikiurl}f/u/{creatorId}".format(
wikiurl=settings["fandom_discussions"]["wiki_url"], creatorId=post["creatorId"]), icon_url=post["createdBy"]["avatarUrl"])
discussion_post_type = post["_embedded"]["thread"][0].get("containerType", "FORUM") # Can be FORUM, ARTICLE_COMMENT or WALL on UCP
if post_type == "TEXT":
if post["isReply"]:
if discussion_post_type == "FORUM":
embed.event_type = "discussion/forum/reply"
embed["title"] = _("Replied to \"{title}\"").format(title=post["_embedded"]["thread"][0]["title"])
embed["url"] = "{wikiurl}f/p/{threadId}/r/{postId}".format(
wikiurl=settings["fandom_discussions"]["wiki_url"], threadId=post["threadId"], postId=post["id"])
elif discussion_post_type == "ARTICLE_COMMENT":
discussion_logger.warning("Article comments are not yet implemented. For reasons see https://gitlab.com/piotrex43/RcGcDw/-/issues/126#note_366480037")
return
elif discussion_post_type == "WALL":
user_wall = _("unknown") # Fail safe
embed.event_type = "discussion/wall/reply"
if post["forumName"].endswith(' Message Wall'):
user_wall = post["forumName"][:-13]
embed["url"] = "{wikiurl}wiki/Message_Wall:{user_wall}?threadId={threadid}#{replyId}".format(wikiurl=settings["fandom_discussions"]["wiki_url"], user_wall=quote_plus(user_wall.replace(" ", "_")), threadid=post["threadId"], replyId=post["id"])
embed["title"] = _("Replied to \"{title}\" on {user}'s Message Wall").format(title=post["_embedded"]["thread"][0]["title"], user=user_wall)
else:
if discussion_post_type == "FORUM":
embed.event_type = "discussion/forum/post"
embed["title"] = _("Created \"{title}\"").format(title=post["title"])
embed["url"] = "{wikiurl}f/p/{threadId}".format(wikiurl=settings["fandom_discussions"]["wiki_url"],
threadId=post["threadId"])
elif discussion_post_type == "ARTICLE_COMMENT":
discussion_logger.warning("Article comments are not yet implemented. For reasons see https://gitlab.com/piotrex43/RcGcDw/-/issues/126#note_366480037")
return
elif discussion_post_type == "WALL":
user_wall = _("unknown") # Fail safe
embed.event_type = "discussion/wall/post"
if post["forumName"].endswith(' Message Wall'):
user_wall = post["forumName"][:-13]
embed["url"] = "{wikiurl}wiki/Message_Wall:{user_wall}?threadId={threadid}".format(
wikiurl=settings["fandom_discussions"]["wiki_url"], user_wall=quote_plus(user_wall.replace(" ", "_")),
threadid=post["threadId"])
embed["title"] = _("Created \"{title}\" on {user}'s Message Wall").format(title=post["_embedded"]["thread"][0]["title"], user=user_wall)
if settings["fandom_discussions"]["appearance"]["embed"]["show_content"]:
if post.get("jsonModel") is not None:
npost = DiscussionsFromHellParser(post)
embed["description"] = npost.parse()
if npost.image_last:
embed["image"]["url"] = npost.image_last
embed["description"] = embed["description"].replace(npost.image_last, "")
else: # Fallback when model is not available
embed["description"] = post.get("rawContent", "")
elif post_type == "POLL":
embed.event_type = "discussion/forum/poll"
poll = post["poll"]
embed["title"] = _("Created a poll titled \"{title}\"").format(title=poll["question"])
image_type = False
if poll["answers"][0]["image"] is not None:
image_type = True
for num, option in enumerate(poll["answers"]):
embed.add_field(option["text"] if image_type is True else _("Option {}").format(num+1),
option["text"] if image_type is False else _("__[View image]({image_url})__").format(image_url=option["image"]["url"]),
inline=True)
embed["footer"]["text"] = post["forumName"]
embed["timestamp"] = datetime.datetime.fromtimestamp(post["creationDate"]["epochSecond"], tz=datetime.timezone.utc).isoformat()
embed.finish_embed()
send_to_discord(embed)
def compact_formatter(post_type, post):
def compact_formatter(post, post_type):
"""Compact formatter for Fandom discussions.""" """Compact formatter for Fandom discussions."""
message = None message = None
discussion_post_type = post["_embedded"]["thread"][0].get("containerType", if post_type == "FORUM":
"FORUM") # Can be FORUM, ARTICLE_COMMENT or WALL on UCP author = post["createdBy"]["name"]
if post_type == "TEXT": author_url = "<{url}f/u/{creatorId}>".format(url=settings["fandom_discussions"]["wiki_url"], creatorId=post["creatorId"])
elif post["creatorIp"]:
author = post["creatorIp"][1:]
author_url = "<{url}wiki/Special:Contributions{creatorIp}>".format(url=settings["fandom_discussions"]["wiki_url"], creatorIp=post["creatorIp"])
else:
author = post["createdBy"]["name"]
author_url = "<{url}wiki/User:{author}>".format(url=settings["fandom_discussions"]["wiki_url"], author=author)
if post_type == "FORUM":
if not post["isReply"]: if not post["isReply"]:
if discussion_post_type == "FORUM": thread_funnel = post.get("funnel")
message = _("[{author}](<{url}f/u/{creatorId}>) created [{title}](<{url}f/p/{threadId}>) in {forumName}").format( msg_text = "[{author}]({author_url}) created [{title}](<{url}f/p/{threadId}>) in {forumName}"
author=post["createdBy"]["name"], url=settings["fandom_discussions"]["wiki_url"], creatorId=post["creatorId"], title=post["title"], threadId=post["threadId"], forumName=post["forumName"]) if thread_funnel == "POLL":
elif discussion_post_type == "ARTICLE_COMMENT": msg_text = "[{author}]({author_url}) created a poll [{title}](<{url}f/p/{threadId}>) in {forumName}"
discussion_logger.warning("Article comments are not yet implemented. For reasons see https://gitlab.com/piotrex43/RcGcDw/-/issues/126#note_366480037") elif thread_funnel != "TEXT":
return discussion_logger.warning("The type of {} is an unknown discussion post type. Please post an issue on the project page to have it added https://gitlab.com/piotrex43/RcGcDw/-/issues.".format(thread_funnel))
elif discussion_post_type == "WALL": message = _(msg_text).format(author=author, author_url=author_url, title=post["title"], url=settings["fandom_discussions"]["wiki_url"], threadId=post["threadId"], forumName=post["forumName"])
user_wall = _("unknown") # Fail safe
if post["forumName"].endswith(' Message Wall'):
user_wall = post["forumName"][:-13]
message = _("[{author}](<{url}f/u/{creatorId}>) created [{title}](<{wikiurl}wiki/Message_Wall:{user_wall}?threadId={threadid}>) on {user}'s Message Wall").format(
author=post["createdBy"]["name"], url=settings["fandom_discussions"]["wiki_url"], creatorId=post["creatorId"], title=post["_embedded"]["thread"][0]["title"], user=user_wall,
wikiurl=settings["fandom_discussions"]["wiki_url"], user_wall=quote_plus(user_wall.replace(" ", "_")), threadid=post["threadId"]
)
else: else:
if discussion_post_type == "FORUM": message = _("[{author}]({author_url}) created a [reply](<{url}f/p/{threadId}/r/{postId}>) to [{title}](<{url}f/p/{threadId}>) in {forumName}").format(author=author, author_url=author_url, url=settings["fandom_discussions"]["wiki_url"], threadId=post["threadId"], postId=post["id"], title=post["_embedded"]["thread"][0]["title"], forumName=post["forumName"])
message = _("[{author}](<{url}f/u/{creatorId}>) created a [reply](<{url}f/p/{threadId}/r/{postId}>) to [{title}](<{url}f/p/{threadId}>) in {forumName}").format( elif post_type == "WALL":
author=post["createdBy"]["name"], url=settings["fandom_discussions"]["wiki_url"], creatorId=post["creatorId"], threadId=post["threadId"], postId=post["id"], title=post["_embedded"]["thread"][0]["title"], forumName=post["forumName"] user_wall = _("unknown") # Fail safe
) if post["forumName"].endswith(' Message Wall'):
elif discussion_post_type == "ARTICLE_COMMENT": user_wall = post["forumName"][:-13]
discussion_logger.warning("Article comments are not yet implemented. For reasons see https://gitlab.com/piotrex43/RcGcDw/-/issues/126#note_366480037") if not post["isReply"]:
return message = _("[{author}]({author_url}) created [{title}](<{url}wiki/Message_Wall:{user_wall}?threadId={threadId}>) on [{user}'s Message Wall](<{url}wiki/Message_Wall:{user_wall}>)").format(author=author, author_url=author_url, title=post["title"], url=settings["fandom_discussions"]["wiki_url"], user=user_wall, user_wall=quote_plus(user_wall.replace(" ", "_")), threadId=post["threadId"])
elif discussion_post_type == "WALL": else:
user_wall = _("unknown") # Fail safe message = _("[{author}]({author_url}) created a [reply](<{url}wiki/Message_Wall:{user_wall}?threadId={threadId}#{replyId}>) to [{title}](<{url}wiki/Message_Wall:{user_wall}?threadId={threadId}) on [{user}'s Message Wall](<{url}wiki/Message_Wall:{user_wall}>)").format(author=author, author_url=author_url, url=settings["fandom_discussions"]["wiki_url"], title=post["_embedded"]["thread"][0]["title"], user=user_wall, user_wall=quote_plus(user_wall.replace(" ", "_")), threadId=post["threadId"], replyId=post["id"])
if post["forumName"].endswith(' Message Wall'): elif post_type == "ARTICLE_COMMENT":
user_wall = post["forumName"][:-13] discussion_logger.warning("Article comments are not yet implemented. For reasons see https://gitlab.com/piotrex43/RcGcDw/-/issues/126#note_366480037")
message = _( article_page = _("unknown") # No page known
"[{author}](<{url}f/u/{creatorId}>) replied to [{title}](<{wikiurl}wiki/Message_Wall:{user_wall}?threadId={threadid}#{replyId}>) on {user}'s Message Wall").format( if not post["isReply"]:
author=post["createdBy"]["name"], url=settings["fandom_discussions"]["wiki_url"], creatorId=post["creatorId"], title=post["_embedded"]["thread"][0]["title"], user=user_wall, message = _("[{author}]({author_url}) created a [comment](<{url}wiki/{article}?commentId={commentId}>) on [{article}](<{url}wiki/{article}>)").format(author=author, author_url=author_url, url=settings["fandom_discussions"]["wiki_url"], article=article_page, commentId=post["threadId"])
wikiurl=settings["fandom_discussions"]["wiki_url"], user_wall=quote_plus(user_wall.replace(" ", "_")), threadid=post["threadId"], replyId=post["id"]) else:
message = _("[{author}]({author_url}) created a [reply](<{url}wiki/{article}?threadId={threadId}) to a [comment](<{url}wiki/{article}?commentId={commentId}&replyId={replyId}>) on [{article}](<{url}wiki/{article}>)").format(author=author, author_url=author_url, url=settings["fandom_discussions"]["wiki_url"], article=article_page, commentId=post["threadId"], replyId=post["id"])
elif post_type == "POLL": else:
message = _( discussion_logger.warning("The type of {} is an unknown discussion post type. Please post an issue on the project page to have it added https://gitlab.com/piotrex43/RcGcDw/-/issues.".format(post_type))
"[{author}](<{url}f/u/{creatorId}>) created a poll [{title}](<{url}f/p/{threadId}>) in {forumName}").format(
author=post["createdBy"]["name"], url=settings["fandom_discussions"]["wiki_url"],
creatorId=post["creatorId"], title=post["title"], threadId=post["threadId"], forumName=post["forumName"])
send_to_discord(DiscordMessage("compact", "discussion", settings["fandom_discussions"]["webhookURL"][int(post["id"]) % len(settings["fandom_discussions"]["webhookURL"])], content=message)) send_to_discord(DiscordMessage("compact", "discussion", settings["fandom_discussions"]["webhookURL"][int(post["id"]) % len(settings["fandom_discussions"]["webhookURL"])], content=message))
def embed_formatter(post_type, post):
"""Embed formatter for Fandom discussions."""
embed = DiscordMessage("embed", "discussion", settings["fandom_discussions"]["webhookURL"][int(post["id"]) % len(settings["fandom_discussions"]["webhookURL"])])
if post_type == "FORUM":
embed.set_author(post["createdBy"]["name"], "{url}f/u/{creatorId}".format(url=settings["fandom_discussions"]["wiki_url"], creatorId=post["creatorId"]), icon_url=post["createdBy"]["avatarUrl"])
elif post["creatorIp"]:
embed.set_author(post["creatorIp"][1:], "{url}wiki/Special:Contributions{creatorIp}".format(url=settings["fandom_discussions"]["wiki_url"], creatorIp=post["creatorIp"]))
else:
embed.set_author(post["createdBy"]["name"], "{url}wiki/User:{creator}".format(url=settings["fandom_discussions"]["wiki_url"], creator=post["createdBy"]["name"]), icon_url=post["createdBy"]["avatarUrl"])
if settings["fandom_discussions"]["appearance"]["embed"]["show_content"]:
if post.get("jsonModel") is not None:
npost = DiscussionsFromHellParser(post)
embed["description"] = npost.parse()
if npost.image_last:
embed["image"]["url"] = npost.image_last
embed["description"] = embed["description"].replace(npost.image_last, "")
else: # Fallback when model is not available
embed["description"] = post.get("rawContent", "")
embed["footer"]["text"] = post["forumName"]
embed["timestamp"] = datetime.datetime.fromtimestamp(post["creationDate"]["epochSecond"], tz=datetime.timezone.utc).isoformat()
if post_type == "FORUM":
if not post["isReply"]:
embed["url"] = "{url}f/p/{threadId}".format(url=settings["fandom_discussions"]["wiki_url"], threadId=post["threadId"])
embed["title"] = _("Created \"{title}\"").format(title=post["title"])
thread_funnel = post.get("funnel")
if thread_funnel == "POLL":
embed.event_type = "discussion/forum/poll"
poll = post["poll"]
embed["title"] = _("Created a poll \"{title}\"").format(title=poll["question"])
image_type = False
if poll["answers"][0]["image"] is not None:
image_type = True
for num, option in enumerate(poll["answers"]):
embed.add_field(option["text"] if image_type is True else _("Option {}").format(num+1),
option["text"] if image_type is False else _("__[View image]({image_url})__").format(image_url=option["image"]["url"]),
inline=True)
elif thread_funnel == "TEXT":
embed.event_type = "discussion/forum/post"
else:
discussion_logger.warning("The type of {} is an unknown discussion post type. Please post an issue on the project page to have it added https://gitlab.com/piotrex43/RcGcDw/-/issues.".format(thread_funnel))
else:
embed.event_type = "discussion/forum/reply"
embed["title"] = _("Replied to \"{title}\"").format(title=post["_embedded"]["thread"][0]["title"])
embed["url"] = "{url}f/p/{threadId}/r/{postId}".format(url=settings["fandom_discussions"]["wiki_url"], threadId=post["threadId"], postId=post["id"])
elif post_type == "WALL":
user_wall = _("unknown") # Fail safe
if post["forumName"].endswith(' Message Wall'):
user_wall = post["forumName"][:-13]
if not post["isReply"]:
embed.event_type = "discussion/wall/post"
embed["url"] = "{url}wiki/Message_Wall:{user_wall}?threadId={threadId}".format(url=settings["fandom_discussions"]["wiki_url"], user_wall=quote_plus(user_wall.replace(" ", "_")), threadId=post["threadId"])
embed["title"] = _("Created \"{title}\" on {user}'s Message Wall").format(title=post["title"], user=user_wall)
else:
embed.event_type = "discussion/wall/reply"
embed["url"] = "{url}wiki/Message_Wall:{user_wall}?threadId={threadId}#{replyId}".format(url=settings["fandom_discussions"]["wiki_url"], user_wall=quote_plus(user_wall.replace(" ", "_")), threadId=post["threadId"], replyId=post["id"])
embed["title"] = _("Replied to \"{title}\" on {user}'s Message Wall").format(title=post["_embedded"]["thread"][0]["title"], user=user_wall)
elif post_type == "ARTICLE_COMMENT":
discussion_logger.warning("Article comments are not yet implemented. For reasons see https://gitlab.com/piotrex43/RcGcDw/-/issues/126#note_366480037")
article_page = _("unknown") # No page known
if not post["isReply"]:
embed.event_type = "discussion/comment/post"
# embed["url"] = "{url}wiki/{article}?commentId={commentId}".format(url=settings["fandom_discussions"]["wiki_url"], article=quote_plus(article_page.replace(" ", "_")), commentId=post["threadId"])
embed["title"] = _("Commented on {article}").format(article=article_page)
else:
embed.event_type = "discussion/comment/reply"
# embed["url"] = "{url}wiki/{article}?commentId={commentId}&replyId={replyId}".format(url=settings["fandom_discussions"]["wiki_url"], article=quote_plus(article_page.replace(" ", "_")), commentId=post["threadId"], replyId=post["id"])
embed["title"] = _("Replied to a comment on {article}").format(article=article_page)
embed["footer"]["text"] = article_page
else:
discussion_logger.warning("The type of {} is an unknown discussion post type. Please post an issue on the project page to have it added https://gitlab.com/piotrex43/RcGcDw/-/issues.".format(post_type))
embed.finish_embed()
send_to_discord(embed)
class DiscussionsFromHellParser: class DiscussionsFromHellParser:
"""This class converts fairly convoluted Fandom jsonModal of a discussion post into Markdown formatted usable thing. Takes string, returns string. """This class converts fairly convoluted Fandom jsonModal of a discussion post into Markdown formatted usable thing. Takes string, returns string.
Kudos to MarkusRost for allowing me to implement this formatter based on his code in Wiki-Bot.""" Kudos to MarkusRost for allowing me to implement this formatter based on his code in Wiki-Bot."""

View file

@ -22,11 +22,11 @@ from src.configloader import settings
from src.discussion_formatters import embed_formatter, compact_formatter from src.discussion_formatters import embed_formatter, compact_formatter
from src.misc import datafile, messagequeue from src.misc import datafile, messagequeue
from src.session import session from src.session import session
from src.i18n import disc
# Initialize translation # Initialize translation
t = gettext.translation('discussions', localedir='locale', languages=[settings["lang"]]) _ = disc.gettext
_ = t.gettext
# Create a custom logger # Create a custom logger
@ -67,13 +67,8 @@ def fetch_discussions():
def parse_discussion_post(post): def parse_discussion_post(post):
"""Initial post recognition & handling""" """Initial post recognition & handling"""
post_type = post.get("funnel", "TEXT") post_type = post["_embedded"]["thread"][0]["containerType"]
if post_type == "TEXT": formatter(post_type, post)
formatter(post, post_type)
elif post_type == "POLL":
formatter(post, post_type)
else:
discussion_logger.warning("The type of {} is an unknown discussion post type. Please post an issue on the project page to have it added https://gitlab.com/piotrex43/RcGcDw/-/issues.")
def safe_request(url): def safe_request(url):

View file

@ -5,8 +5,12 @@ logger = logging.getLogger("rcgcdw.i18n")
# Setup translation # Setup translation
try: try:
lang = gettext.translation('rcgcdw', localedir='locale', languages=[settings["lang"]]) if settings["lang"] != "en":
disc = gettext.translation('discussions', localedir='locale', languages=[settings["lang"]]) lang = gettext.translation('rcgcdw', localedir='locale', languages=[settings["lang"]])
disc = gettext.translation('discussions', localedir='locale', languages=[settings["lang"]])
misc = gettext.translation('misc', localedir='locale', languages=[settings["lang"]])
else:
lang, disc, misc = gettext.NullTranslations(), gettext.NullTranslations(), gettext.NullTranslations()
except FileNotFoundError: except FileNotFoundError:
logger.critical("No language files have been found. Make sure locale folder is located in the directory.") logger.critical("No language files have been found. Make sure locale folder is located in the directory.")
sys.exit(1) sys.exit(1)

View file

@ -22,12 +22,9 @@ from urllib.parse import urlparse, urlunparse
import requests import requests
from collections import defaultdict from collections import defaultdict
from src.configloader import settings from src.configloader import settings
import gettext from src.i18n import misc
# Initialize translation _ = misc.gettext
t = gettext.translation('misc', localedir='locale', languages=[settings["lang"]])
_ = t.gettext
# Create a custom logger # Create a custom logger