From 1ce749376fda176bd10eb26bb2dbfc8f29307a5c Mon Sep 17 00:00:00 2001 From: dmoj-build Date: Sat, 26 Mar 2022 00:42:37 +0000 Subject: [PATCH] i18n: update translations from Crowdin --- locale/ar/LC_MESSAGES/django.po | 1639 ++++---- locale/de/LC_MESSAGES/django.po | 1639 ++++---- locale/el/LC_MESSAGES/django.po | 5589 ++++++++++++++++++++++++++ locale/el/LC_MESSAGES/djangojs.po | 31 + locale/en/LC_MESSAGES/django.po | 1668 ++++---- locale/fr/LC_MESSAGES/django.po | 1655 ++++---- locale/hr/LC_MESSAGES/django.po | 1639 ++++---- locale/it/LC_MESSAGES/django.po | 1639 ++++---- locale/ko/LC_MESSAGES/django.po | 2775 +++++++------ locale/lt/LC_MESSAGES/django.po | 1639 ++++---- locale/nl/LC_MESSAGES/django.po | 1639 ++++---- locale/pl/LC_MESSAGES/django.po | 1639 ++++---- locale/pt/LC_MESSAGES/django.po | 1639 ++++---- locale/ru/LC_MESSAGES/django.po | 1643 ++++---- locale/sr_Latn/LC_MESSAGES/django.po | 1649 ++++---- locale/zh_Hans/LC_MESSAGES/django.po | 1710 ++++---- 16 files changed, 19340 insertions(+), 10492 deletions(-) create mode 100644 locale/el/LC_MESSAGES/django.po create mode 100644 locale/el/LC_MESSAGES/djangojs.po diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index f92a33417c..fa9264b375 100644 --- a/locale/ar/LC_MESSAGES/django.po +++ b/locale/ar/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:29\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:41\n" "Last-Translator: \n" "Language-Team: Arabic, Saudi Arabia\n" "Language: ar_SA\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "الألمانية" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "الانجليزية" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "الإسبانية" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "الفرنسية" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "الكرواتية" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "الهنغارية" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "يابانية" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "الكورية" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "" @@ -127,42 +127,42 @@ msgstr "" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -173,11 +173,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -188,11 +188,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -203,11 +203,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -218,11 +218,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -233,7 +233,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -244,15 +244,15 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -268,17 +268,17 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -295,9 +295,9 @@ msgstr "" msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -306,8 +306,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "" @@ -369,10 +369,10 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "" @@ -425,42 +425,52 @@ msgstr "" msgid "Capabilities" msgstr "" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -471,34 +481,34 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "" @@ -526,7 +536,7 @@ msgstr "" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -652,7 +662,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -720,7 +730,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -728,7 +738,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -751,6 +761,10 @@ msgstr "" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" @@ -812,7 +826,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -853,463 +867,532 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1349,7 +1432,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1357,7 +1440,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1385,11 +1468,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1410,7 +1497,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1422,7 +1509,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1442,7 +1529,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1471,252 +1558,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1828,289 +1915,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2258,6 +2398,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2266,210 +2410,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2525,16 +2669,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2543,11 +2715,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2616,12 +2788,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2680,11 +2852,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2692,130 +2868,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2844,71 +3019,81 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2919,7 +3104,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2930,95 +3115,105 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -3035,27 +3230,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3065,17 +3255,17 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." @@ -3086,36 +3276,21 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3149,84 +3324,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3251,30 +3429,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3283,27 +3461,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3325,49 +3503,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3423,36 +3601,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3529,7 +3710,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3542,7 +3723,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3563,43 +3744,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3675,12 +3856,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3688,8 +3873,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3714,7 +3898,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3722,15 +3906,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3742,21 +3931,7 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." @@ -3767,7 +3942,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." @@ -3778,49 +3953,49 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." @@ -3831,70 +4006,75 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3906,44 +4086,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3959,6 +4139,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3983,14 +4168,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "" @@ -4115,46 +4312,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4203,11 +4412,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4283,7 +4496,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4295,11 +4508,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4317,16 +4534,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4540,28 +4757,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4570,11 +4791,10 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -4585,11 +4805,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4624,7 +4844,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4808,6 +5028,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4834,7 +5063,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4878,7 +5107,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -5017,7 +5246,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -5061,11 +5290,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -5074,14 +5303,18 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5091,14 +5324,19 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -5107,31 +5345,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5265,19 +5503,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 6168d0dae7..bb90c9388e 100644 --- a/locale/de/LC_MESSAGES/django.po +++ b/locale/de/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:29\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "Deutsch" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "Englisch" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "Französisch" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "Rumänisch" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "Russisch" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "Chinesisch (vereinfacht)" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "" @@ -119,108 +119,108 @@ msgstr "" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -236,17 +236,17 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -263,9 +263,9 @@ msgstr "" msgid "Taxonomy" msgstr "Systematik" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -274,8 +274,8 @@ msgstr "" msgid "Limits" msgstr "Grenzen" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "Programmiersprache" @@ -325,10 +325,10 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "" @@ -377,76 +377,86 @@ msgstr "" msgid "Capabilities" msgstr "" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "Nicht" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "" @@ -474,7 +484,7 @@ msgstr "" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -592,7 +602,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -660,7 +670,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -668,7 +678,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -691,6 +701,10 @@ msgstr "" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" @@ -752,7 +766,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -793,463 +807,532 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1289,7 +1372,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1297,7 +1380,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1325,11 +1408,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1350,7 +1437,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1362,7 +1449,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1382,7 +1469,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1411,252 +1498,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1768,289 +1855,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2198,6 +2338,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2206,210 +2350,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2465,16 +2609,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2483,11 +2655,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2556,12 +2728,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2608,11 +2780,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2620,130 +2796,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2772,173 +2947,193 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2955,27 +3150,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -2985,53 +3175,38 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3065,84 +3240,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3167,30 +3345,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3199,27 +3377,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3241,49 +3419,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3339,36 +3517,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3445,7 +3626,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3458,7 +3639,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3479,43 +3660,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3591,12 +3772,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3604,8 +3789,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3630,7 +3814,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3638,15 +3822,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3658,147 +3847,138 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3810,44 +3990,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3863,6 +4043,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3887,14 +4072,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "" @@ -4019,46 +4216,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4107,11 +4316,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4187,7 +4400,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4199,11 +4412,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4217,16 +4434,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4428,28 +4645,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4458,22 +4679,21 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4508,7 +4728,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4692,6 +4912,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4718,7 +4947,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4762,7 +4991,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4901,7 +5130,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4945,11 +5174,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -4958,27 +5187,36 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -4987,31 +5225,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5145,19 +5383,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/el/LC_MESSAGES/django.po b/locale/el/LC_MESSAGES/django.po new file mode 100644 index 0000000000..ca79848f41 --- /dev/null +++ b/locale/el/LC_MESSAGES/django.po @@ -0,0 +1,5589 @@ +msgid "" +msgstr "" +"Project-Id-Version: dmoj\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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-Crowdin-Project: dmoj\n" +"X-Crowdin-Project-ID: 142963\n" +"X-Crowdin-Language: el\n" +"X-Crowdin-File: django.po\n" +"X-Crowdin-File-ID: 10\n" + +#: dmoj/settings.py:372 +msgid "Catalan" +msgstr "Καταλανικά" + +#: dmoj/settings.py:373 +msgid "German" +msgstr "Γερμανικά" + +#: dmoj/settings.py:374 +msgid "English" +msgstr "Αγγλικά" + +#: dmoj/settings.py:375 +msgid "Spanish" +msgstr "Ισπανικά" + +#: dmoj/settings.py:376 +msgid "French" +msgstr "Γαλλικά" + +#: dmoj/settings.py:377 +msgid "Croatian" +msgstr "Κροάτικα" + +#: dmoj/settings.py:378 +msgid "Hungarian" +msgstr "Ουγγρικά" + +#: dmoj/settings.py:379 +msgid "Japanese" +msgstr "Ιαπωνικά" + +#: dmoj/settings.py:380 +msgid "Korean" +msgstr "Κορεατικά" + +#: dmoj/settings.py:381 +msgid "Brazilian Portuguese" +msgstr "Πορτογαλικά Βραζιλίας" + +#: dmoj/settings.py:382 +msgid "Romanian" +msgstr "Ρουμανικά" + +#: dmoj/settings.py:383 +msgid "Russian" +msgstr "Ρωσικά" + +#: dmoj/settings.py:384 +msgid "Serbian (Latin)" +msgstr "Σερβικά (Λατινικά)" + +#: dmoj/settings.py:385 +msgid "Turkish" +msgstr "Τουρκικά" + +#: dmoj/settings.py:386 +msgid "Vietnamese" +msgstr "Βιετναμέζικα" + +#: dmoj/settings.py:387 +msgid "Simplified Chinese" +msgstr "Απλοποιημένα Κινέζικα" + +#: dmoj/settings.py:388 +msgid "Traditional Chinese" +msgstr "Παραδοσιακά Κινέζικα" + +#: dmoj/urls.py:103 templates/base.html:190 +msgid "Home" +msgstr "Αρχική" + +#: judge/admin/comments.py:40 +#, python-format +msgid "%d comment successfully hidden." +msgid_plural "%d comments successfully hidden." +msgstr[0] "%d σχόλιο αποκρύφθηκε επιτυχώς." +msgstr[1] "%d σχόλια αποκρύφθηκαν επιτυχώς." + +#: judge/admin/comments.py:43 +msgid "Hide comments" +msgstr "Απόκρυψη σχολίων" + +#: judge/admin/comments.py:47 +#, python-format +msgid "%d comment successfully unhidden." +msgid_plural "%d comments successfully unhidden." +msgstr[0] "%d σχόλιο επανεμφανίστηκε επιτυχώς." +msgstr[1] "%d σχόλια επανεμφανίστηκαν επιτυχώς." + +#: judge/admin/comments.py:50 +msgid "Unhide comments" +msgstr "Επανεμφάνιση σχολίων" + +#: judge/admin/comments.py:58 +msgid "Associated page" +msgstr "Συσχετιζόμενη σελίδα" + +#: judge/admin/contest.py:32 +msgid "Included contests" +msgstr "Συμπεριλαμβανόμενοι διαγωνισμοί" + +#: judge/admin/contest.py:66 templates/contest/contest.html:195 +#: templates/contest/moss.html:43 templates/problem/list.html:204 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 +#: templates/user/user-problems.html:100 +msgid "Problem" +msgstr "Πρόβλημα" + +#: judge/admin/contest.py:123 +msgid "Settings" +msgstr "Ρυθμίσεις" + +#: judge/admin/contest.py:126 +msgid "Scheduling" +msgstr "Χρονοδρομολόγηση" + +#: judge/admin/contest.py:127 +msgid "Details" +msgstr "Λεπτομέρειες" + +#: judge/admin/contest.py:128 +msgid "Format" +msgstr "Μορφή" + +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 +msgid "Rating" +msgstr "Αξιολόγηση" + +#: judge/admin/contest.py:130 +msgid "Access" +msgstr "Πρόσβαση" + +#: judge/admin/contest.py:132 judge/admin/problem.py:135 +msgid "Justice" +msgstr "Δικαιοσύνη" + +#: judge/admin/contest.py:230 +#, python-format +msgid "%d contest successfully marked as visible." +msgid_plural "%d contests successfully marked as visible." +msgstr[0] "%d διαγωνισμός επισημάνθηκε επιτυχώς ως ορατός." +msgstr[1] "%d διαγωνισμοί επισημάνθηκαν επιτυχώς ως ορατοί." + +#: judge/admin/contest.py:233 +msgid "Mark contests as visible" +msgstr "Σήμανση διαγωνισμών ως ορατών" + +#: judge/admin/contest.py:239 +#, python-format +msgid "%d contest successfully marked as hidden." +msgid_plural "%d contests successfully marked as hidden." +msgstr[0] "%d διαγωνισμός επισημάνθηκε επιτυχώς ως κρυφός." +msgstr[1] "%d διαγωνισμοί επισημάνθηκαν επιτυχώς ως κρυφοί." + +#: judge/admin/contest.py:242 +msgid "Mark contests as hidden" +msgstr "Σήμανση διαγωνισμών ως κρυφών" + +#: judge/admin/contest.py:248 +#, python-format +msgid "%d contest successfully locked." +msgid_plural "%d contests successfully locked." +msgstr[0] "%d διαγωνισμός κλειδώθηκε επιτυχώς" +msgstr[1] "%d διαγωνισμοί κλειδώθηκαν επιτυχώς" + +#: judge/admin/contest.py:251 +msgid "Lock contest submissions" +msgstr "Κλείδωμα υποβολής διαγωνισμών" + +#: judge/admin/contest.py:257 +#, python-format +msgid "%d contest successfully unlocked." +msgid_plural "%d contests successfully unlocked." +msgstr[0] "%d διαγωνισμός ξεκλειδώθηκε επιτυχώς" +msgstr[1] "%d διαγωνισμοί ξεκλειδώθηκαν επιτυχώς" + +#: judge/admin/contest.py:260 +msgid "Unlock contest submissions" +msgstr "Ξεκλείδωμα υποβολής διαγωνισμών" + +#: judge/admin/contest.py:281 judge/admin/submission.py:175 +#, python-format +msgid "%d submission was successfully scheduled for rejudging." +msgid_plural "%d submissions were successfully scheduled for rejudging." +msgstr[0] "%d υποβολή προγραμματίστηκε επιτυχώς για επανεξέταση." +msgstr[1] "%d υποβολές προγραμματίστηκαν επιτυχώς για επανεξέταση." + +#: judge/admin/contest.py:357 +#, python-format +msgid "%d participation recalculated." +msgid_plural "%d participations recalculated." +msgstr[0] "%d συμμετοχή επανυπολογίστηκε." +msgstr[1] "%d συμμετοχές επανυπολογίστηκαν." + +#: judge/admin/contest.py:360 +msgid "Recalculate results" +msgstr "Επανυπολογισμός αποτελεσμάτων" + +#: judge/admin/contest.py:364 judge/admin/organization.py:113 +msgid "username" +msgstr "όνομα χρήστη" + +#: judge/admin/contest.py:369 templates/base.html:256 +msgid "virtual" +msgstr "εικονικό" + +#: judge/admin/interface.py:29 judge/models/interface.py:46 +msgid "link path" +msgstr "διαδρομή συνδέσμου" + +#: judge/admin/interface.py:72 +msgid "Content" +msgstr "Περιεχόμενο" + +#: judge/admin/interface.py:73 +msgid "Summary" +msgstr "Περίληψη" + +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 +msgid "user" +msgstr "χρήστης" + +#: judge/admin/interface.py:165 +msgid "object" +msgstr "αντικείμενο" + +#: judge/admin/organization.py:82 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 +msgid "View on site" +msgstr "Προβολή στην ιστοσελίδα" + +#: judge/admin/problem.py:29 +msgid "Describe the changes you made (optional)" +msgstr "Περιγράψτε τις αλλαγές που κάνατε (προαιρετικό)" + +#: judge/admin/problem.py:130 +msgid "Social Media" +msgstr "Κοινωνικά δίκτυα" + +#: judge/admin/problem.py:131 +msgid "Taxonomy" +msgstr "Ταξινομία" + +#: judge/admin/problem.py:132 templates/contest/contest.html:196 +#: templates/problem/data.html:385 templates/problem/list.html:209 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 +#: templates/user/user-problems.html:60 +msgid "Points" +msgstr "Πόντοι" + +#: judge/admin/problem.py:133 +msgid "Limits" +msgstr "Όρια" + +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 +msgid "Language" +msgstr "Γλώσσα" + +#: judge/admin/problem.py:136 +msgid "History" +msgstr "Ιστορικό" + +#: judge/admin/problem.py:179 +msgid "Authors" +msgstr "Συγγραφείς" + +#: judge/admin/problem.py:192 +#, python-format +msgid "%d problem's publish date successfully updated." +msgid_plural "%d problems' publish date successfully updated." +msgstr[0] "η ημερομηνία δημοσίευσης %d του προβλήματος ενημερώθηκε επιτυχώς." +msgstr[1] "η ημερομηνία δημοσίευσης %d των προβλημάτων ενημερώθηκε επιτυχώς." + +#: judge/admin/problem.py:196 +msgid "Set publish date to now" +msgstr "Ορισμός ημερομηνίας δημοσίευσης ως τώρα" + +#: judge/admin/problem.py:202 +#, python-format +msgid "%d problem successfully marked as public." +msgid_plural "%d problems successfully marked as public." +msgstr[0] "%d πρόβλημα επισημάνθηκε επιτυχώς ως δημόσιο." +msgstr[1] "%d προβλήματα επισημάνθηκαν επιτυχώς ως δημόσια." + +#: judge/admin/problem.py:206 +msgid "Mark problems as public" +msgstr "Επισήμανση προβλημάτων ως δημόσια" + +#: judge/admin/problem.py:212 +#, python-format +msgid "%d problem successfully marked as private." +msgid_plural "%d problems successfully marked as private." +msgstr[0] "%d πρόβλημα επισημάνθηκε επιτυχώς ως ιδιωτικό." +msgstr[1] "%d προβλήματα επισημάνθηκαν επιτυχώς ως απόρρητα." + +#: judge/admin/problem.py:216 +msgid "Mark problems as private" +msgstr "Επισήμανση προβλημάτων ως ιδιωτικό" + +#: judge/admin/profile.py:35 +msgid "timezone" +msgstr "Ζώνη ώρας:" + +#: judge/admin/profile.py:98 judge/admin/submission.py:222 +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:266 +msgid "User" +msgstr "Χρήστης" + +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 +msgid "Email" +msgstr "Email" + +#: judge/admin/profile.py:108 judge/views/register.py:28 +#: templates/registration/registration_form.html:171 +#: templates/user/edit-profile.html:292 +msgid "Timezone" +msgstr "Ζώνη ώρας:" + +#: judge/admin/profile.py:113 +msgid "date joined" +msgstr "ημερ/νία εγγραφής" + +#: judge/admin/profile.py:120 +#, python-format +msgid "%d user have scores recalculated." +msgid_plural "%d users have scores recalculated." +msgstr[0] "%d χρήστης επανυπολογίζει τη βαθμολογία του" +msgstr[1] "%d χρήστες επανυπολογίζουν τη βαθμολογία τους" + +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Επαναϋπολογισμός βαθμολογίας" + +#: judge/admin/runtime.py:19 +msgid "Disallowed problems" +msgstr "Μη έγκυρα προβλήματα" + +#: judge/admin/runtime.py:22 +msgid "These problems are NOT allowed to be submitted in this language" +msgstr "Τα προβλήματα αυτά ΔΕΝ επιτρέπεται να υποβληθούν σε αυτή τη γλώσσα" + +#: judge/admin/runtime.py:77 +msgid "Description" +msgstr "Περιγραφή" + +#: judge/admin/runtime.py:78 +msgid "Information" +msgstr "Πληροφορίες" + +#: judge/admin/runtime.py:79 +msgid "Capabilities" +msgstr "Δυνατότητες" + +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 +msgid "None" +msgstr "Κανένα" + +#: judge/admin/submission.py:24 +msgid "Not done" +msgstr "Δεν ελέγχθηκε" + +#: judge/admin/submission.py:24 +msgid "Exceptional" +msgstr "Εξαίρεση." + +#: judge/admin/submission.py:43 +msgid "Unaccepted" +msgstr "Μη Αποδεκτά" + +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "%s (παρακολουθεί)" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "%s (εικονικό %d)" + +#: judge/admin/submission.py:94 +#, python-format +msgctxt "contest problem" +msgid "%(problem)s in %(contest)s" +msgstr "%(problem)s σε %(contest)s" + +#: judge/admin/submission.py:160 judge/admin/submission.py:182 +msgid "You do not have the permission to rejudge submissions." +msgstr "Δεν έχετε την άδεια να επανεξετάσετε υποβολές." + +#: judge/admin/submission.py:166 +msgid "You do not have the permission to rejudge THAT many submissions." +msgstr "Δεν έχετε την άδεια να επανεξετάσετε ΤΟΣΕΣ πολλές υποβολές." + +#: judge/admin/submission.py:178 +msgid "Rejudge the selected submissions" +msgstr "Επανεξέταση των επιλεγμένων υποβολών" + +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#, python-format +msgid "%d submission were successfully rescored." +msgid_plural "%d submissions were successfully rescored." +msgstr[0] "%d υποβολή αναβαθμολογήθηκε επιτυχώς." +msgstr[1] "%d υποβολές αναβαθμολογήθηκαν επιτυχώς." + +#: judge/admin/submission.py:207 +msgid "Rescore the selected submissions" +msgstr "Αναβαθμολόγηση των επιλεγμένων υποβολών" + +#: judge/admin/submission.py:211 +msgid "Problem code" +msgstr "Κωδικός προβλήματος" + +#: judge/admin/submission.py:216 +msgid "Problem name" +msgstr "Όνομα προβλήματος" + +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Ώρα" + +#: judge/admin/submission.py:234 +#, python-format +msgid "%d KB" +msgstr "%d KB" + +#: judge/admin/submission.py:236 +#, python-format +msgid "%.2f MB" +msgstr "%.2f MB" + +#: judge/admin/submission.py:238 +msgid "Memory" +msgstr "Μνήμη" + +#: judge/admin/taxon.py:11 judge/admin/taxon.py:34 +msgid "Included problems" +msgstr "Συμπεριλαμβανόμενα προβλήματα" + +#: judge/admin/taxon.py:14 +msgid "These problems are included in this group of problems" +msgstr "Αυτά τα προβλήματα περιλαμβάνονται σε αυτήν την ομάδα προβλημάτων" + +#: judge/admin/taxon.py:37 +msgid "These problems are included in this type of problems" +msgstr "Τα προβλήματα αυτά περιλαμβάνονται σε αυτού του τύπου τα προβλήματα" + +#: judge/apps.py:8 +msgid "Online Judge" +msgstr "Διαδικτυακός Κριτής" + +#: judge/comments.py:41 +msgid "Comment body" +msgstr "Σώμα σχολίου" + +#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +msgid "Your part is silent, little toad." +msgstr "Το κομμάτι σου είναι σιωπηλό, μικρέ βάτραχε." + +#: judge/comments.py:49 templates/comments/list.html:140 +msgid "You need to have solved at least one problem before your voice can be heard." +msgstr "Πρέπει να έχετε λύσει τουλάχιστον ένα πρόβλημα πριν ακουστεί η φωνή σας." + +#: judge/comments.py:93 +msgid "Posted comment" +msgstr "Αναρτημένο σχόλιο" + +#: judge/contest_format/atcoder.py:19 +msgid "AtCoder" +msgstr "AtCoder" + +#: judge/contest_format/atcoder.py:117 judge/contest_format/default.py:79 +#: judge/contest_format/icpc.py:127 judge/contest_format/legacy_ioi.py:97 +msgid "The maximum score submission for each problem will be used." +msgstr "Θα χρησιμοποιηθεί η υποβολή με τη μέγιστη βαθμολογία για κάθε πρόβλημα." + +#: judge/contest_format/atcoder.py:122 judge/contest_format/icpc.py:132 +#, python-format +msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." +msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." +msgstr[0] "Κάθε υποβολή πριν από την πρώτη με μέγιστη βαθμολογία θα γίνει με **ποινή %d λεπτού**." +msgstr[1] "Κάθε υποβολή πριν από την πρώτη με μέγιστη βαθμολογία θα γίνει με **ποινή %d λεπτών**." + +#: judge/contest_format/atcoder.py:127 +msgid "Ties will be broken by the last score altering submission time." +msgstr "Ισοπαλίες θα σπάνε από το χρόνο της τελευταίας υποβολής που αλλάζει τη βαθμολογία" + +#: judge/contest_format/default.py:18 +msgid "Default" +msgstr "Προεπιλογή" + +#: judge/contest_format/default.py:80 +msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." +msgstr "Ισοπαλίες θα σπάνε από το σύνολο χρόνων τελευταίων υποβολών σε προβλήματα με μη μηδενική βαθμολογία." + +#: judge/contest_format/ecoo.py:18 +msgid "ECOO" +msgstr "ECOO" + +#: judge/contest_format/ecoo.py:130 +msgid "The score on your **last** non-CE submission for each problem will be used." +msgstr "Θα χρησιμοποιηθεί η βαθμολογία της **τελευταίας** μη-CE υποβολής για κάθε πρόβλημα." + +#: judge/contest_format/ecoo.py:135 +#, python-format +msgid "There is a **%d bonus** for fully solving on your first non-CE submission." +msgstr "Υπάρχει ένα **%d μπόνους** για την πλήρη επίλυση της πρώτης μη-CE υποβολής." + +#: judge/contest_format/ecoo.py:141 +#, python-format +msgid "For every **%d minute** you submit before the end of your window, there will be a **1** point bonus." +msgid_plural "For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus." +msgstr[0] "Για κάθε **%d λεπτό** πριν από το τέλος του χρονικού παραθύρου σας που υποβάλλετε, θα υπάρχει **1** μπόνους πόντος." +msgstr[1] "Για κάθε **%d λεπτά** πριν από το τέλος του χρονικού παραθύρου σας που υποβάλλετε, θα υπάρχει **1** μπόνους πόντος." + +#: judge/contest_format/ecoo.py:147 +msgid "Ties will be broken by the sum of the last submission time on **all** problems." +msgstr "Ισοπαλίες θα σπάνε από το σύνολο χρόνων τελευταίων υποβολών σε όλα τα προβλήματα." + +#: judge/contest_format/ecoo.py:149 judge/contest_format/ioi.py:102 +#: judge/contest_format/legacy_ioi.py:103 +msgid "Ties by score will **not** be broken." +msgstr "Ισοπαλίες από βαθμολογία **δε** θα σπάνε." + +#: judge/contest_format/icpc.py:19 +msgid "ICPC" +msgstr "ICPC" + +#: judge/contest_format/icpc.py:137 +msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score, followed by the time of the last score altering submission." +msgstr "Ισοπαλίες θα σπάνε από το σύνολο χρόνων τελευταίων υποβολών που μεταβάλλουν τη βαθμολογία σε προβλήματα με μη μηδενική βαθμολογία, ακολουθούμενα από το χρόνο της τελευταίας υποβολής που μεταβάλλει τη βαθμολογία." + +#: judge/contest_format/ioi.py:11 +msgid "IOI" +msgstr "IOI" + +#: judge/contest_format/ioi.py:96 +msgid "The maximum score for each problem batch will be used." +msgstr "Θα χρησιμοποιηθεί η μέγιστη βαθμολογία για κάθε δεσμίδα προβλήματος." + +#: judge/contest_format/ioi.py:99 judge/contest_format/legacy_ioi.py:100 +msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score." +msgstr "Ισοπαλίες θα σπάνε από το σύνολο χρόνων τελευταίων υποβολών που μεταβάλλουν τη βαθμολογία σε προβλήματα με μη μηδενική βαθμολογία." + +#: judge/contest_format/legacy_ioi.py:18 +msgid "IOI (pre-2016)" +msgstr "IOI (προ του 2016)" + +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "Τα διακριτικά ελέγχου ταυτότητας δύο παραγόντων πρέπει να είναι {TOTP_CODE_LENGTH} δεκαδικά ψηφία." + +#: judge/forms.py:30 +msgid "Invalid two-factor authentication token." +msgstr "Μη έγκυρο διακριτικό ελέγχου ταυτότητας δύο παραγόντων." + +#: judge/forms.py:33 +msgid "Scratch codes must be 16 base32 characters." +msgstr "Οι κωδικοί scratch πρέπει να είναι 16 χαρακτήρες βάσης 32 ." + +#: judge/forms.py:35 judge/forms.py:264 +msgid "Invalid scratch code." +msgstr "Μη έγκυρος κωδικός scratch." + +#: judge/forms.py:46 +msgid "Subscribe to contest updates" +msgstr "Εγγραφείτε σε ενημερώσεις διαγωνισμού" + +#: judge/forms.py:47 +msgid "Enable experimental features" +msgstr "Ενεργοποίηση πειραματικών λειτουργιών" + +#: judge/forms.py:72 +msgid "You must solve at least one problem before you can update your profile." +msgstr "Πρέπει να λύσετε τουλάχιστον ένα πρόβλημα πριν να έχετε τη δυνατότητα να ενημερώσετε το προφίλ σας." + +#: judge/forms.py:81 judge/views/organization.py:147 +#, python-brace-format +msgid "You may not be part of more than {count} public organizations." +msgstr "Δεν μπορείτε να είστε μέλος σε περισσότερους από {count} δημόσιους οργανισμούς." + +#: judge/forms.py:97 +msgid "Download comments?" +msgstr "Λήψη σχολίων;" + +#: judge/forms.py:98 +msgid "Download submissions?" +msgstr "Λήψη υποβολών;" + +#: judge/forms.py:99 +msgid "Filter by problem code glob:" +msgstr "Φιλτράρισμα ανά glob κώδικα προγράμματος:" + +#: judge/forms.py:103 +msgid "Leave empty to include all submissions" +msgstr "Αφήστε κενό για να συμπεριλάβετε όλες τις υποβολές" + +#: judge/forms.py:106 templates/problem/manage_submission.html:142 +msgid "Filter by result:" +msgstr "Φιλτράρισμα κατά αποτέλεσμα:" + +#: judge/forms.py:112 +msgid "Please select at least one thing to download." +msgstr "Παρακαλώ επιλέξτε τουλάχιστον ένα πράγμα για λήψη." + +#: judge/forms.py:138 +msgid "Any judge" +msgstr "Οποιοσδήποτε κριτής" + +#: judge/forms.py:159 judge/views/register.py:25 +#: templates/registration/registration_form.html:137 +#: templates/user/base-users-table.html:5 +msgid "Username" +msgstr "Όνομα Χρήστη" + +#: judge/forms.py:160 templates/registration/registration_form.html:149 +#: templates/registration/registration_form.html:163 +msgid "Password" +msgstr "Κωδικόs πρόσβασης" + +#: judge/forms.py:192 +msgid "Invalid code length." +msgstr "Μη έγκυρο μήκος κωδικού." + +#: judge/forms.py:223 +msgid "Invalid WebAuthn response." +msgstr "Άκυρη WebAuthn απάντηση." + +#: judge/forms.py:226 +msgid "No WebAuthn challenge issued." +msgstr "Δεν υπάρχει πρόκληση WebAuthn." + +#: judge/forms.py:232 +msgid "Invalid WebAuthn credential ID." +msgstr "Μη έγκυρο αναγνωριστικό ID διαπιστευτηρίου WebAuthn." + +#: judge/forms.py:262 +msgid "Invalid two-factor authentication token or scratch code." +msgstr "Μη έγκυρο διακριτικό ελέγχου ταυτότητας δύο παραγόντων ή κωδικού scratch." + +#: judge/forms.py:266 +msgid "Must specify either totp_token or webauthn_response." +msgstr "Πρέπει να καθορίσετε είτε totp_token ή webauthn_response." + +#: judge/forms.py:270 judge/models/problem.py:120 +msgid "Problem code must be ^[a-z0-9]+$" +msgstr "Ο κωδικός προβλήματος πρέπει να είναι ^[a-z0-9]+$" + +#: judge/forms.py:275 +msgid "Problem with code already exists." +msgstr "Πρόβλημα με αυτόν τον κωδικό υπάρχει ήδη ." + +#: judge/forms.py:280 judge/models/contest.py:68 +msgid "Contest id must be ^[a-z0-9]+$" +msgstr "Το αναγνωριστικό του διαγωνισμού πρέπει να είναι ^[a-z0-9]+$" + +#: judge/forms.py:285 +msgid "Contest with key already exists." +msgstr "Διαγωνισμός με αυτό το κλειδί υπάρχει ήδη." + +#: judge/jinja2/datetime.py:26 templates/blog/content.html:27 +#: templates/blog/dashboard.html:21 +msgid "N j, Y, g:i a" +msgstr "N j, Y, g:i a" + +#: judge/jinja2/datetime.py:26 +#, python-brace-format +msgid "{time}" +msgstr "{time}" + +#: judge/jinja2/datetime.py:26 +#, python-brace-format +msgid "on {time}" +msgstr "στις {time}" + +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "Μη αξιολογημένο" + +#: judge/models/choices.py:59 +msgid "Leave as LaTeX" +msgstr "Αφήστε ως LaTeX" + +#: judge/models/choices.py:60 +msgid "SVG with PNG fallback" +msgstr "SVG με PNG εναλλακτική" + +#: judge/models/choices.py:61 +msgid "MathML only" +msgstr "MathML μόνο" + +#: judge/models/choices.py:62 +msgid "MathJax with SVG/PNG fallback" +msgstr "MathJax με SVG/PNG εναλλακτική" + +#: judge/models/choices.py:63 +msgid "Detect best quality" +msgstr "Ανίχνευση καλύτερης ποιότητας" + +#: judge/models/comment.py:25 +msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" +msgstr "Ο κωδικός σελίδας πρέπει να είναι ^[pcs]:[a-z0-9]+$^b:\\d+$" + +#: judge/models/comment.py:41 +msgid "commenter" +msgstr "σχολιαστής" + +#: judge/models/comment.py:42 +msgid "posted time" +msgstr "ώρα δημοσίευσης" + +#: judge/models/comment.py:43 judge/models/comment.py:196 +msgid "associated page" +msgstr "συσχετιζόμενη σελίδα" + +#: judge/models/comment.py:45 +msgid "votes" +msgstr "ψήφοι" + +#: judge/models/comment.py:46 +msgid "body of comment" +msgstr "σώμα σχολίου" + +#: judge/models/comment.py:47 +msgid "hide the comment" +msgstr "απόκρυψη σχολίου" + +#: judge/models/comment.py:48 +msgid "parent" +msgstr "γονέας" + +#: judge/models/comment.py:53 +msgid "comment" +msgstr "σχόλιο" + +#: judge/models/comment.py:54 +msgid "comments" +msgstr "σχόλια" + +#: judge/models/comment.py:89 judge/models/comment.py:141 +#: judge/models/problem.py:521 +#, python-format +msgid "Editorial for %s" +msgstr "Εξήγηση για %s" + +#: judge/models/comment.py:191 +msgid "comment vote" +msgstr "ψήφος σχολίου" + +#: judge/models/comment.py:192 +msgid "comment votes" +msgstr "ψήφοι σχολίου" + +#: judge/models/comment.py:201 +msgid "Override comment lock" +msgstr "Παράκαμψη κλειδώματος σχολίου" + +#: judge/models/contest.py:28 +msgid "Invalid colour." +msgstr "Μη έγκυρο χρώμα." + +#: judge/models/contest.py:30 +msgid "tag name" +msgstr "όνομα ετικέτας" + +#: judge/models/contest.py:31 +msgid "Lowercase letters and hyphens only." +msgstr "Μόνο πεζά γράμματα και παύλες." + +#: judge/models/contest.py:32 +msgid "tag colour" +msgstr "χρώμα ετικέτας" + +#: judge/models/contest.py:33 +msgid "tag description" +msgstr "περιγραφή ετικέτας" + +#: judge/models/contest.py:52 +msgid "contest tag" +msgstr "ετικέτα διαγωνισμού" + +#: judge/models/contest.py:53 judge/models/contest.py:150 +msgid "contest tags" +msgstr "ετικέτες διαγωνισμού" + +#: judge/models/contest.py:62 +msgid "Visible" +msgstr "Ορατό" + +#: judge/models/contest.py:63 +msgid "Hidden for duration of contest" +msgstr "Κρυφό για τη διάρκεια του διαγωνισμού" + +#: judge/models/contest.py:64 +msgid "Hidden for duration of participation" +msgstr "Κρυφό για τη διάρκεια της συμμετοχής" + +#: judge/models/contest.py:65 +msgid "Hidden permanently" +msgstr "Κρυφό μόνιμα" + +#: judge/models/contest.py:67 +msgid "contest id" +msgstr "αναγνωριστικό διαγωνισμού" + +#: judge/models/contest.py:69 +msgid "contest name" +msgstr "όνομα διαγωνισμού" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργαστούν το διαγωνισμό." + +#: judge/models/contest.py:72 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργαστούν το διαγωνισμό, αλλά δεν θα εμφανίζονται ως συγγραφείς." + +#: judge/models/contest.py:75 +msgid "These users will be able to view the contest, but not edit it." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να δουν το διαγωνισμό, αλλά όχι να τον επεξεργαστούν." + +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "δοκιμαστές βλέπουν πίνακα αποτελεσμάτων" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "Εάν οι δοκιμαστές μπορούν να δουν τον πίνακα αποτελεσμάτων." + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "δοκιμαστές βλέπουν υποβολές" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "Εάν οι δοκιμαστές μπορούν να δουν υποβολές εντός διαγωνισμού." + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να παρακολουθήσουν το διαγωνισμό, αλλά όχι να δουν τα προβλήματα εκ των προτέρων." + +#: judge/models/contest.py:85 judge/models/runtime.py:136 +msgid "description" +msgstr "περιγραφή" + +#: judge/models/contest.py:86 judge/models/problem.py:467 +#: judge/models/runtime.py:138 +msgid "problems" +msgstr "προβλήματα" + +#: judge/models/contest.py:87 judge/models/contest.py:489 +msgid "start time" +msgstr "ώρα έναρξης" + +#: judge/models/contest.py:88 +msgid "end time" +msgstr "ώρα λήξης" + +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 +msgid "time limit" +msgstr "χρονικό όριο" + +#: judge/models/contest.py:90 judge/models/problem.py:159 +msgid "publicly visible" +msgstr "δημόσια ορατό" + +#: judge/models/contest.py:91 +msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." +msgstr "Θα πρέπει να οριστεί ακόμη και για ιδιωτικών οργανισμών διαγωνισμούς, όπου καθορίζει αν ο διαγωνισμός είναι ορατός στα μέλη των συγκεκριμένων οργανισμών." + +#: judge/models/contest.py:94 +msgid "contest rated" +msgstr "αξιολογήσιμος διαγωνισμός" + +#: judge/models/contest.py:94 +msgid "Whether this contest can be rated." +msgstr "Εάν αυτός ο διαγωνισμός μπορεί να αξιολογηθεί." + +#: judge/models/contest.py:96 +msgid "view contest scoreboard" +msgstr "προβολή πίνακα αποτελεσμάτων διαγωνισμού" + +#: judge/models/contest.py:98 +msgid "These users will be able to view the scoreboard." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να δουν τον πίνακα αποτελεσμάτων." + +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "μπορεί να δει τις υποβολές διαγωνισμού" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να δουν υποβολές εντός διαγωνισμού." + +#: judge/models/contest.py:103 +msgid "scoreboard visibility" +msgstr "ορατότητα πίνακα αποτελεσμάτων" + +#: judge/models/contest.py:104 +msgid "Scoreboard visibility through the duration of the contest" +msgstr "Ορατότητα πίνακα αποτελεσμάτων κατά τη διάρκεια του διαγωνισμού" + +#: judge/models/contest.py:106 +msgid "no comments" +msgstr "χωρίς σχόλια" + +#: judge/models/contest.py:107 +msgid "Use clarification system instead of comments." +msgstr "Χρήση του συστήματος διευκρινήσεων αντί σχολίων" + +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "χαμηλότερη αξιολόγηση" + +#: judge/models/contest.py:109 +msgid "Rating floor for contest" +msgstr "Χαμηλότερη αξιολόγηση για το διαγωνισμό" + +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "ανώτατο όριο αξιολόγησης" + +#: judge/models/contest.py:111 +msgid "Rating ceiling for contest" +msgstr "Ανώτατο όριο αξιολόγησης για το διαγωνισμό" + +#: judge/models/contest.py:113 +msgid "rate all" +msgstr "αξιολόγηση όλων" + +#: judge/models/contest.py:113 +msgid "Rate all users who joined." +msgstr "Αξιολογήστε όλους τους χρήστες που συμμετέχουν." + +#: judge/models/contest.py:114 +msgid "exclude from ratings" +msgstr "απόκλειση από αξιολόγηση" + +#: judge/models/contest.py:116 +msgid "private to specific users" +msgstr "ιδιωτικό για συγκεκριμένους χρήστες" + +#: judge/models/contest.py:117 +msgid "private contestants" +msgstr "ιδιωτικοί συμμετέχοντες" + +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" +msgstr "Εάν δεν είναι άδειο, μόνο αυτοί οι χρήστες μπορούν να δουν το διαγωνισμό" + +#: judge/models/contest.py:120 +msgid "hide problem tags" +msgstr "απόκρυψη ετικέτα προβήματος" + +#: judge/models/contest.py:121 +msgid "Whether problem tags should be hidden by default." +msgstr "Εάν οι ετικέτες προβλήματος θα πρέπει να είναι κρυφές από προεπιλογή." + +#: judge/models/contest.py:123 +msgid "hide problem authors" +msgstr "απόκρυψη συγγραφέων προβήματος" + +#: judge/models/contest.py:124 +msgid "Whether problem authors should be hidden by default." +msgstr "Εάν οι συγγραφείς προβλήματος θα πρέπει να είναι κρυφοί από προεπιλογή." + +#: judge/models/contest.py:126 +msgid "run pretests only" +msgstr "εκτέλεση προδοκιμών μόνο" + +#: judge/models/contest.py:127 +msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." +msgstr "Εάν οι κριτές θα πρέπει να βαθμολογούν τις προδοκιμές μόνο, ή όλες τις περιπτώσεις. Συνήθως ορίζεται κατά τη διάρκεια ενός διαγωνισμού και, στη συνέχεια, καταργείται πριν από την επανεξέταση των υποβολών των χρηστών όταν λήξει ο διαγωνισμός." + +#: judge/models/contest.py:131 +msgid "show short form settings display" +msgstr "εμφάνιση μερικών ρυθμίσεων φόρμας" + +#: judge/models/contest.py:132 +msgid "Whether to show a section containing contest settings on the contest page or not." +msgstr "Εάν θα εμφανίζεται μια ενότητα που περιέχει ρυθμίσεις διαγωνισμού στη σελίδα διαγωνισμού ή όχι." + +#: judge/models/contest.py:135 judge/models/problem.py:184 +msgid "private to organizations" +msgstr "ιδιωτικό για οργανισμούς" + +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 +msgid "organizations" +msgstr "οργανισμοί" + +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "Εάν δεν είναι άδειο, μόνο οι οργανισμοί αυτοί μπορούν να δουν το διαγωνισμό" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "περιορισμός των οργανισμών που μπορούν να συμμετάσχουν" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "οργανισμοί που συμμετέχουν" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "Εάν δεν είναι άδειο, μόνο οι οργανισμοί αυτοί μπορούν να συμμετάσχουν στο διαγωνισμό" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "κατηγορίες" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" +msgstr "Εάν ιδιωτικό για οργανισμό, μόνο αυτές οι κατηγορίες μπορούν να δουν το διαγωνισμό" + +#: judge/models/contest.py:145 judge/models/problem.py:168 +msgid "OpenGraph image" +msgstr "Εικόνα OpenGraph" + +#: judge/models/contest.py:146 judge/models/profile.py:58 +msgid "Logo override image" +msgstr "Παράκαμψη εικόνας λογότυπου" + +#: judge/models/contest.py:148 +msgid "This image will replace the default site logo for users inside the contest." +msgstr "Αυτή η εικόνα θα αντικαταστήσει το προεπιλεγμένο λογότυπο για τους χρήστες στο διαγωνισμό." + +#: judge/models/contest.py:151 +msgid "the amount of live participants" +msgstr "ο αριθμός των ζωντανών συμμετεχόντων" + +#: judge/models/contest.py:152 +msgid "contest summary" +msgstr "σύνοψη διαγωνισμού" + +#: judge/models/contest.py:153 judge/models/problem.py:170 +msgid "Plain-text, shown in meta description tag, e.g. for social media." +msgstr "Απλό κείμενο, που εμφανίζεται στην ετικέτα meta, π.χ. για τα μέσα κοινωνικής δικτύωσης." + +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 +msgid "access code" +msgstr "κωδικός πρόσβασης" + +#: judge/models/contest.py:155 +msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." +msgstr "Ένας προαιρετικός κώδικας για την προτροπή των διαγωνιζομένων πριν τους επιτραπεί να συμμετάσχουν στο διαγωνισμό. Αφήστε το κενό για απενεργοποίηση." + +#: judge/models/contest.py:157 judge/models/problem.py:164 +msgid "personae non gratae" +msgstr "personae non gratae" + +#: judge/models/contest.py:158 +msgid "Bans the selected users from joining this contest." +msgstr "Απαγορεύει στους επιλεγμένους χρήστες να συμμετάσχουν σε αυτόν τον διαγωνισμό." + +#: judge/models/contest.py:159 +msgid "contest format" +msgstr "μορφή διαγωνισμού" + +#: judge/models/contest.py:160 +msgid "The contest format module to use." +msgstr "Η ενότητα μορφής διαγωνισμού που θα χρησιμοποιηθεί." + +#: judge/models/contest.py:161 +msgid "contest format configuration" +msgstr "διαμόρφωση μορφής διαγωνισμού" + +#: judge/models/contest.py:162 +msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." +msgstr "Ένα αντικείμενο JSON που θα χρησιμοποιηθεί ως διαμόρφωση για την επιλεγμένη ενότητα μορφής διαγωνισμού. Αφήστε κενό για να χρησιμοποιήσετε Κανένα. Η ακριβής μορφή εξαρτάται από τη μορφή διαγωνισμού που επιλέξατε." + +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "script παραγωγής ετικέτας προβλήματος διαγωνισμού" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "Μια προσαρμοσμένη συνάρτηση Lua για την παραγωγή ετικετών προβλημάτων. Απαιτεί μια μοναδική συνάρτηση με μια ακέραια παράμετρο, το δείκτη προβλήματος διαγωνισμού μηδενικού δείκτη και επιστρέφει μια συμβολοσειρά, την ετικέτα." + +#: judge/models/contest.py:169 +msgid "contest lock" +msgstr "κλείδωμα διαγωνισμού" + +#: judge/models/contest.py:170 +msgid "Prevent submissions from this contest from being rejudged after this date." +msgstr "Αποτροπή υποβολών αυτού του διαγωνισμού από το να επανεξεταστούν μετά από αυτή την ημερομηνία." + +#: judge/models/contest.py:172 +msgid "precision points" +msgstr "πόντοι ακρίβειας" + +#: judge/models/contest.py:174 +msgid "Number of digits to round points to." +msgstr "Αριθμός ψηφίων στρογγυλοποίησης πόντων." + +#: judge/models/contest.py:467 +msgid "See private contests" +msgstr "Δείτε ιδιωτικούς διαγωνισμούς" + +#: judge/models/contest.py:468 +msgid "Edit own contests" +msgstr "Επεξεργασία δικών σας διαγωνισμών" + +#: judge/models/contest.py:469 +msgid "Edit all contests" +msgstr "Επεξεργασία όλων των διαγωνισμών" + +#: judge/models/contest.py:470 +msgid "Clone contest" +msgstr "Κλωνοποίηση διαγωνισμού" + +#: judge/models/contest.py:471 templates/contest/moss.html:74 +msgid "MOSS contest" +msgstr "Διαγωνισμός MOSS" + +#: judge/models/contest.py:472 +msgid "Rate contests" +msgstr "Αξιολόγηση διαγωνισμών" + +#: judge/models/contest.py:473 +msgid "Contest access codes" +msgstr "Κωδικοί πρόσβασης διαγωνισμού" + +#: judge/models/contest.py:474 +msgid "Create private contests" +msgstr "Δημιουργία ιδιωτικών διαγωνισμών" + +#: judge/models/contest.py:475 +msgid "Change contest visibility" +msgstr "Αλλαγή ορατότητας διαγωνισμού" + +#: judge/models/contest.py:476 +msgid "Edit contest problem label script" +msgstr "Επεξεργαστείτε το script ετικέτας προβλήματος διαγωνισμού" + +#: judge/models/contest.py:477 +msgid "Change lock status of contest" +msgstr "Αλλαγή κατάστασης κλειδώματος του διαγωνισμού" + +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 +msgid "contest" +msgstr "διαγωνισμός" + +#: judge/models/contest.py:480 +msgid "contests" +msgstr "διαγωνισμοί" + +#: judge/models/contest.py:487 +msgid "associated contest" +msgstr "σχετικός διαγωνισμός" + +#: judge/models/contest.py:490 +msgid "score" +msgstr "βαθμολογία" + +#: judge/models/contest.py:491 +msgid "cumulative time" +msgstr "αθροιστικός χρόνος" + +#: judge/models/contest.py:492 +msgid "is disqualified" +msgstr "έχει αποκλειστεί" + +#: judge/models/contest.py:493 +msgid "Whether this participation is disqualified." +msgstr "Εάν αυτή η συμμετοχή έχει αποκλειστεί." + +#: judge/models/contest.py:494 +msgid "tie-breaking field" +msgstr "τάι μπρέικ πεδίο" + +#: judge/models/contest.py:495 +msgid "virtual participation id" +msgstr "id εικονικής συμμετοχής" + +#: judge/models/contest.py:496 +msgid "0 means non-virtual, otherwise the n-th virtual participation." +msgstr "0 σημαίνει μη εικονική, εναλλακτικά η n-ιοστή εικονική συμμετοχή." + +#: judge/models/contest.py:497 +msgid "contest format specific data" +msgstr "ειδικά δεδομένα μορφής διαγωνισμού" + +#: judge/models/contest.py:565 +#, python-format +msgid "%s spectating in %s" +msgstr "%s παρακολουθεί %s" + +#: judge/models/contest.py:567 +#, python-format +msgid "%s in %s, v%d" +msgstr "%s στο %s, v%d" + +#: judge/models/contest.py:568 +#, python-format +msgid "%s in %s" +msgstr "%s στο %s" + +#: judge/models/contest.py:571 +msgid "contest participation" +msgstr "συμμετοχή διαγωνισμού" + +#: judge/models/contest.py:572 +msgid "contest participations" +msgstr "συμμετοχές διαγωνισμού" + +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 +#: judge/models/problem_data.py:35 +msgid "problem" +msgstr "πρόβλημα" + +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 +msgid "points" +msgstr "πόντοι" + +#: judge/models/contest.py:581 +msgid "partial" +msgstr "εν μέρει" + +#: judge/models/contest.py:582 judge/models/contest.py:607 +msgid "is pretested" +msgstr "είναι προδοκιμασμένο" + +#: judge/models/contest.py:583 judge/models/interface.py:43 +msgid "order" +msgstr "σειρά" + +#: judge/models/contest.py:584 +msgid "output prefix length override" +msgstr "παράκαμψη μήκους προθέματος εξόδου" + +#: judge/models/contest.py:586 +msgid "Maximum number of submissions for this problem, or leave blank for no limit." +msgstr "Μέγιστος αριθμός υποβολών για αυτό το πρόβλημα ή αφήστε κενό για χωρίς όριο." + +#: judge/models/contest.py:589 +msgid "Why include a problem you can't submit to?" +msgstr "Γιατί να συμπεριλάβετε πρόβλημα στο οποίο δεν μπορείτε να υποβάλετε?" + +#: judge/models/contest.py:594 +msgid "contest problem" +msgstr "πρόβλημα διαγωνισμού" + +#: judge/models/contest.py:595 +msgid "contest problems" +msgstr "προβλήματα διαγωνισμού" + +#: judge/models/contest.py:600 judge/models/submission.py:231 +msgid "submission" +msgstr "υποβολή" + +#: judge/models/contest.py:604 judge/models/contest.py:619 +msgid "participation" +msgstr "συμμετοχή" + +#: judge/models/contest.py:608 +msgid "Whether this submission was ran only on pretests." +msgstr "Εάν αυτή η υποβολή έτρεξε μόνο σε προδοκιμές." + +#: judge/models/contest.py:612 +msgid "contest submission" +msgstr "υποβολή διαγωνισμού" + +#: judge/models/contest.py:613 +msgid "contest submissions" +msgstr "υποβολές διαγωνισμού" + +#: judge/models/contest.py:621 +msgid "rank" +msgstr "κατάταξη" + +#: judge/models/contest.py:622 +msgid "rating" +msgstr "αξιολόγηση" + +#: judge/models/contest.py:623 +msgid "raw rating" +msgstr "ακατέργαστη αξιολόγηση" + +#: judge/models/contest.py:624 +msgid "contest performance" +msgstr "επίδοση στο διαγωνισμό" + +#: judge/models/contest.py:625 +msgid "last rated" +msgstr "τελευταία αξιολόγηση" + +#: judge/models/contest.py:629 +msgid "contest rating" +msgstr "αξιολόγηση διαγωνισμού" + +#: judge/models/contest.py:630 +msgid "contest ratings" +msgstr "αξιολογήσεις διαγωνισμού" + +#: judge/models/contest.py:649 +msgid "contest moss result" +msgstr "αποτέλεσμα διαγωνισμού moss" + +#: judge/models/contest.py:650 +msgid "contest moss results" +msgstr "αποτελέσματα διαγωνισμού moss" + +#: judge/models/interface.py:24 +msgid "configuration item" +msgstr "στοιχείο ρυθμίσεων" + +#: judge/models/interface.py:25 +msgid "miscellaneous configuration" +msgstr "διάφορες ρυθμίσεις" + +#: judge/models/interface.py:37 +msgid "navigation item" +msgstr "στοιχείο πλοήγησης" + +#: judge/models/interface.py:38 +msgid "navigation bar" +msgstr "γραμμή πλοήγησης" + +#: judge/models/interface.py:44 +msgid "identifier" +msgstr "αναγνωριστικό" + +#: judge/models/interface.py:45 +msgid "label" +msgstr "ετικέτα" + +#: judge/models/interface.py:47 +msgid "highlight regex" +msgstr "επισήμανση κανονικών εκφράσεων (regex)" + +#: judge/models/interface.py:48 +msgid "parent item" +msgstr "γονικό στοιχείο" + +#: judge/models/interface.py:66 +msgid "post title" +msgstr "τίτλος ανάρτησης" + +#: judge/models/interface.py:67 judge/models/problem.py:510 +msgid "authors" +msgstr "συγγραφείς" + +#: judge/models/interface.py:68 +msgid "slug" +msgstr "slug" + +#: judge/models/interface.py:69 judge/models/problem.py:508 +msgid "public visibility" +msgstr "δημόσια ορατότητα" + +#: judge/models/interface.py:70 +msgid "sticky" +msgstr "sticky" + +#: judge/models/interface.py:71 +msgid "publish after" +msgstr "δημοσίευση μετά από" + +#: judge/models/interface.py:72 +msgid "post content" +msgstr "περιεχόμενο ανάρτησης" + +#: judge/models/interface.py:73 +msgid "post summary" +msgstr "σύνοψη ανάρτησης" + +#: judge/models/interface.py:74 +msgid "openGraph image" +msgstr "εικόνα openGraph" + +#: judge/models/interface.py:96 +msgid "Edit all posts" +msgstr "Επεξεργασία όλων των αναρτήσεων" + +#: judge/models/interface.py:97 +msgid "Edit post visibility" +msgstr "Επεξεργασία ορατότητας ανάρτησης" + +#: judge/models/interface.py:99 +msgid "blog post" +msgstr "ανάρτηση ιστολογίου" + +#: judge/models/interface.py:100 +msgid "blog posts" +msgstr "αναρτήσεις ιστολογίου" + +#: judge/models/problem.py:30 +#, python-format +msgid "Disallowed characters: %(value)s" +msgstr "Μη επιτρεπόμενοι χαρακτήρες: %(value)s" + +#: judge/models/problem.py:35 +msgid "problem category ID" +msgstr "ID κατηγορίας προβλήματος" + +#: judge/models/problem.py:36 +msgid "problem category name" +msgstr "όνομα κατηγορίας προβλήματος" + +#: judge/models/problem.py:43 +msgid "problem type" +msgstr "τύπος προβλήματος" + +#: judge/models/problem.py:44 judge/models/problem.py:136 +msgid "problem types" +msgstr "τύποι προβλημάτος" + +#: judge/models/problem.py:48 +msgid "problem group ID" +msgstr "ID ομάδας προβλημάτων" + +#: judge/models/problem.py:49 +msgid "problem group name" +msgstr "όνομα ομάδας προβλημάτων" + +#: judge/models/problem.py:56 judge/models/problem.py:139 +msgid "problem group" +msgstr "ομάδα προβλημάτων" + +#: judge/models/problem.py:57 +msgid "problem groups" +msgstr "ομάδες προβλημάτων" + +#: judge/models/problem.py:61 +msgid "key" +msgstr "κλειδί" + +#: judge/models/problem.py:63 +msgid "link" +msgstr "σύνδεσμος" + +#: judge/models/problem.py:64 +msgid "full name" +msgstr "ονοματεπώνυμο" + +#: judge/models/problem.py:65 judge/models/profile.py:45 +#: judge/models/runtime.py:24 +msgid "short name" +msgstr "υποκοριστικό ονόματος" + +#: judge/models/problem.py:66 +msgid "Displayed on pages under this license" +msgstr "Εμφανίζεται σε σελίδες με αυτή την άδεια χρήσης" + +#: judge/models/problem.py:67 +msgid "icon" +msgstr "εικονίδιο" + +#: judge/models/problem.py:67 +msgid "URL to the icon" +msgstr "URL για το εικονίδιο" + +#: judge/models/problem.py:68 +msgid "license text" +msgstr "κείμενο άδειας χρήσης" + +#: judge/models/problem.py:77 +msgid "license" +msgstr "άδεια" + +#: judge/models/problem.py:78 +msgid "licenses" +msgstr "άδειες" + +#: judge/models/problem.py:113 +msgid "Follow global setting" +msgstr "Ακολουθήστε την καθολική ρύθμιση" + +#: judge/models/problem.py:114 +msgid "Always visible" +msgstr "Πάντα ορατό" + +#: judge/models/problem.py:115 +msgid "Visible if problem solved" +msgstr "Ορατό αν το πρόβλημα λυθεί" + +#: judge/models/problem.py:116 +msgid "Only own submissions" +msgstr "Μόνο δικές μου υποβολές" + +#: judge/models/problem.py:119 +msgid "problem code" +msgstr "κωδικός προβλήματος" + +#: judge/models/problem.py:121 +msgid "A short, unique code for the problem, used in the url after /problem/" +msgstr "Ένας σύντομος, μοναδικός κωδικός για το πρόβλημα, που χρησιμοποιείται στο url μετά το /problem/" + +#: judge/models/problem.py:123 +msgid "problem name" +msgstr "όνομα προβλήματος" + +#: judge/models/problem.py:124 +msgid "The full name of the problem, as shown in the problem list." +msgstr "Το πλήρες όνομα του προβλήματος, όπως φαίνεται στη λίστα προβλημάτων." + +#: judge/models/problem.py:126 +msgid "problem body" +msgstr "σώμα προβλήματος" + +#: judge/models/problem.py:127 +msgid "creators" +msgstr "δημιουργοί" + +#: judge/models/problem.py:128 +msgid "These users will be able to edit the problem, and be listed as authors." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργάζονται το πρόβλημα και να εμφανίζονται ως συγγραφείς." + +#: judge/models/problem.py:130 +msgid "curators" +msgstr "επιμελητές" + +#: judge/models/problem.py:131 +msgid "These users will be able to edit the problem, but not be listed as authors." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργάζονται το πρόβλημα, αλλά δεν θα εμφανίζονται ως συγγραφείς." + +#: judge/models/problem.py:133 +msgid "testers" +msgstr "δοκιμαστές" + +#: judge/models/problem.py:135 +msgid "These users will be able to view the private problem, but not edit it." +msgstr "Αυτοί οι χρήστες θα είναι σε θέση να δουν το ιδιωτικό πρόβλημα, αλλά όχι να το επεξεργαστούν." + +#: judge/models/problem.py:137 +msgid "The type of problem, as shown on the problem's page." +msgstr "Ο τύπος του προβλήματος, όπως εμφανίζεται στη σελίδα του προβλήματος." + +#: judge/models/problem.py:140 +msgid "The group of problem, shown under Category in the problem list." +msgstr "Η ομάδα του προβλήματος, όπως εμφανίζεται στην Κατηγορία στη λίστα προβλημάτων." + +#: judge/models/problem.py:142 +msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." +msgstr "Το χρονικό όριο για αυτό το πρόβλημα, σε δευτερόλεπτα. Κλασματικά δευτερόλεπτα (π.χ. 1.5) υποστηρίζονται." + +#: judge/models/problem.py:146 judge/models/problem.py:495 +msgid "memory limit" +msgstr "όριο μνήμης" + +#: judge/models/problem.py:147 +msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." +msgstr "Το όριο μνήμης για αυτό το πρόβλημα, σε kilobytes (π.χ. 64mb = 65536 kilobytes)." + +#: judge/models/problem.py:153 +msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." +msgstr "Πόντοι που απονέμονται για την ολοκλήρωση του προβλήματος. Οι πόντοι εμφανίζονται με επίθεμα 'p' αν βαθμολογείται μερικώς." + +#: judge/models/problem.py:156 +msgid "allows partial points" +msgstr "επιτρέπεται μερική βαθμολόγηση" + +#: judge/models/problem.py:157 +msgid "allowed languages" +msgstr "επιτρεπόμενες γλώσσες" + +#: judge/models/problem.py:158 +msgid "List of allowed submission languages." +msgstr "Λίστα επιτρεπόμενων γλωσσών υποβολής" + +#: judge/models/problem.py:160 +msgid "manually managed" +msgstr "χειροκίνητη διαχείριση" + +#: judge/models/problem.py:161 +msgid "Whether judges should be allowed to manage data or not." +msgstr "Αν οι κριτές θα επιτρέπεται να διαχειρίζονται δεδομένα ή όχι." + +#: judge/models/problem.py:162 +msgid "date of publishing" +msgstr "ημερομηνία δημοσίευσης" + +#: judge/models/problem.py:163 +msgid "Doesn't have magic ability to auto-publish due to backward compatibility" +msgstr "Δεν έχει μαγική ικανότητα αυτόματης δημοσίευσης λόγω οπισθόδρομης συμβατότητας" + +#: judge/models/problem.py:165 +msgid "Bans the selected users from submitting to this problem." +msgstr "Απαγορεύει στους επιλεγμένους χρήστες την υποβολή σε αυτό το πρόβλημα." + +#: judge/models/problem.py:167 +msgid "The license under which this problem is published." +msgstr "Η άδεια χρήσης υπό την οποία δημοσιεύεται αυτό το πρόβλημα." + +#: judge/models/problem.py:169 +msgid "problem summary" +msgstr "σύνοψη προβλήματος" + +#: judge/models/problem.py:171 +msgid "number of users" +msgstr "αριθμός χρηστών" + +#: judge/models/problem.py:172 +msgid "The number of users who solved the problem." +msgstr "Ο αριθμός των χρηστών που έλυσαν το πρόβλημα." + +#: judge/models/problem.py:173 +msgid "solve rate" +msgstr "ρυθμός επίλυσης" + +#: judge/models/problem.py:174 +msgid "allow full markdown access" +msgstr "επιτρέπει πλήρη πρόσβαση markdown" + +#: judge/models/problem.py:175 +msgid "submission source visibility" +msgstr "ορατότητα πηγής υποβολής" + +#: judge/models/problem.py:183 +msgid "If private, only these organizations may see the problem." +msgstr "Εάν ιδιωτικό, μόνο αυτοί οι οργανισμοί μπορούν να δουν το πρόβλημα." + +#: judge/models/problem.py:456 +msgid "See hidden problems" +msgstr "Δείτε κρυμμένα προβλήματα" + +#: judge/models/problem.py:457 +msgid "Edit own problems" +msgstr "Επεξεργασία δικών σας προβλημάτων" + +#: judge/models/problem.py:458 +msgid "Edit all problems" +msgstr "Επεξεργασία όλων των προβλημάτων" + +#: judge/models/problem.py:459 +msgid "Edit all public problems" +msgstr "Επεξεργασία όλων των δημόσιων προβλημάτων" + +#: judge/models/problem.py:460 +msgid "Edit problems with full markup" +msgstr "Επεξεργασία προβλημάτων με πλήρη markup" + +#: judge/models/problem.py:461 templates/problem/problem.html:161 +msgid "Clone problem" +msgstr "Κλωνοποίηση προβλήματος" + +#: judge/models/problem.py:462 +msgid "Change is_public field" +msgstr "Αλλαγή is_public πεδίου" + +#: judge/models/problem.py:463 +msgid "Change is_manually_managed field" +msgstr "Αλλαγή is_manually_managed πεδίου" + +#: judge/models/problem.py:464 +msgid "See organization-private problems" +msgstr "Δείτε ιδιωτικά-οργανισμών προβλήματα" + +#: judge/models/problem.py:472 judge/models/problem.py:491 +#: judge/models/runtime.py:111 +msgid "language" +msgstr "γλώσσα" + +#: judge/models/problem.py:473 +msgid "translated name" +msgstr "μεταφρασμένο όνομα" + +#: judge/models/problem.py:474 +msgid "translated description" +msgstr "μεταφρασμένη περιγραφή" + +#: judge/models/problem.py:479 +msgid "problem translation" +msgstr "μετάφραση προβλήματος" + +#: judge/models/problem.py:480 +msgid "problem translations" +msgstr "μεταφράσεις προβλήματος" + +#: judge/models/problem.py:484 +msgid "clarified problem" +msgstr "διευκρινισμένο πρόβλημα" + +#: judge/models/problem.py:485 +msgid "clarification body" +msgstr "σώμα διευκρίνησης" + +#: judge/models/problem.py:486 +msgid "clarification timestamp" +msgstr "χρονοσφραγίδα διευκρίνησης" + +#: judge/models/problem.py:501 +msgid "language-specific resource limit" +msgstr "ειδικό όριο πόρων για τη γλώσσα" + +#: judge/models/problem.py:502 +msgid "language-specific resource limits" +msgstr "ειδικά όρια πόρων για τη γλώσσα" + +#: judge/models/problem.py:506 +msgid "associated problem" +msgstr "συσχετιζόμενο πρόβλημα" + +#: judge/models/problem.py:509 +msgid "publish date" +msgstr "ημερομηνία δημοσίευσης" + +#: judge/models/problem.py:511 +msgid "editorial content" +msgstr "περιεχόμενο εξήγησης" + +#: judge/models/problem.py:534 +msgid "See hidden solutions" +msgstr "Δείτε κρυφές λύσεις" + +#: judge/models/problem.py:536 +msgid "solution" +msgstr "λύση" + +#: judge/models/problem.py:537 +msgid "solutions" +msgstr "λύσεις" + +#: judge/models/problem_data.py:23 +msgid "Standard" +msgstr "Κανονικό" + +#: judge/models/problem_data.py:24 +msgid "Floats" +msgstr "Αριθμοί κινητής υποδιαστολής" + +#: judge/models/problem_data.py:25 +msgid "Floats (absolute)" +msgstr "Αριθμοί κινητής υποδιαστολής (απόλυτοι)" + +#: judge/models/problem_data.py:26 +msgid "Floats (relative)" +msgstr "Αριθμοί κινητής υποδιαστολής (σχετικοί)" + +#: judge/models/problem_data.py:27 +msgid "Non-trailing spaces" +msgstr "Χωρίς κενά στο τέλος" + +#: judge/models/problem_data.py:28 +msgid "Unordered" +msgstr "Μη ταξινομημένο" + +#: judge/models/problem_data.py:29 +msgid "Byte identical" +msgstr "Πανομοιώτυπο ανά μπάιτ" + +#: judge/models/problem_data.py:30 +msgid "Line-by-line" +msgstr "Γραμμή-προς-γραμμή" + +#: judge/models/problem_data.py:37 +msgid "data zip file" +msgstr "αρχείο zip δεδομένων" + +#: judge/models/problem_data.py:39 +msgid "generator file" +msgstr "αρχείο γεννήτριας" + +#: judge/models/problem_data.py:41 judge/models/problem_data.py:90 +msgid "output prefix length" +msgstr "μήκος προθέματος εξόδου" + +#: judge/models/problem_data.py:42 judge/models/problem_data.py:91 +msgid "output limit length" +msgstr "μήκος ορίου εξόδου" + +#: judge/models/problem_data.py:43 +msgid "init.yml generation feedback" +msgstr "init.yml ανατροφοδότηση δημιουργίας" + +#: judge/models/problem_data.py:44 judge/models/problem_data.py:92 +msgid "checker" +msgstr "ελεγκτής" + +#: judge/models/problem_data.py:45 judge/models/problem_data.py:93 +msgid "checker arguments" +msgstr "ορίσματα ελεγκτή" + +#: judge/models/problem_data.py:46 judge/models/problem_data.py:94 +msgid "checker arguments as a JSON object" +msgstr "ορίσματα ελεγκτή ως αντικείμενο JSON" + +#: judge/models/problem_data.py:77 +msgid "problem data set" +msgstr "σύνολο δεδομένων προβλήματος" + +#: judge/models/problem_data.py:79 +msgid "case position" +msgstr "θέση δοκιμαστικής περίπτωσης" + +#: judge/models/problem_data.py:80 +msgid "case type" +msgstr "τύπος δοκιμαστικής περίπτωσης" + +#: judge/models/problem_data.py:81 +msgid "Normal case" +msgstr "Κανονική περίπτωση" + +#: judge/models/problem_data.py:82 +msgid "Batch start" +msgstr "Έναρξη δεσμίδας" + +#: judge/models/problem_data.py:83 +msgid "Batch end" +msgstr "Λήξη δεσμίδας" + +#: judge/models/problem_data.py:85 +msgid "input file name" +msgstr "όνομα αρχείου εισαγωγής" + +#: judge/models/problem_data.py:86 +msgid "output file name" +msgstr "όνομα αρχείου εξόδου" + +#: judge/models/problem_data.py:87 +msgid "generator arguments" +msgstr "ορίσματα γεννήτριας" + +#: judge/models/problem_data.py:88 +msgid "point value" +msgstr "αξία πόντου" + +#: judge/models/problem_data.py:89 +msgid "case is pretest?" +msgstr "η περίπτωση είναι προ-δοκιμαστική;" + +#: judge/models/profile.py:42 +msgid "organization title" +msgstr "τίτλος οργανισμού" + +#: judge/models/profile.py:43 +msgid "organization slug" +msgstr "slug οργανισμού" + +#: judge/models/profile.py:44 +msgid "Organization name shown in URL" +msgstr "Το όνομα οργανισμού που εμφανίζεται στο URL" + +#: judge/models/profile.py:46 +msgid "Displayed beside user name during contests" +msgstr "Εμφανίζεται δίπλα στο όνομα χρήστη κατά τη διάρκεια διαγωνισμών" + +#: judge/models/profile.py:47 +msgid "organization description" +msgstr "περιγραφή οργάνωσης" + +#: judge/models/profile.py:48 judge/models/profile.py:112 +msgid "administrators" +msgstr "διαχειριστές" + +#: judge/models/profile.py:49 +msgid "Those who can edit this organization" +msgstr "Όσοι μπορούν να επεξεργαστούν αυτόν τον οργανισμό" + +#: judge/models/profile.py:50 +msgid "creation date" +msgstr "ημερομηνία δημιουργίας" + +#: judge/models/profile.py:51 +msgid "is open organization?" +msgstr "είναι ανοικτός οργανισμός;" + +#: judge/models/profile.py:52 +msgid "Allow joining organization" +msgstr "Να επιτρέπεται η εγγραφή στον οργανισμό" + +#: judge/models/profile.py:53 +msgid "maximum size" +msgstr "μέγιστο μέγεθος" + +#: judge/models/profile.py:54 +msgid "Maximum amount of users in this organization, only applicable to private organizations" +msgstr "Μέγιστος αριθμός χρηστών σε αυτόν τον οργανισμό, ισχύει μόνο για ιδιωτικούς οργανισμούς" + +#: judge/models/profile.py:56 +msgid "Student access code" +msgstr "Κωδικός πρόσβασης μαθητή" + +#: judge/models/profile.py:60 +msgid "This image will replace the default site logo for users viewing the organization." +msgstr "Αυτή η εικόνα θα αντικαταστήσει το προεπιλεγμένο λογότυπο ιστότοπου για τους χρήστες που βλέπουν τον οργανισμό." + +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "απαιτείται εγγραφή σε κατηγορία " + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "αν τα μέλη είναι υποχρεωμένα να επιλέξουν μια κατηγορία κατά την εγγραφή" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "Η εγγραφή σε κατηγορία δεν μπορεί να επιβληθεί όταν ο οργανισμός έχει ανοιχτή εγγραφή" + +#: judge/models/profile.py:95 +msgid "Administer organizations" +msgstr "Διαχείρηση οργανισμών" + +#: judge/models/profile.py:96 +msgid "Edit all organizations" +msgstr "Επεξεργασία όλων των οργανισμών" + +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 +msgid "organization" +msgstr "οργανισμός" + +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "την οργάνωση στην οποία ανήκει αυτή η κατηγορία" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "όνομα κατηγορίας" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "slug κατηγορίας" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "όνομα κατηγορίας που εμφανίζεται σε διευθύνσεις URL" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "περιγραφή κατηγορίας" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "είναι η κατηγορία ενεργή" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "κωδικός πρόσβασης μαθητή" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "εκείνοι που μπορούν να εγκρίνουν την ιδιότητα μέλους σε αυτή την κατηγορία" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "μέλη" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "κατηγορία" + +#: judge/models/profile.py:148 +msgid "user associated" +msgstr "συσχετιζόμενος χρήστης" + +#: judge/models/profile.py:149 +msgid "self-description" +msgstr "αυτο-περιγραφή" + +#: judge/models/profile.py:150 +msgid "location" +msgstr "τοποθεσία" + +#: judge/models/profile.py:152 +msgid "preferred language" +msgstr "προτιμώμενη γλώσσα" + +#: judge/models/profile.py:158 +msgid "last access time" +msgstr "τελευταία ώρα πρόσβασης" + +#: judge/models/profile.py:159 +msgid "last IP" +msgstr "τελευταία IP" + +#: judge/models/profile.py:162 +msgid "display rank" +msgstr "εμφάνιση βαθμίδας" + +#: judge/models/profile.py:164 +msgid "Normal User" +msgstr "Κανονικός Χρήστης" + +#: judge/models/profile.py:165 +msgid "Problem Setter" +msgstr "Δημιουργός Προβλημάτων" + +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 +#: templates/contest/ranking-table.html:49 +#: templates/problem/problem-list-tabs.html:6 +#: templates/submission/info-base.html:13 +#: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 +msgid "Admin" +msgstr "Διαχειριστής" + +#: judge/models/profile.py:167 +msgid "comment mute" +msgstr "σίγαση σχολίου" + +#: judge/models/profile.py:167 +msgid "Some users are at their best when silent." +msgstr "Μερικοί χρήστες είναι στα καλύτερά τους όταν είναι σιωπηλοί." + +#: judge/models/profile.py:169 +msgid "unlisted user" +msgstr "μη καταχωρημένος χρήστης" + +#: judge/models/profile.py:169 +msgid "User will not be ranked." +msgstr "Ο χρήστης δεν θα βαθμονομηθεί." + +#: judge/models/profile.py:172 +msgid "user script" +msgstr "script χρήστη" + +#: judge/models/profile.py:173 +msgid "User-defined JavaScript for site customization." +msgstr "Καθορισμένη από το χρήστη JavaScript για εξατομίκευση ιστότοπου." + +#: judge/models/profile.py:174 +msgid "current contest" +msgstr "τρέχων διαγωνισμός" + +#: judge/models/profile.py:176 +msgid "math engine" +msgstr "μηχανή μαθηματικών" + +#: judge/models/profile.py:178 +msgid "the rendering engine used to render math" +msgstr "η μηχανή απεικόνισης που χρησιμοποιείται για την απεικόνιση μαθηματικών" + +#: judge/models/profile.py:179 +msgid "TOTP 2FA enabled" +msgstr "TOTP 2FA ενεργοποιημένο" + +#: judge/models/profile.py:180 +msgid "check to enable TOTP-based two-factor authentication" +msgstr "Τσεκάρετε για να ενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων βάσει TOTP" + +#: judge/models/profile.py:181 +msgid "WebAuthn 2FA enabled" +msgstr "WebAuthn 2FA ενεργοποιημένο" + +#: judge/models/profile.py:182 +msgid "check to enable WebAuthn-based two-factor authentication" +msgstr "τσεκάρετε για να ενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων βάσει WebAuthn" + +#: judge/models/profile.py:183 +msgid "TOTP key" +msgstr "TOTP κλειδί" + +#: judge/models/profile.py:184 +msgid "32 character base32-encoded key for TOTP" +msgstr "32 χαρακτήρων βάσης32-κωδικοποιημένο κλειδί για TOTP" + +#: judge/models/profile.py:186 +msgid "TOTP key must be empty or base32" +msgstr "Το κλειδί TOTP πρέπει να είναι άδειο ή βάσης32" + +#: judge/models/profile.py:187 +msgid "scratch codes" +msgstr "κωδικοί scratch" + +#: judge/models/profile.py:188 +msgid "JSON array of 16 character base32-encoded codes for scratch codes" +msgstr "JSON πίνακας 16 χαρακτήρων βάσης32-κωδικοποιημένων κωδικών για scratch" + +#: judge/models/profile.py:192 +msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" +msgstr "Οι κωδικοί scratch πρέπει να είναι κενοί ή πίνακας JSON κωδικών 16 χαρακτήρων βάσης32" + +#: judge/models/profile.py:194 +msgid "last TOTP timecode" +msgstr "τελευταίος κωδικός χρόνου TOTP" + +#: judge/models/profile.py:195 +msgid "API token" +msgstr "Διακριτικό API" + +#: judge/models/profile.py:196 +msgid "64 character hex-encoded API access token" +msgstr "hex-κωδικοποιημένο διακριτικό πρόσβασης API 64 χαρακτήρων" + +#: judge/models/profile.py:198 +msgid "API token must be None or hexadecimal" +msgstr "Το διακριτικό API πρέπει να είναι Κανένα ή δεκαεξαδικό" + +#: judge/models/profile.py:199 +msgid "internal notes" +msgstr "εσωτερικές σημειώσεις" + +#: judge/models/profile.py:200 +msgid "Notes for administrators regarding this user." +msgstr "Σημειώσεις για διαχειριστές σχετικά με αυτόν τον χρήστη." + +#: judge/models/profile.py:201 +msgid "last data download time" +msgstr "ώρα τελευταίας λήψης δεδομένων" + +#: judge/models/profile.py:202 +msgid "display name override" +msgstr "παράκαμψη εμφάνιση ονόματος" + +#: judge/models/profile.py:203 +msgid "name displayed in place of username" +msgstr "εμφάνιση ονόματος στη θέση του ονόματος χρήστη" + +#: judge/models/profile.py:317 +msgid "Shows in-progress development stuff" +msgstr "Δείχνει πράγματα ανάπτυξης σε εξέλιξη" + +#: judge/models/profile.py:318 +msgid "Edit TOTP settings" +msgstr "Επεξεργασία ρυθμίσεων TOTP" + +#: judge/models/profile.py:320 +msgid "user profile" +msgstr "προφίλ χρήστη" + +#: judge/models/profile.py:321 +msgid "user profiles" +msgstr "προφίλ χρήστη" + +#: judge/models/profile.py:327 +msgid "device name" +msgstr "όνομα συσκευής" + +#: judge/models/profile.py:328 +msgid "credential ID" +msgstr "διαπιστευτήρια ID" + +#: judge/models/profile.py:329 +msgid "public key" +msgstr "δημόσιο κλειδί" + +#: judge/models/profile.py:330 +msgid "sign counter" +msgstr "μετρητής υπογραφής" + +#: judge/models/profile.py:351 +msgid "WebAuthn credential" +msgstr "WebAuthn διαπιστευτήριο" + +#: judge/models/profile.py:352 +msgid "WebAuthn credentials" +msgstr "WebAuthn διαπιστευτήρια" + +#: judge/models/profile.py:359 +msgid "request time" +msgstr "ώρα αιτήματος" + +#: judge/models/profile.py:360 +msgid "state" +msgstr "κατάσταση" + +#: judge/models/profile.py:366 +msgid "reason" +msgstr "αιτία" + +#: judge/models/profile.py:375 +msgid "organization join request" +msgstr "αίτηση συμμετοχής οργανισμού" + +#: judge/models/profile.py:376 +msgid "organization join requests" +msgstr "αιτήσεις συμμετοχής οργανισμού" + +#: judge/models/runtime.py:19 +msgid "short identifier" +msgstr "σύντομο αναγνωριστικό" + +#: judge/models/runtime.py:20 +msgid "The identifier for this language; the same as its executor id for judges." +msgstr "Το αναγνωριστικό αυτής της γλώσσας, το ίδιο με το αναγνωριστικό (id) εκτελεστή για τους κριτές." + +#: judge/models/runtime.py:22 +msgid "long name" +msgstr "πλήρες όνομα" + +#: judge/models/runtime.py:23 +msgid "Longer name for the language, e.g. \"Python 2\" or \"C++11\"." +msgstr "Πλήρες όνομα για τη γλώσσα, π.χ. \"Python 2\" ή \"C++11\"." + +#: judge/models/runtime.py:25 +msgid "More readable, but short, name to display publicly; e.g. \"PY2\" or \"C++11\". If left blank, it will default to the short identifier." +msgstr "Πιο ευανάγνωστο, αλλά σύντομο, όνομα για δημόσια προβολή, π.χ. \"PY2\" ή \"C+11\". Αν αφεθεί κενό, θα προεπιλεγεί το σύντομο αναγνωριστικό." + +#: judge/models/runtime.py:29 +msgid "common name" +msgstr "κοινή ονομασία" + +#: judge/models/runtime.py:30 +msgid "Common name for the language. For example, the common name for C++03, C++11, and C++14 would be \"C++\"" +msgstr "Κοινή ονομασία γλώσσας. Για παράδειγμα, η κοινή ονομασία για C++03, C++11, και C++14 θα είναι \"C+++\"" + +#: judge/models/runtime.py:32 +msgid "ace mode name" +msgstr "όνομα λειτουργίας ace" + +#: judge/models/runtime.py:33 +msgid "Language ID for Ace.js editor highlighting, appended to \"mode-\" to determine the Ace JavaScript file to use, e.g., \"python\"." +msgstr "Αναγνωριστικό γλώσσας για τον τονισμό του επεξεργαστή Ace.js, προσαρτάται στο \"mode-\" για να καθοριστεί το αρχείο Ace JavaScript που θα χρησιμοποιηθεί, π.χ. \"python\"." + +#: judge/models/runtime.py:35 +msgid "pygments name" +msgstr "όνομα pygments" + +#: judge/models/runtime.py:36 +msgid "Language ID for Pygments highlighting in source windows." +msgstr "Αναγνωριστικό γλώσσας για επισήμανση Pygments στα πηγαία παράθυρα." + +#: judge/models/runtime.py:37 +msgid "code template" +msgstr "πρότυπο κώδικα" + +#: judge/models/runtime.py:38 +msgid "Code template to display in submission editor." +msgstr "Πρότυπο κώδικα για εμφάνιση στον επεξεργαστή υποβολής." + +#: judge/models/runtime.py:39 +msgid "runtime info override" +msgstr "παράκαμψη πληροφοριών χρόνου εκτέλεσης (runtime)" + +#: judge/models/runtime.py:40 +msgid "Do not set this unless you know what you're doing! It will override the usually more specific, judge-provided runtime info!" +msgstr "Μην το ορίσετε εκτός αν ξέρετε τι κάνετε! Θα παρακάμψει τις συνήθως πιο συγκεκριμένες πληροφορίες χρόνου εκτέλεσης που παρέχονται από τον κριτή!" + +#: judge/models/runtime.py:42 +msgid "language description" +msgstr "περιγραφή γλώσσας" + +#: judge/models/runtime.py:43 +msgid "Use this field to inform users of quirks with your environment, additional restrictions, etc." +msgstr "Χρησιμοποιήστε αυτό το πεδίο για να ενημερώσετε τους χρήστες για ιδιορρυθμίες με το περιβάλλον σας, πρόσθετους περιορισμούς κλπ." + +#: judge/models/runtime.py:45 +msgid "extension" +msgstr "επέκταση" + +#: judge/models/runtime.py:46 +msgid "The extension of source files, e.g., \"py\" or \"cpp\"." +msgstr "Η επέκταση των πηγαίων αρχείων, π.χ. \"py\" ή \"cpp\"." + +#: judge/models/runtime.py:112 +msgid "languages" +msgstr "γλώσσες" + +#: judge/models/runtime.py:116 +msgid "language to which this runtime belongs" +msgstr "γλώσσα στην οποία ανήκει αυτός ο χρόνος εκτέλεσης" + +#: judge/models/runtime.py:117 +msgid "judge on which this runtime exists" +msgstr "κριτής στον οποίο υπάρχει αυτός ο χρόνος εκτέλεσης" + +#: judge/models/runtime.py:118 +msgid "runtime name" +msgstr "όνομα χρόνου εκτέλεσης" + +#: judge/models/runtime.py:119 +msgid "runtime version" +msgstr "έκδοση χρόνου εκτέλεσης" + +#: judge/models/runtime.py:120 +msgid "order in which to display this runtime" +msgstr "σειρά με την οποία θα εμφανίζεται αυτός ο χρόνος εκτέλεσης" + +#: judge/models/runtime.py:124 +msgid "Server name, hostname-style" +msgstr "Όνομα διακομιστή, στυλ ονόματος υπολογιστή (hostname)" + +#: judge/models/runtime.py:125 +msgid "time of creation" +msgstr "ώρα δημιουργίας" + +#: judge/models/runtime.py:126 +msgid "A key to authenticate this judge" +msgstr "Ένα κλειδί για την πιστοποίηση αυτού του κριτή" + +#: judge/models/runtime.py:127 +msgid "authentication key" +msgstr "κλειδί πιστοποίησης ταυτότητας" + +#: judge/models/runtime.py:128 +msgid "block judge" +msgstr "μπλοκάρισμα κριτή" + +#: judge/models/runtime.py:129 +msgid "Whether this judge should be blocked from connecting, even if its key is correct." +msgstr "Αν αυτός ο κριτής θα πρέπει να αποκλειστεί από το να συνδεθεί, ακόμη και αν το κλειδί είναι σωστό." + +#: judge/models/runtime.py:131 +msgid "judge online status" +msgstr "διαδικτυακή κατάσταση κριτή" + +#: judge/models/runtime.py:132 +msgid "judge start time" +msgstr "ώρα έναρξης κριτή" + +#: judge/models/runtime.py:133 +msgid "response time" +msgstr "χρόνος απόκρισης" + +#: judge/models/runtime.py:134 +msgid "system load" +msgstr "φορτίο συστήματος" + +#: judge/models/runtime.py:135 +msgid "Load for the last minute, divided by processors to be fair." +msgstr "Φορτίο για το τελευταίο λεπτό, διαιρεμένο με επεξεργαστές για να είναι δίκαιο." + +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "τελευταία συνδεδεμένη IP" + +#: judge/models/runtime.py:139 judge/models/runtime.py:181 +msgid "judges" +msgstr "κριτές" + +#: judge/models/runtime.py:180 +msgid "judge" +msgstr "κριτής" + +#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/utils/problems.py:74 +msgid "Accepted" +msgstr "Αποδεκτή" + +#: judge/models/submission.py:23 judge/models/submission.py:51 +msgid "Wrong Answer" +msgstr "Λάθος Απάντηση" + +#: judge/models/submission.py:24 judge/models/submission.py:53 +msgid "Time Limit Exceeded" +msgstr "Υπέρβαση Του Χρονικού Ορίου" + +#: judge/models/submission.py:25 judge/models/submission.py:54 +msgid "Memory Limit Exceeded" +msgstr "Υπέρβαση Όριου Μνήμης" + +#: judge/models/submission.py:26 judge/models/submission.py:55 +msgid "Output Limit Exceeded" +msgstr "Υπέρβαση Όριου Εξόδου" + +#: judge/models/submission.py:27 judge/models/submission.py:56 +msgid "Invalid Return" +msgstr "Μη Έγκυρη Επιστροφή" + +#: judge/models/submission.py:28 judge/models/submission.py:57 +msgid "Runtime Error" +msgstr "Σφάλμα χρόνου εκτέλεσης" + +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 +msgid "Compile Error" +msgstr "Σφάλμα Μεταγλώττισης" + +#: judge/models/submission.py:30 judge/models/submission.py:43 +msgid "Internal Error" +msgstr "Εσωτερικό Σφάλμα" + +#: judge/models/submission.py:31 +msgid "Short circuit" +msgstr "Βραχυκύκλωμα" + +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 +msgid "Aborted" +msgstr "Ακυρώθηκε" + +#: judge/models/submission.py:39 judge/models/submission.py:60 +msgid "Queued" +msgstr "Προστέθηκε στην ουρά" + +#: judge/models/submission.py:40 judge/models/submission.py:61 +msgid "Processing" +msgstr "Σε επεξεργασία" + +#: judge/models/submission.py:41 judge/models/submission.py:62 +msgid "Grading" +msgstr "Υπό βαθμολόγηση" + +#: judge/models/submission.py:42 judge/models/submission.py:63 +msgid "Completed" +msgstr "Ολοκληρώθηκε" + +#: judge/models/submission.py:59 +msgid "Internal Error (judging server error)" +msgstr "Εσωτερικό σφάλμα (εκτίμηση σφάλματος διακομιστή)" + +#: judge/models/submission.py:69 +msgid "submission time" +msgstr "ώρα υποβολής" + +#: judge/models/submission.py:70 judge/models/submission.py:252 +msgid "execution time" +msgstr "χρόνος εκτέλεσης" + +#: judge/models/submission.py:71 judge/models/submission.py:253 +msgid "memory usage" +msgstr "χρήση μνήμης" + +#: judge/models/submission.py:72 judge/models/submission.py:254 +msgid "points granted" +msgstr "χορηγηθέντες πόντοι" + +#: judge/models/submission.py:73 +msgid "submission language" +msgstr "γλώσσα υποβολής" + +#: judge/models/submission.py:74 +msgid "status" +msgstr "κατάσταση" + +#: judge/models/submission.py:75 +msgid "result" +msgstr "αποτέλεσμα" + +#: judge/models/submission.py:77 +msgid "compile errors" +msgstr "σφάλματα μεταγλώττισης" + +#: judge/models/submission.py:79 +msgid "batched cases" +msgstr "δεσμίδες περιπτώσεων" + +#: judge/models/submission.py:80 +msgid "test case points" +msgstr "πόντοι δοκιμαστικής περίπτωσης" + +#: judge/models/submission.py:81 +msgid "test case total points" +msgstr "συνολικοί πόντοι δοκιμαστικής περίπτωσης" + +#: judge/models/submission.py:82 +msgid "judged on" +msgstr "κρίθηκε στις" + +#: judge/models/submission.py:84 +msgid "submission judge time" +msgstr "ώρα κρίσης υποβολής" + +#: judge/models/submission.py:85 +msgid "last rejudge date by admin" +msgstr "τελευταία ημερομηνία κρίσης εκ νεόυ από admin" + +#: judge/models/submission.py:86 +msgid "was ran on pretests only" +msgstr "έτρεξε μόνο σε προδοκιμές" + +#: judge/models/submission.py:89 +msgid "submission lock" +msgstr "κλείδωμα υποβολής" + +#: judge/models/submission.py:223 +msgid "Abort any submission" +msgstr "Ακύρωση οποιασδήποτε υποβολής" + +#: judge/models/submission.py:224 +msgid "Rejudge the submission" +msgstr "Κρίση εκ νέου της υποβολής" + +#: judge/models/submission.py:225 +msgid "Rejudge a lot of submissions" +msgstr "Κρίση εκ νέου πολλών υποβολών" + +#: judge/models/submission.py:226 +msgid "Submit without limit" +msgstr "Υποβολή χωρίς όριο" + +#: judge/models/submission.py:227 +msgid "View all submission" +msgstr "Δείτε όλες τις υποβολές" + +#: judge/models/submission.py:228 +msgid "Resubmit others' submission" +msgstr "Επανυποβολή υποβολής τρίτων" + +#: judge/models/submission.py:229 +msgid "Change lock status of submission" +msgstr "Αλλαγή κατάστασης κλειδώματος υποβολής" + +#: judge/models/submission.py:232 templates/contest/moss.html:58 +msgid "submissions" +msgstr "υποβολές" + +#: judge/models/submission.py:236 judge/models/submission.py:248 +msgid "associated submission" +msgstr "συσχετιζόμενη υποβολή" + +#: judge/models/submission.py:238 +msgid "source code" +msgstr "πηγαίος κώδικας" + +#: judge/models/submission.py:250 +msgid "test case ID" +msgstr "ID δοκιμαστικής περίπτωσης" + +#: judge/models/submission.py:251 +msgid "status flag" +msgstr "σημαία κατάστασης" + +#: judge/models/submission.py:255 +msgid "points possible" +msgstr "δυνατοί πόντοι" + +#: judge/models/submission.py:256 +msgid "batch number" +msgstr "αριθμός δεσμίδας" + +#: judge/models/submission.py:257 +msgid "judging feedback" +msgstr "σχόλια κριτή" + +#: judge/models/submission.py:258 +msgid "extended judging feedback" +msgstr "εκτενή σχόλια κριτή" + +#: judge/models/submission.py:259 +msgid "program output" +msgstr "έξοδος προγράμματος" + +#: judge/models/submission.py:267 +msgid "submission test case" +msgstr "δοκιμαστική περίπτωση υποβολής" + +#: judge/models/submission.py:268 +msgid "submission test cases" +msgstr "δοκιμαστικές περιπτώσεις υποβολής" + +#: judge/models/ticket.py:10 +msgid "ticket title" +msgstr "τίτλος αιτήματος" + +#: judge/models/ticket.py:11 +msgid "ticket creator" +msgstr "δημιουργός αιτήματος" + +#: judge/models/ticket.py:13 +msgid "creation time" +msgstr "ώρα δημιούργιας" + +#: judge/models/ticket.py:14 +msgid "assignees" +msgstr "υπεύθυνοι" + +#: judge/models/ticket.py:16 +msgid "quick notes" +msgstr "γρήγορες σημειώσεις" + +#: judge/models/ticket.py:17 +msgid "Staff notes for this issue to aid in processing." +msgstr "Σημειώσεις προσωπικού πάνω σε αυτό το θέμα για βοήθεια κατά την επεξεργασία." + +#: judge/models/ticket.py:18 +msgid "linked item type" +msgstr "τύπος συνδεδεμένου στοιχείου" + +#: judge/models/ticket.py:20 +msgid "linked item ID" +msgstr "ID συνδεδεμένου στοιχείου" + +#: judge/models/ticket.py:22 +msgid "is ticket open?" +msgstr "είναι ανοιχτό το αίτημα?" + +#: judge/models/ticket.py:26 +msgid "ticket" +msgstr "αίτημα" + +#: judge/models/ticket.py:28 +msgid "poster" +msgstr "αφίσα" + +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "σώμα μηνύματος" + +#: judge/models/ticket.py:31 +msgid "message time" +msgstr "ώρα μηνύματος" + +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 +msgid "Page [page] of [topage]" +msgstr "Σελίδα [page] από [topage]" + +#: judge/pdf_problems.py:288 +#, python-format +msgid "Page %s of %s" +msgstr "Σελίδα %s από %s" + +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "Πρωτάρης" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "Ερασιτέχνης" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "Ειδήμονας" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "Υποψήφια Αυθεντία " + +#: judge/ratings.py:198 +msgid "Master" +msgstr "Αυθεντία" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "Απόλυτη Αυθεντία" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "Στόχος " + +#: judge/tasks/contest.py:19 +msgid "Recalculating contest scores" +msgstr "Επανυπολογισμός βαθμολογιών διαγωνισμού" + +#: judge/tasks/contest.py:40 +msgid "Running MOSS" +msgstr "Εκτέλεση MOSS" + +#: judge/tasks/submission.py:47 +msgid "Modifying submissions" +msgstr "Τροποποίηση υποβολών" + +#: judge/tasks/submission.py:60 +msgid "Recalculating user points" +msgstr "Επανυπολογισμός πόντων χρήστη" + +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "Εφαρμογή φίλτρων" + +#: judge/tasks/user.py:64 +msgid "Preparing your submission data" +msgstr "Προετοιμασία των δεδομένων υποβολής" + +#: judge/tasks/user.py:95 +msgid "Preparing your comment data" +msgstr "Προετοιμασία των δεδομένων σχολίου" + +#: judge/utils/problem_data.py:63 +msgid "Empty batches not allowed." +msgstr "Δεν επιτρέπονται κενές δεσμίδες." + +#: judge/utils/problem_data.py:82 +#, python-format +msgid "Points must be defined for non-batch case #%d." +msgstr "Πόντοι πρέπει να οριστούν για περιπτώση #%d που δεν είναι δεσμίδα." + +#: judge/utils/problem_data.py:87 +#, python-format +msgid "Input file for case %d does not exist: %s" +msgstr "Αρχείο εισαγωγής για την περίπτωση %d δεν υπάρχει: %s" + +#: judge/utils/problem_data.py:90 +#, python-format +msgid "Output file for case %d does not exist: %s" +msgstr "Αρχείο εξόδου για την περίπτωση %d δεν υπάρχει: %s" + +#: judge/utils/problem_data.py:115 +#, python-format +msgid "Batch start case #%d requires points." +msgstr "Η περίπτωση έναρξης δεσμίδας #%d χρειάζεται πόντους." + +#: judge/utils/problem_data.py:136 +#, python-format +msgid "Attempt to end batch outside of one in case #%d" +msgstr "Προσπάθεια τερματισμού δεσμίδας εκτός μίας στην περίπτωση #%d" + +#: judge/utils/problem_data.py:154 +msgid "How did you corrupt the zip path?" +msgstr "Πώς έχετε αλλοιώσει το μονοπάτι zip;" + +#: judge/utils/problem_data.py:160 +msgid "How did you corrupt the generator path?" +msgstr "Πώς έχετε αλλοιώσει το μονοπάτι της γεννήτριας;" + +#: judge/utils/problems.py:75 +msgid "Wrong" +msgstr "Λάθος" + +#: judge/utils/problems.py:77 +msgid "Timeout" +msgstr "Λήξη χρονικού ορίου" + +#: judge/utils/problems.py:78 +msgid "Error" +msgstr "Σφάλμα" + +#: judge/utils/problems.py:89 +msgid "Can't pass both queryset and keyword filters" +msgstr "Δεν μπορούν να περαστεί και το σύνολο ερωτημάτων (queryset) και τα φίλτρα λέξεων-κλειδιών (keyword filters)" + +#: judge/utils/pwned.py:109 +msgid "This password is too common." +msgstr "Αυτός ο κωδικός πρόσβασης είναι πολύ συνηθισμένος." + +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." +msgstr "Ο κωδικός πρόσβασής σας δεν πρέπει να είναι κοινής χρήσης κωδικός πρόσβασης." + +#: judge/utils/timedelta.py:49 +msgctxt "time format with day" +msgid "%d day %h:%m:%s" +msgid_plural "%d days %h:%m:%s" +msgstr[0] "%d ημέρα %h:%m:%s" +msgstr[1] "%d ημέρες %h:%m:%s" + +#: judge/utils/timedelta.py:53 +msgctxt "time format without day" +msgid "%h:%m:%s" +msgstr "%h:%m:%s" + +#: judge/utils/timedelta.py:59 +msgctxt "time format no seconds with day" +msgid "%d day %h:%m" +msgid_plural "%d days %h:%m" +msgstr[0] "%d ημέρα %h:%m" +msgstr[1] "%d ημέρες %h:%m" + +#: judge/utils/timedelta.py:61 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d ημέρα" +msgstr[1] "%d ημέρες" + +#: judge/utils/timedelta.py:63 +msgctxt "hours and minutes" +msgid "%h:%m" +msgstr "%h:%m" + +#: judge/views/blog.py:37 +#, python-format +msgid "Page %d of Posts" +msgstr "Σελίδα %d Αναρτήσεων" + +#: judge/views/comment.py:27 +msgid "Messing around, are we?" +msgstr "Σαχλαμαρίζουμε, ε;" + +#: judge/views/comment.py:36 +msgid "You must solve at least one problem before you can vote." +msgstr "Πρέπει να λύσετε τουλάχιστον ένα πρόβλημα πριν μπορέσετε να ψηφίσετε." + +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "Το σχόλιο δεν βρέθηκε." + +#: judge/views/comment.py:66 +msgid "You already voted." +msgstr "Έχετε ήδη ψηφίσει." + +#: judge/views/comment.py:129 judge/views/organization.py:350 +msgid "Edited from site" +msgstr "Επεξεργάστηκε από την ιστοσελίδα" + +#: judge/views/comment.py:150 +msgid "Editing comment" +msgstr "Επεξεργασία σχολίου" + +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 +msgid "No such contest" +msgstr "Δεν υπάρχει τέτοιος διαγωνισμός" + +#: judge/views/contests.py:59 judge/views/contests.py:232 +#, python-format +msgid "Could not find a contest with the key \"%s\"." +msgstr "Αδυναμία εύρεσης διαγωνισμού με κλειδί \"%s\"." + +#: judge/views/contests.py:72 +msgid "Contests" +msgstr "Διαγωνισμοί" + +#: judge/views/contests.py:235 +msgid "Could not find such contest." +msgstr "Αδυναμία εύρεσης τέτοιου διαγωνισμού." + +#: judge/views/contests.py:238 +#, python-format +msgid "Access to contest \"%s\" denied" +msgstr "Πρόσβαση στο διαγωνισμό \"%s\" απορρίφθηκε" + +#: judge/views/contests.py:283 +msgid "Clone Contest" +msgstr "Κλωνοποίηση Διαγωνισμού" + +#: judge/views/contests.py:317 +#, python-format +msgid "Cloned contest from %s" +msgstr "Κλωνοποιημένος διαγωνισμός από %s" + +#: judge/views/contests.py:353 +msgid "Contest not ongoing" +msgstr "Ο διαγωνισμός δεν βρίσκεται σε εξέλιξη" + +#: judge/views/contests.py:354 +#, python-format +msgid "\"%s\" is not currently ongoing." +msgstr "\"%s\" δεν βρίσκεται σε εξέλιξη." + +#: judge/views/contests.py:359 +msgid "Banned from joining" +msgstr "Αποκλεισμένος από συμμετοχή" + +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +msgstr "Έχετε κηρυχθεί persona non grata για αυτόν τον διαγωνισμό. Είστε μόνιμα αποκλεισμένοι από το να συμμετάσχετε σε αυτόν τον διαγωνισμό." + +#: judge/views/contests.py:390 +msgid "Cannot enter" +msgstr "Αδυναμία εισόδου" + +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." +msgstr "Δεν έχετε τη δυνατότητα να συμμετάσχετε σε αυτόν τον διαγωνισμό." + +#: judge/views/contests.py:429 +#, python-format +msgid "Enter access code for \"%s\"" +msgstr "Εισάγετε κωδικό πρόσβασης για το \"%s\"" + +#: judge/views/contests.py:440 +#, python-format +msgid "You are not in contest \"%s\"." +msgstr "Δεν είστε στο διαγωνισμό \"%s\"." + +#: judge/views/contests.py:459 +msgid "ContestCalendar requires integer year and month" +msgstr "Το ContestCalendar απαιτεί ακέραιο έτος και μήνα" + +#: judge/views/contests.py:499 +#, python-format +msgid "Contests in %(month)s" +msgstr "Διαγωνισμοί %(month)s" + +#: judge/views/contests.py:499 +msgid "F Y" +msgstr "F Y" + +#: judge/views/contests.py:557 +#, python-format +msgid "%s Statistics" +msgstr "%s Στατιστικά" + +#: judge/views/contests.py:731 +#, python-format +msgid "%s Rankings" +msgstr "%s Κατάταξη" + +#: judge/views/contests.py:739 +msgid "???" +msgstr "???" + +#: judge/views/contests.py:755 +#, python-format +msgid "Your participation in %s" +msgstr "Η συμμετοχή σας στο %s" + +#: judge/views/contests.py:756 +#, python-format +msgid "%s's participation in %s" +msgstr "συμμετοχή του %s στο %s" + +#: judge/views/contests.py:763 +msgid "Live" +msgstr "Ζωντανά" + +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 +msgid "Participation" +msgstr "Συμμετοχή" + +#: judge/views/contests.py:819 +#, python-format +msgid "%s MOSS Results" +msgstr "%s MOSS Αποτελέσματα" + +#: judge/views/contests.py:846 +#, python-format +msgid "Running MOSS for %s..." +msgstr "Εκτέλεση MOSS για %s..." + +#: judge/views/contests.py:869 +#, python-format +msgid "Contest tag: %s" +msgstr "Ετικέτα διαγωνισμού: %s" + +#: judge/views/error.py:14 +msgid "404 error" +msgstr "404 σφάλμα" + +#: judge/views/error.py:15 +#, python-format +msgid "Could not find page \"%s\"" +msgstr "Αδυναμία εύρεσης σελίδας \"%s\"" + +#: judge/views/error.py:22 +#, python-format +msgid "no permission for %s" +msgstr "χωρίς άδεια για %s" + +#: judge/views/error.py:30 +#, python-format +msgid "corrupt page %s" +msgstr "αλλοιωμένη σελίδα %s" + +#: judge/views/language.py:12 templates/status/judge-status-table.html:9 +#: templates/status/status-tabs.html:5 +msgid "Runtimes" +msgstr "Χρόνοι εκτέλεσης" + +#: judge/views/organization.py:52 judge/views/organization.py:55 +msgid "No such organization" +msgstr "Δεν υπάρχει τέτοιος οργανισμός" + +#: judge/views/organization.py:53 +#, python-format +msgid "Could not find an organization with the key \"%s\"." +msgstr "Αδυναμία εύρεσης διαγωνισμού με κλειδί \"%s\"." + +#: judge/views/organization.py:56 +msgid "Could not find such organization." +msgstr "Αδυναμία εύρεσης τέτοιου οργανισμού." + +#: judge/views/organization.py:81 judge/views/register.py:33 +#: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 +msgid "Organizations" +msgstr "Οργανισμοί" + +#: judge/views/organization.py:115 +#, python-format +msgid "%s Members" +msgstr "%s Μέλη" + +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 +msgid "Joining organization" +msgstr "Εγγραφή στον οργανισμό" + +#: judge/views/organization.py:138 +msgid "You are already in the organization." +msgstr "Είστε ήδη μέλος αυτού του οργανισμού." + +#: judge/views/organization.py:141 +msgid "This organization is not open." +msgstr "Αυτός ο οργανισμός δεν είναι ανοιχτός." + +#: judge/views/organization.py:158 +msgid "Leaving organization" +msgstr "Αποχώρηση από τον οργανισμό" + +#: judge/views/organization.py:158 +#, python-format +msgid "You are not in \"%s\"." +msgstr "Δεν είστε στο \"%s\"." + +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "Δεν μπορείτε να αιτηθείτε να εγγραφείται στο %s" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "Έχετε ήδη ένα αίτημα σε εκκρεμότητα για εγγραφή στο %s." + +#: judge/views/organization.py:199 +#, python-format +msgid "Request to join %s" +msgstr "Αίτηση εγγραφής στο %s" + +#: judge/views/organization.py:218 +msgid "Join request detail" +msgstr "Λεπτομέρειες αίτησης εγγραφής" + +#: judge/views/organization.py:257 +#, python-format +msgid "Managing join requests for %s" +msgstr "Διαχείριση αιτήσεων εγγραφής για %s" + +#: judge/views/organization.py:289 +#, python-format +msgid "Your organization can only receive %d more members. You cannot approve %d users." +msgstr "Ο οργανισμός σας μπορεί να λάβει ακόμη %d μόνο μέλη. Δεν μπορείτε να εγκρίνετε %d χρήστες." + +#: judge/views/organization.py:303 +#, python-format +msgid "Approved %d user." +msgid_plural "Approved %d users." +msgstr[0] "Εγκρίθηκε ο χρήστης %d." +msgstr[1] "Εγκρίθηκαν οι χρήστες %d." + +#: judge/views/organization.py:304 +#, python-format +msgid "Rejected %d user." +msgid_plural "Rejected %d users." +msgstr[0] "Απορρίφθηκε ο χρήστης %d." +msgstr[1] "Απορρίφθηκαν οι χρήστες %d." + +#: judge/views/organization.py:334 +#, python-format +msgid "Editing %s" +msgstr "Επεξεργασία %s" + +#: judge/views/organization.py:358 judge/views/organization.py:366 +msgid "Can't edit organization" +msgstr "Αδυναμία επεξεργασίας οργανισμού" + +#: judge/views/organization.py:359 +msgid "You are not allowed to edit this organization." +msgstr "Δεν έχετε δικαιώμα να επεξεργαστείτε αυτόν τον οργανισμό." + +#: judge/views/organization.py:367 +msgid "You are not allowed to kick people from this organization." +msgstr "Δεν έχετε δικαιώμα να αποβάλλετε κόσμο από αυτόν τον οργανισμό." + +#: judge/views/organization.py:372 judge/views/organization.py:376 +msgid "Can't kick user" +msgstr "Αδυναμία αποβολής χρήστη" + +#: judge/views/organization.py:373 +msgid "The user you are trying to kick does not exist!" +msgstr "Ο χρήστης που προσπαθείτε να αποβάλλετε δεν υπάρχει!" + +#: judge/views/organization.py:377 +#, python-format +msgid "The user you are trying to kick is not in organization: %s." +msgstr "Ο χρήστης που προσπαθείτε να αποβάλλετε δε βρίσκεται στον οργανισμό: %s." + +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "Κατηγορία {name} στο {organization}" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "Κατηγορία {name} - {organization}" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "Αίτηση εγγραφής του {name} στο {organization}" + +#: judge/views/problem.py:71 +msgid "No such problem" +msgstr "Δεν υπάρχει τέτοιο πρόβλημα" + +#: judge/views/problem.py:72 +#, python-format +msgid "Could not find a problem with the code \"%s\"." +msgstr "Αδυναμία εύρεσης προβλήματος με κωδικό \"%s\"." + +#: judge/views/problem.py:114 judge/views/problem.py:117 +#, python-brace-format +msgid "Editorial for {0}" +msgstr "Εξήγηση για {0}" + +#: judge/views/problem.py:137 +msgid "No such editorial" +msgstr "Δεν υπάρχει τέτοια εξήγηση" + +#: judge/views/problem.py:138 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "Αδυναμία εύρεσης εξήγησης με κωδικό \"%s\"." + +#: judge/views/problem.py:271 templates/contest/contest.html:191 +#: templates/user/user-tabs.html:5 templates/user/users-table.html:23 +msgid "Problems" +msgstr "Προβλήματα" + +#: judge/views/problem.py:568 judge/views/problem.py:576 +#, python-format +msgid "Submit to %s" +msgstr "Υποβολή στο %s" + +#: judge/views/problem.py:625 +msgid "Banned from submitting" +msgstr "Αποκλεισμένος από υποβολή" + +#: judge/views/problem.py:626 +msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." +msgstr "Έχετε κηρυχθεί persona non grata για αυτό το πρόβλημα. Είστε μόνιμα αποκλεισμένοι από το να υποβάλλετε σε αυτό το πρόβλημα." + +#: judge/views/problem.py:630 +msgid "Too many submissions" +msgstr "Πάρα πολλές υποβολές" + +#: judge/views/problem.py:631 +msgid "You have exceeded the submission limit for this problem." +msgstr "Έχετε υπερβεί το όριο υποβολής για αυτό το πρόβλημα." + +#: judge/views/problem.py:699 +msgid "Clone Problem" +msgstr "Κλωνοποίηση Προβλήματος" + +#: judge/views/problem.py:726 +#, python-format +msgid "Cloned problem from %s" +msgstr "Κλωνοποιημένο πρόβλημα από %s" + +#: judge/views/problem_data.py:37 +msgid "Checker arguments must be a JSON object" +msgstr "Τα ορίσματα ελεγκτή πρέπει να είναι αντικείμενο JSON" + +#: judge/views/problem_data.py:39 +msgid "Checker arguments is invalid JSON" +msgstr "Τα ορίσματα ελεγκτή είναι λανθασμένο JSON" + +#: judge/views/problem_data.py:46 +msgid "Your zip file is invalid!" +msgstr "Το zip αρχείο σας είναι λανθασμένο!" + +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 +#, python-brace-format +msgid "Comparing submissions for {0}" +msgstr "Σύγκριση υποβολών για {0}" + +#: judge/views/problem_data.py:143 +#, python-brace-format +msgid "Editing data for {0}" +msgstr "Επεξεργασία δεδομένων για {0}" + +#: judge/views/problem_data.py:146 +#, python-format +msgid "Editing data for %s" +msgstr "Επεξεργασία δεδομένων για %s" + +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 +#, python-format +msgid "Generated init.yml for %s" +msgstr "Παραγμένο init.yml για %s" + +#: judge/views/problem_manage.py:50 judge/views/problem_manage.py:53 +#, python-format +msgid "Managing submissions for %s" +msgstr "Διαχείριση υποβολών για %s" + +#: judge/views/problem_manage.py:96 +#, python-format +msgid "Rejudging selected submissions for %s..." +msgstr "Κρίση εκ νεόυ επιλεγμένων υποβολών για %s..." + +#: judge/views/problem_manage.py:111 +#, python-format +msgid "Rescoring all submissions for %s..." +msgstr "Επαναβαθμολόγηση όλων των υποβολών για %s..." + +#: judge/views/problem_manage.py:120 +#, python-format +msgid "Successfully scheduled %d submission for rejudging." +msgid_plural "Successfully scheduled %d submissions for rejudging." +msgstr[0] "Επιτυχής προγραμματισμός υποβολής %d για κρίση εκ νέου." +msgstr[1] "Επιτυχής προγραμματισμός υποβολών %d για κρίση εκ νέου." + +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#, python-format +msgid "Best solutions for %s" +msgstr "Καλύτερες λύσεις για %s" + +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#, python-format +msgid "Best solutions for %(problem)s in %(contest)s" +msgstr "Καλύτερες λύσεις για %(problem)s στο %(contest)s" + +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#, python-format +msgid "Best solutions for problem %(number)s in %(contest)s" +msgstr "Καλύτερες λύσεις για το πρόβλημα %(number)s στο %(contest)s" + +#: judge/views/register.py:26 +msgid "A username must contain letters, numbers, or underscores" +msgstr "Ένα όνομα χρήστη πρέπει να περιέχει γράμματα, αριθμούς ή κάτω παύλες" + +#: judge/views/register.py:30 +msgid "Preferred language" +msgstr "Προτιμώμενη γλώσσα" + +#: judge/views/register.py:37 +msgid "Subscribe to newsletter?" +msgstr "Εγγραφή στο ενημερωτικό δελτίο;" + +#: judge/views/register.py:44 +#, python-format +msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." +msgstr "Η διεύθυνση ηλεκτρονικού ταχυδρομείου \"%s\" χρησιμοποιείται ήδη. Μόνο μία εγγραφή επιτρέπεται ανά διεύθυνση." + +#: judge/views/register.py:50 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "Ο πάροχος email σας δεν επιτρέπεται λόγω ιστορικού κατάχρησης. Παρακαλούμε χρησιμοποιήστε έναν αξιόπιστο πάροχο email." + +#: judge/views/register.py:56 judge/views/register.py:94 +msgid "Registration" +msgstr "Εγγραφή" + +#: judge/views/register.py:105 +msgid "Authentication failure" +msgstr "Αποτυχία ελέγχου ταυτότητας" + +#: judge/views/stats.py:67 +msgid "Language statistics" +msgstr "Στατιστικά γλωσσών" + +#: judge/views/status.py:23 templates/submission/list.html:310 +msgid "Status" +msgstr "Κατάσταση" + +#: judge/views/status.py:108 +msgid "Version matrix" +msgstr "Πίνακας έκδοσης" + +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "Απαγορεύεται η πρόσβαση. Λύστε %(problem)s για να το δείτε." + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "Αδυναμία πρόσβασης στην υποβολή" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "Απαγορεύεται η πρόσβαση." + +#: judge/views/submission.py:81 judge/views/submission.py:88 +#, python-format +msgid "Submission of %(problem)s by %(user)s" +msgstr "Υποβολή για %(problem)s από %(user)s" + +#: judge/views/submission.py:231 judge/views/submission.py:232 +#: templates/problem/problem.html:127 +msgid "All submissions" +msgstr "Όλες οι υποβολές" + +#: judge/views/submission.py:391 +msgid "All my submissions" +msgstr "Όλες οι υποβολές μου" + +#: judge/views/submission.py:392 +#, python-format +msgid "All submissions by %s" +msgstr "Όλες οι υποβολές από %s" + +#: judge/views/submission.py:423 +#, python-format +msgid "All submissions for %s" +msgstr "Όλες οι υποβολές για %s" + +#: judge/views/submission.py:446 +msgid "Must pass a problem" +msgstr "Πρέπει να περάσει ένα πρόβλημα" + +#: judge/views/submission.py:485 +#, python-format +msgid "My submissions for %(problem)s" +msgstr "Οι υποβολές μου για %(problem)s" + +#: judge/views/submission.py:486 +#, python-format +msgid "%(user)s's submissions for %(problem)s" +msgstr "υποβολές του/της %(user)s για %(problem)s" + +#: judge/views/submission.py:584 +msgid "Must pass a contest" +msgstr "Πρέπει να περάσει ένα διαγωνισμό" + +#: judge/views/submission.py:592 judge/views/submission.py:607 +#, python-format +msgid "My submissions in %(contest)s" +msgstr "Οι υποβολές μου στο %(contest)s" + +#: judge/views/submission.py:593 judge/views/submission.py:611 +#, python-format +msgid "%(user)s's submissions in %(contest)s" +msgstr "υποβολές του/της %(user)s στο %(contest)s" + +#: judge/views/submission.py:629 judge/views/submission.py:647 +#, python-brace-format +msgid "{user}'s submissions for {problem} in {contest}" +msgstr "υποβολές του/της {user} για {problem} στο {contest}" + +#: judge/views/submission.py:634 judge/views/submission.py:655 +#, python-brace-format +msgid "{user}'s submissions for problem {number} in {contest}" +msgstr "υποβολές του/της {user} για το πρόβλημα {number} στο {contest}" + +#: judge/views/ticket.py:33 judge/views/ticket.py:39 +msgid "Ticket title" +msgstr "Τίτλος Αιτήματος" + +#: judge/views/ticket.py:40 +msgid "Issue description" +msgstr "Περιγραφή θέματος" + +#: judge/views/ticket.py:48 +msgid "You must solve at least one problem before you can create a ticket." +msgstr "Πρέπει να λύσετε τουλάχιστον ένα πρόβλημα πριν να έχετε τη δυνατότητα να δημιουργήσετε ένα αίτημα." + +#: judge/views/ticket.py:91 judge/views/ticket.py:94 +#, python-format +msgid "New ticket for %s" +msgstr "Νέο αίτημα για %s" + +#: judge/views/ticket.py:148 +#, python-format +msgid "%(title)s - Ticket %(id)d" +msgstr "%(title)s - Αίτημα %(id)d" + +#: judge/views/ticket.py:255 +#, python-format +msgid "Tickets - Page %(number)d of %(total)d" +msgstr "Αιτήματα - Σελίδα %(number)d από %(total)d" + +#: judge/views/ticket.py:307 +#, python-format +msgid "New Ticket: %s" +msgstr "Νέο Αίτημα: %s" + +#: judge/views/ticket.py:308 +#, python-format +msgid "#%(id)d, assigned to: %(users)s" +msgstr "#%(id)d, ανατέθηκε στον/στην: %(users)s" + +#: judge/views/ticket.py:310 +msgid ", " +msgstr ", " + +#: judge/views/ticket.py:310 +msgid "no one" +msgstr "κανένας" + +#: judge/views/ticket.py:330 +#, python-format +msgid "New Ticket Message For: %s" +msgstr "Νέο Μήνυμα Αιτήματος Για: %s" + +#: judge/views/two_factor.py:49 +msgid "Enable Two-factor Authentication" +msgstr "Ενεργοποίηση Ταυτοποίησης Δύο Παραγόντων" + +#: judge/views/two_factor.py:109 +msgid "Refresh Two-factor Authentication" +msgstr "Ανανέωση Ταυτοποίησης Δύο Παραγόντων" + +#: judge/views/two_factor.py:117 +msgid "Disable Two-factor Authentication" +msgstr "Απενεργοποίηση Ταυτοποίησης Δύο Παραγόντων" + +#: judge/views/two_factor.py:166 +msgid "Invalid WebAuthn response" +msgstr "Μη έγκυρη WebAuthn απάντηση." + +#: judge/views/two_factor.py:169 +msgid "Invalid name" +msgstr "Μη έγκυρο όνομα" + +#: judge/views/two_factor.py:222 +msgid "Staff may not disable 2FA" +msgstr "Το προσωπικό δεν μπορεί να απενεργοποιήσει το 2FA" + +#: judge/views/two_factor.py:230 +msgid "Perform Two-factor Authentication" +msgstr "Εκτέλεση Ταυτοποίησης Δύο Παραγόντων" + +#: judge/views/user.py:78 +msgid "No such user" +msgstr "Δεν υπάρχει τέτοιος χρήστης" + +#: judge/views/user.py:78 +#, python-format +msgid "No user handle \"%s\"." +msgstr "Δεν υπάρχει τέτοιο αναγνωριστικό χρήστη \"%s\"." + +#: judge/views/user.py:82 +msgid "My account" +msgstr "Ο λογαριασμός μου" + +#: judge/views/user.py:83 +#, python-format +msgid "User %s" +msgstr "Χρήστης %s" + +#: judge/views/user.py:130 +msgid "Login" +msgstr "Σύνδεση" + +#: judge/views/user.py:171 +msgid "M j, Y, G:i" +msgstr "M j, Y, G:i" + +#: judge/views/user.py:305 +msgid "Preparing your data..." +msgstr "Προετοιμασία των δεδομένων σας..." + +#: judge/views/user.py:309 templates/user/edit-profile.html:352 +msgid "Download your data" +msgstr "Λήψη των δεδομένων σας" + +#: judge/views/user.py:365 +msgid "Updated on site" +msgstr "Ενημερώθηκε στην ιστοσελίδα" + +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 +#: templates/user/user-tabs.html:16 +msgid "Edit profile" +msgstr "Επεξεργασία προφίλ" + +#: judge/views/user.py:413 +msgid "Generated API token for user" +msgstr "Παρήχθη διακριτικό API για το χρήστη" + +#: judge/views/user.py:425 +msgid "Removed API token for user" +msgstr "Αφαιρέθηκε διακριτικό API για το χρήστη" + +#: judge/views/user.py:435 +msgid "Generated scratch codes for user" +msgstr "Παρήχθη κωδικός scratch για το χρήστη" + +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 +msgid "Leaderboard" +msgstr "Πίνακας Κατάταξης" + +#: judge/views/user.py:502 +msgid "You have been successfully logged out." +msgstr "Αποσυνδεθήκατε επιτυχώς." + +#: judge/views/widgets.py:52 judge/views/widgets.py:62 +#, python-format +msgid "Invalid upstream data: %s" +msgstr "Μη έγκυρα upstream δεδομένα: %s" + +#: judge/views/widgets.py:72 +msgid "Bad latitude or longitude" +msgstr "Λανθασμένο γεωγραφικό πλάτος ή γεωγραφικό μήκος" + +#: templates/admin/judge/contest/change_form.html:9 +msgid "Are you sure you want to rejudge ALL the submissions?" +msgstr "Είστε βέβαιοι ότι θέλετε να κρίνετε εκ νέου ΟΛΕΣ τις υποβολές;" + +#: templates/admin/judge/contest/change_form.html:17 +#: templates/admin/judge/contest/change_form.html:20 +msgid "Rate" +msgstr "Αξιολόγηση" + +#: templates/admin/judge/contest/change_list.html:9 +msgid "Rate all ratable contests" +msgstr "Αξιολόγηση όλων των αξιολογήσιμων διαγωνισμών" + +#: templates/admin/judge/judge/change_form.html:15 +#: templates/admin/judge/judge/change_form.html:18 +msgid "Disconnect" +msgstr "Αποσύνδεση" + +#: templates/admin/judge/judge/change_form.html:20 +#: templates/admin/judge/judge/change_form.html:23 +msgid "Terminate" +msgstr "Τερματισμός" + +#: templates/admin/judge/problem/change_form.html:14 +msgid "View Submissions" +msgstr "Προβολή Υποβολών" + +#: templates/admin/judge/problem/change_form.html:17 +#: templates/user/user-base.html:61 +msgid "View submissions" +msgstr "Προβολή υποβολών" + +#: templates/admin/judge/profile/change_form.html:14 +#: templates/admin/judge/profile/change_form.html:17 +msgid "Edit user" +msgstr "Επεξεργασία χρήστη" + +#: templates/admin/judge/submission/change_form.html:14 +#: templates/admin/judge/submission/change_form.html:17 +#: templates/submission/source.html:34 templates/submission/status.html:80 +msgid "Rejudge" +msgstr "Κρίση εκ νέου" + +#: templates/base.html:222 +msgid "Stop impersonating" +msgstr "Σταματήστε την προσωποποίηση" + +#: templates/base.html:227 +msgid "Log out" +msgstr "Αποσύνδεση" + +#: templates/base.html:236 +#: templates/registration/password_reset_complete.html:4 +msgid "Log in" +msgstr "Σύνδεση" + +#: templates/base.html:237 templates/registration/registration_form.html:175 +msgid "or" +msgstr "ή" + +#: templates/base.html:238 +msgid "Sign up" +msgstr "Εγγραφή" + +#: templates/base.html:250 +msgid "spectating" +msgstr "παρακολουθεί" + +#: templates/base.html:263 +msgid "This site works best with JavaScript enabled." +msgstr "Αυτός ο ιστότοπος λειτουργεί καλύτερα με ενεργοποιημένη JavaScript." + +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "παρέχεται περήφανα από **DMOJ**" + +#: templates/blog/content.html:13 templates/comments/list.html:75 +#: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 +#: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 +#: templates/license.html:10 templates/problem/data.html:428 +#: templates/problem/editorial.html:14 +msgid "Edit" +msgstr "Επεξεργασία" + +#: templates/blog/content.html:27 +#, python-format +msgid "\n" +" posted on %(time)s\n" +" " +msgstr "\n" +" δημοσιεύτηκε στις %(time)s\n" +" " + +#: templates/blog/dashboard.html:21 +#, python-format +msgid "\n" +" on %(time)s\n" +" " +msgstr "\n" +" στις %(time)s\n" +" " + +#: templates/blog/list.html:85 +msgid "Blog" +msgstr "Ιστολόγιο" + +#: templates/blog/list.html:87 +msgid "Events" +msgstr "Συμβάντα" + +#: templates/blog/list.html:92 +msgid "News" +msgstr "Νέα" + +#: templates/blog/list.html:106 +#, python-brace-format +msgid "posted on {time}" +msgstr "δημοσιεύθηκε στις {time}" + +#: templates/blog/list.html:130 templates/problem/problem.html:311 +msgid "Clarifications" +msgstr "Διευκρινίσεις" + +#: templates/blog/list.html:146 templates/problem/problem.html:322 +msgid "No clarifications have been made at this time." +msgstr "Δεν έχουν γίνει διευκρινίσεις μέχρι στιγμής." + +#: templates/blog/list.html:154 +msgid "Ongoing contests" +msgstr "Διαγωνισμοί σε εξέλιξη" + +#: templates/blog/list.html:172 +msgid "Upcoming contests" +msgstr "Επερχόμενοι διαγωνισμοί" + +#: templates/blog/list.html:189 +msgid "Comment stream" +msgstr "Ροή σχολίων" + +#: templates/blog/list.html:209 +msgid "New problems" +msgstr "Νέα προβλήματα" + +#: templates/blog/list.html:226 +msgid "My open tickets" +msgstr "Τα ανοιχτά μου αιτήματα" + +#: templates/blog/list.html:247 +msgid "New tickets" +msgstr "Νέα αιτήματα" + +#: templates/comments/list.html:2 templates/user/prepare-data.html:97 +msgid "Comments" +msgstr "Σχόλια" + +#: templates/comments/list.html:18 templates/comments/list.html:27 +msgid "Please log in to vote" +msgstr "Παρακαλώ συνδεθείτε για να ψηφίσετε" + +#: templates/comments/list.html:47 +#, python-brace-format +msgid "commented on {time}" +msgstr "σχολίαστηκε στις {time}" + +#: templates/comments/list.html:56 +#, python-format +msgid "edit %(edits)s" +msgstr "επεξεργασία %(edits)s" + +#: templates/comments/list.html:58 templates/comments/media-js.html:69 +msgid "edited" +msgstr "επεξεργάστηκε" + +#: templates/comments/list.html:67 +msgid "Link" +msgstr "Σύνδεσμος" + +#: templates/comments/list.html:80 templates/comments/list.html:87 +msgid "Reply" +msgstr "Απάντηση" + +#: templates/comments/list.html:95 templates/comments/votes.html:1 +msgid "Votes" +msgstr "Ψήφοι" + +#: templates/comments/list.html:96 +msgid "Hide" +msgstr "Απόκρυψη" + +#: templates/comments/list.html:111 +msgid "This comment is hidden due to too much negative feedback." +msgstr "Αυτό το σχόλιο είναι κρυμμένο λόγω υπερβολικής αρνητικής ανατροφοδότησης." + +#: templates/comments/list.html:112 +msgid "Show it anyway." +msgstr "Εμφάνιση παρ'όλα αυτά." + +#: templates/comments/list.html:129 +msgid "There are no comments at the moment." +msgstr "Δεν υπάρχουν σχόλια αυτή τη στιγμή." + +#: templates/comments/list.html:135 +msgid "New comment" +msgstr "Νέο σχόλιο" + +#: templates/comments/list.html:149 +msgid "Invalid comment body." +msgstr "Μη έγκυρο σώμα σχολίου." + +#: templates/comments/list.html:157 +msgid "Post!" +msgstr "Ανάρτηση!" + +#: templates/comments/list.html:165 +msgid "Comments are disabled on this page." +msgstr "Τα σχόλια είναι απενεργοποιημένα σε αυτή τη σελίδα." + +#: templates/comments/media-js.html:11 +msgid "Replying to comment" +msgstr "Απάντηση σε σχόλιο" + +#: templates/comments/media-js.html:64 +#, python-brace-format +msgid "edit {edits}" +msgstr "επεξεργασία {edits}" + +#: templates/comments/media-js.html:67 +msgid "original" +msgstr "αρχικό" + +#: templates/comments/votes.html:5 +msgid "Voter" +msgstr "Ψηφοφόρος" + +#: templates/comments/votes.html:6 templates/user/user-problems.html:101 +msgid "Score" +msgstr "Βαθμολογία" + +#: templates/comments/votes.html:17 +msgid "No votes" +msgstr "Δεν υπάρχουν ψήφοι" + +#: templates/contest/access_code.html:26 +msgid "Invalid access code." +msgstr "Μη έγκυρος κωδικός πρόσβασης." + +#: templates/contest/access_code.html:29 +msgid "Please enter your access code:" +msgstr "Παρακαλώ εισάγετε τον κωδικό πρόσβασης:" + +#: templates/contest/access_code.html:32 +msgid "Join Contest" +msgstr "Συμμετοχή στο Διαγωνισμό" + +#: templates/contest/calendar.html:12 +msgid "Sunday" +msgstr "Κυριακή" + +#: templates/contest/calendar.html:13 +msgid "Monday" +msgstr "Δευτέρα" + +#: templates/contest/calendar.html:14 +msgid "Tuesday" +msgstr "Τρίτη" + +#: templates/contest/calendar.html:15 +msgid "Wednesday" +msgstr "Τετάρτη" + +#: templates/contest/calendar.html:16 +msgid "Thursday" +msgstr "Πέμπτη" + +#: templates/contest/calendar.html:17 +msgid "Friday" +msgstr "Παρασκευή" + +#: templates/contest/calendar.html:18 +msgid "Saturday" +msgstr "Σάββατο" + +#: templates/contest/clone.html:37 +msgid "Enter a new key for the cloned contest:" +msgstr "Εισάγετε ένα νέο κλειδί για τον κλωνοποιημένο διαγωνισμό:" + +#: templates/contest/clone.html:40 templates/problem/clone.html:40 +msgid "Clone!" +msgstr "Κλωνοποίηση!" + +#: templates/contest/contest-list-tabs.html:7 +msgid "Prev" +msgstr "Προηγ." + +#: templates/contest/contest-list-tabs.html:10 +msgid "Today" +msgstr "Σήμερα" + +#: templates/contest/contest-list-tabs.html:13 +msgid "Next" +msgstr "Επόμενο" + +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "Εξαγωγή" + +#: templates/contest/contest-list-tabs.html:23 +#: templates/problem/problem-list-tabs.html:5 +msgid "List" +msgstr "Λίστα" + +#: templates/contest/contest-list-tabs.html:24 +msgid "Calendar" +msgstr "Ημερολόγιο" + +#: templates/contest/contest-tabs.html:4 +msgid "Info" +msgstr "Πληροφορίες" + +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 +msgid "Statistics" +msgstr "Στατιστικά" + +#: templates/contest/contest-tabs.html:11 +msgid "Rankings" +msgstr "Κατάταξη" + +#: templates/contest/contest-tabs.html:16 +msgid "Hidden Rankings" +msgstr "Κρυφές Κατατάξεις" + +#: templates/contest/contest-tabs.html:21 +msgid "MOSS" +msgstr "MOSS" + +#: templates/contest/contest-tabs.html:26 +msgid "Clone" +msgstr "Κλωνοποίηση" + +#: templates/contest/contest-tabs.html:38 +#: templates/contest/contest-tabs.html:58 +msgid "Leave contest" +msgstr "Έξοδος από διαγωνισμό" + +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 +msgid "Virtual join" +msgstr "Εικονική συμμετοχή" + +#: templates/contest/contest-tabs.html:56 +msgid "Stop spectating" +msgstr "Διακοπή παρακολούθησης" + +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "Συμμετοχή στο διαγωνισμό" + +#: templates/contest/contest-tabs.html:73 +msgid "Spectate contest" +msgstr "Παρακολούθηση διαγωνισμού" + +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." +msgstr "Δεν μπορείτε να συμμετάσχετε σε αυτόν τον διαγωνισμό." + +#: templates/contest/contest-tabs.html:90 +msgid "Log in to participate" +msgstr "Συνδεθείτε για να συμμετάσχετε" + +#: templates/contest/contest.html:37 +msgid "Participating virtually." +msgstr "Εικονική συμμετοχή." + +#: templates/contest/contest.html:43 +msgid "Contest is over." +msgstr "Ο διαγωνισμός τελείωσε." + +#: templates/contest/contest.html:75 +#, python-format +msgid "The author of this contest is %(link_authors)s." +msgid_plural "The authors of this contest are %(link_authors)s." +msgstr[0] "Ο συγγραφέας αυτού του διαγωνισμού είναι %(link_authors)s." +msgstr[1] "Οι συγγραφείς αυτού του διαγωνισμού είναι %(link_authors)s." + +#: templates/contest/contest.html:86 +#, python-format +msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." +msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." +msgstr[0] "Ιδιαίτερες ευχαριστίες στο %(link_testers)s για δοκιμές και σχόλια σχετικά με τα προβλήματα." +msgstr[1] "Ιδιαίτερες ευχαριστίες στους %(link_testers)s για δοκιμές και σχόλια σχετικά με τα προβλήματα." + +#: templates/contest/contest.html:98 +#, python-format +msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για **όλους** τους συμμετέχοντες που έχουν βαθμολογία μεταξύ **%(rating_floor)d** και **%(rating_ceiling)d**, με ανοιχτή πρόσβαση." + +#: templates/contest/contest.html:100 +#, python-format +msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για **όλους** τους συμμετέχοντες που έχουν βαθμολογία τουλάχιστον **%(rating_floor)d**." + +#: templates/contest/contest.html:102 +#, python-format +msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για **όλους** τους συμμετέχοντες που έχουν βαθμολογία το πολύ **%(rating_ceiling)d**." + +#: templates/contest/contest.html:104 +msgid "This contest will be **rated** for **all** participants." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για **όλους** τους συμμετέχοντες." + +#: templates/contest/contest.html:108 +#, python-format +msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για τους συμμετέχοντες που υποβάλλουν τουλάχιστον μία φορά και έχουν βαθμολογία μεταξύ **%(rating_floor)d** και **%(rating_ceiling)d**, με ανοιχτή πρόσβαση." + +#: templates/contest/contest.html:110 +#, python-format +msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για τους συμμετέχοντες που υποβάλλουν τουλάχιστον μία φορά και έχουν βαθμολογία τουλάχιστον **%(rating_floor)d**." + +#: templates/contest/contest.html:112 +#, python-format +msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για τους συμμετέχοντες που υποβάλλουν τουλάχιστον μία φορά και έχουν βαθμολογία το πολύ **%(rating_ceiling)d**." + +#: templates/contest/contest.html:114 +msgid "This contest will be **rated** for participants who submit at least once." +msgstr "Αυτός ο διαγωνισμός θα **αξιολογηθεί** για συμμετέχοντες που θα υποβάλουν τουλάχιστον μία φορά." + +#: templates/contest/contest.html:118 +msgid "This contest will **not** be rated." +msgstr "Αυτός ο διαγωνισμός **δεν** θα αξιολογηθεί." + +#: templates/contest/contest.html:123 +#, python-format +msgid "There is **%(count)s** problem in this contest." +msgid_plural "There are **%(count)s** problems in this contest." +msgstr[0] "Υπάρχει **%(count)s** πρόβλημα ** σε αυτόν τον διαγωνισμό." +msgstr[1] "Υπάρχουν **%(count)s** προβλήματα σε αυτόν τον διαγωνισμό." + +#: templates/contest/contest.html:132 +msgid "**Partial scoring is enabled** for some or all of these problems." +msgstr "**Η μερική βαθμολόγηση είναι ενεργοποιημένη** για μερικά ή όλα τα προβλήματα." + +#: templates/contest/contest.html:134 +msgid "This contest **will not use partial scoring**." +msgstr "Αυτός ο διαγωνισμός **δεν θα χρησιμοποιήσει μερική βαθμολόγηση**." + +#: templates/contest/contest.html:139 +msgid "The pretest system **will be used** for some or all of these problems." +msgstr "Το σύστημα προδοκιμών **θα χρησιμοποιηθεί** για μερικά ή όλα τα προβλήματα." + +#: templates/contest/contest.html:141 +msgid "The pretest system **will not be used** for this contest." +msgstr "Το σύστημα προδοκιμών **δεν θα χρησιμοποιηθεί** για αυτόν τον διαγωνισμό." + +#: templates/contest/contest.html:146 +msgid "Some or all of these problems **have a submission limit**." +msgstr "Μερικά ή όλα τα προβλήματα **έχουν όριο υποβολής**." + +#: templates/contest/contest.html:148 +msgid "There is **no submission limit** for any of these problems." +msgstr "Δεν υπάρχει **όριο υποβολής** για κανένα από αυτά τα προβλήματα." + +#: templates/contest/contest.html:154 +#, python-format +msgid "The contest format is **%(format)s**." +msgstr "Η μορφή του διαγωνισμού είναι **%(format)s**." + +#: templates/contest/contest.html:163 +msgid "The scoreboard will be **visible** for the duration of the contest." +msgstr "Ο πίνακας αποτελεσμάτων θα είναι **ορατός** κατά τη διάρκεια του διαγωνισμού." + +#: templates/contest/contest.html:165 +msgid "The scoreboard will be **hidden** until your window is over." +msgstr "Ο πίνακας αποτελεσμάτων θα είναι **κρυφός** μέχρι το τέλος του χρονικού παραθύρου." + +#: templates/contest/contest.html:167 +msgid "The scoreboard will be **hidden** for the entire duration of the contest." +msgstr "Ο πίνακας αποτελεσμάτων θα είναι **κρυφός** για όλη τη διάρκεια του διαγωνισμού." + +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "Ο πίνακας αποτελεσμάτων θα είναι **κρυφός**, ακόμη και μετά το τέλος του διαγωνισμού." + +#: templates/contest/contest.html:174 +msgid "An **access code is required** to join the contest." +msgstr "Απαιτείται **κωδικός πρόσβασης** για συμμετοχή στο διαγωνισμό." + +#: templates/contest/contest.html:197 +msgid "AC Rate" +msgstr "Ποσοστό AC" + +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 +msgid "Users" +msgstr "Χρήστες" + +#: templates/contest/contest.html:200 +msgid "Editorials" +msgstr "Εξηγήσεις" + +#: templates/contest/contest.html:226 templates/problem/list.html:236 +msgid "Editorial" +msgstr "Εξήγηση" + +#: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 +msgid "Are you sure you want to join?" +msgstr "Είστε βέβαιοι ότι θέλετε να συμμετάσχετε;" + +#: templates/contest/list.html:32 +msgid "Joining a contest for the first time starts your timer, after which it becomes unstoppable." +msgstr "Με τη συμμετοχή σε ένα διαγωνισμό για πρώτη φορά ξεκινά το χρονόμετρο σας, το οποίο, στη συνέχεια, δεν μπορείτε να σταματήσετε." + +#: templates/contest/list.html:65 +msgid "hidden" +msgstr "κρυφό" + +#: templates/contest/list.html:85 +msgid "private" +msgstr "ιδιωτικό" + +#: templates/contest/list.html:90 +msgid "rated" +msgstr "αξιολογημένο" + +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" +msgstr "Συμμετοχή" + +#: templates/contest/list.html:144 +msgid "Spectate" +msgstr "Παρακολούθηση" + +#: templates/contest/list.html:160 +msgid "Active Contests" +msgstr "Ενεργοί Διαγωνισμοί" + +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 +msgid "Contest" +msgstr "Διαγωνισμός" + +#: templates/contest/list.html:202 +msgid "Ongoing Contests" +msgstr "Διαγωνισμοί Σε Εξέλιξη" + +#: templates/contest/list.html:239 +msgid "Upcoming Contests" +msgstr "Διαγωνισμοί Συγγραφής" + +#: templates/contest/list.html:267 +msgid "There are no scheduled contests at this time." +msgstr "Δεν υπάρχουν προγραμματισμένοι διαγωνισμοί αυτή τη στιγμή." + +#: templates/contest/list.html:273 +msgid "Past Contests" +msgstr "Παλαιότεροι Διαγωνισμοί" + +#: templates/contest/media-js.html:4 +msgid "Are you sure you want to leave?" +msgstr "Είστε βέβαιοι ότι θέλετε να φύγετε?" + +#: templates/contest/media-js.html:5 +msgid "You cannot come back to a virtual participation. You will have to start a new one." +msgstr "Δεν μπορείτε να επιστρέψετε σε μια εικονική συμμετοχή. Θα πρέπει να ξεκινήσετε μία νέα." + +#: templates/contest/media-js.html:10 +msgid "Joining a contest starts your timer, after which it becomes unstoppable." +msgstr "Με τη συμμετοχή σε ένα διαγωνισμό ξεκινά το χρονόμετρο σας, το οποίο, στη συνέχεια, δεν μπορείτε να σταματήσετε." + +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "Η συμμετοχή σε αυτόν τον διαγωνισμό θα αφήσει το %(contest)s." + +#: templates/contest/moss.html:28 +msgid "Are you sure you want MOSS the contest?" +msgstr "Είστε βέβαιοι ότι θέλετε MOSS στο διαγωνισμό;" + +#: templates/contest/moss.html:33 +msgid "Are you sure you want to delete the MOSS results?" +msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε τα αποτελέσματα MOSS;" + +#: templates/contest/moss.html:60 +msgid "No submissions" +msgstr "Καμία υποβολή" + +#: templates/contest/moss.html:74 +msgid "Re-MOSS contest" +msgstr "Επαναχρησιμοποίηση MOSS στο διαγωνισμό" + +#: templates/contest/moss.html:82 +msgid "Delete MOSS results" +msgstr "Διαγραφή αποτελεσμάτων MOSS" + +#: templates/contest/private.html:5 +msgid "This contest is private to specific users." +msgstr "Αυτός ο διαγωνισμός είναι ιδιωτικός σε συγκεκριμένους χρήστες." + +#: templates/contest/private.html:11 +msgid "Additionally, only the following organizations may access this contest:" +msgstr "Επιπλέον, μόνο οι ακόλουθοι οργανισμοί μπορούν να έχουν πρόσβαση σε αυτόν τον διαγωνισμό:" + +#: templates/contest/private.html:13 +msgid "Only the following organizations may access this contest:" +msgstr "Μόνο οι ακόλουθοι οργανισμοί μπορούν να έχουν πρόσβαση σε αυτόν τον διαγωνισμό:" + +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "Επιπλέον, μόνο οι ακόλουθες κατηγορίες μπορούν να έχουν πρόσβαση σε αυτόν τον διαγωνισμό:" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "Μόνο οι ακόλουθες κατηγορίες μπορούν να έχουν πρόσβαση σε αυτόν τον διαγωνισμό:" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "Εναλλακτικά, οι ακόλουθες κατηγορίες μπορούν να έχουν πρόσβαση σε αυτόν τον διαγωνισμό:" + +#: templates/contest/ranking-table.html:7 +msgid "Organization" +msgstr "Οργανισμός" + +#: templates/contest/ranking-table.html:27 +#, python-brace-format +msgid "Started on {time}" +msgstr "Ξεκίνησε στις {time}" + +#: templates/contest/ranking-table.html:30 +msgid "Participation ended." +msgstr "Η συμμετοχή έληξε." + +#: templates/contest/ranking-table.html:40 +msgid "Un-Disqualify" +msgstr "Αναίρεση Αποκλεισμού" + +#: templates/contest/ranking-table.html:43 +msgid "Disqualify" +msgstr "Αποκλεισμός" + +#: templates/contest/ranking.html:173 +msgid "Are you sure you want to disqualify this participation?" +msgstr "Είστε βέβαιοι ότι θέλετε να αποκλείσετε αυτή τη συμμετοχή?" + +#: templates/contest/ranking.html:178 +msgid "Are you sure you want to un-disqualify this participation?" +msgstr "Είστε βέβαιοι ότι θέλετε να αναιρέσεται τον αποκλεισμό αυτής της συμμετοχής?" + +#: templates/contest/ranking.html:250 +msgid "View user participation" +msgstr "Προβολή συμμετοχής χρήστη" + +#: templates/contest/ranking.html:254 +msgid "Show organizations" +msgstr "Εμφάνιση οργανισμών" + +#: templates/contest/stats.html:38 +msgid "Problem Status Distribution" +msgstr "Κατανομή Κατάστασης Προβλήματος" + +#: templates/contest/stats.html:43 +msgid "Problem AC Rate" +msgstr "Ποσοστό AC προβλήματος" + +#: templates/contest/stats.html:48 templates/stats/language.html:16 +msgid "Submissions by Language" +msgstr "Υποβολές ανά Γλώσσα" + +#: templates/contest/stats.html:54 templates/stats/language.html:26 +msgid "Language AC Rate" +msgstr "Ποσοστό AC Γλώσσας" + +#: templates/license.html:12 +msgid "Source:" +msgstr "Πηγή:" + +#: templates/newsletter/common.html:6 +#: templates/newsletter/subscription_unsubscribe_activated.html:3 +#: templates/newsletter/subscription_unsubscribe_activated.html:6 +#: templates/newsletter/subscription_update_activated.html:3 +#: templates/newsletter/subscription_update_activated.html:6 +msgid "Newsletter" +msgstr "Ενημερωτικό Δελτίο" + +#: templates/newsletter/subscription_unsubscribe_activated.html:3 +#: templates/newsletter/subscription_unsubscribe_activated.html:6 +#: templates/newsletter/subscription_update_activated.html:3 +#: templates/newsletter/subscription_update_activated.html:6 +msgid "activate" +msgstr "ενεργοποίηση" + +#: templates/newsletter/subscription_unsubscribe_activated.html:8 +msgid "You have successfully been unsubscribed." +msgstr "Καταργήσατε τη συνδρομή σας με επιτυχία" + +#: templates/newsletter/subscription_unsubscribe_email_sent.html:3 +#: templates/newsletter/subscription_unsubscribe_email_sent.html:6 +#: templates/newsletter/subscription_unsubscribe_user.html:3 +#: templates/newsletter/subscription_unsubscribe_user.html:6 +msgid "Newsletter unsubscribe" +msgstr "Κατάργηση συνδρομής ενημερωτικού δελτίου" + +#: templates/newsletter/subscription_unsubscribe_email_sent.html:8 +msgid "Your unsubscription request has successfully been received. An email has been sent to you with a link you need to follow in order to confirm your unsubscription." +msgstr "Το αίτημα κατάργησης της συνδρομής σας έχει ληφθεί με επιτυχία. Ένα μήνυμα ηλεκτρονικού ταχυδρομείου έχει σταλεί σε σας με έναν σύνδεσμο που πρέπει να ακολουθήσετε για να επιβεβαιώσετε τη διαγραφή σας." + +#: templates/newsletter/subscription_unsubscribe_user.html:17 +msgid "Do you want to unsubscribe from this newsletter?" +msgstr "Θέλετε να διαγραφείτε από αυτό το ενημερωτικό δελτίο?" + +#: templates/newsletter/subscription_unsubscribe_user.html:21 +msgid "Unsubscribe" +msgstr "Κατάργηση συνδρομής" + +#: templates/newsletter/subscription_update.html:3 +#: templates/newsletter/subscription_update.html:6 +#: templates/newsletter/subscription_update_email_sent.html:3 +#: templates/newsletter/subscription_update_email_sent.html:6 +msgid "Newsletter update" +msgstr "Ενημέρωση ενημερωτικού δελτίου" + +#: templates/newsletter/subscription_update.html:9 +msgid "Due to a technical error we were not able to submit your confirmation email. This could be because your email address is invalid." +msgstr "Λόγω τεχνικού σφάλματος, δεν μπορέσαμε να υποβάλουμε το email επιβεβαίωσης. Αυτό μπορεί να οφείλεται σε μη έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου." + +#: templates/newsletter/subscription_update.html:14 +msgid "Update subscription" +msgstr "Ενημέρωση συνδρομής" + +#: templates/newsletter/subscription_update_activated.html:8 +msgid "Your subscription has successfully been updated." +msgstr "Η συνδρομή σας έχει ενημερωθεί με επιτυχία." + +#: templates/newsletter/subscription_update_email_sent.html:8 +msgid "Your update request was successfully received and an activation email has been sent to you. In that email you will find a link which you need to follow in order to update your subscription." +msgstr "Το αίτημά ενημέρωσης έχει ληφθεί με επιτυχία και σας έχει αποσταλεί ένα email ενεργοποίησης. Σε αυτό το email θα βρείτε έναν σύνδεσμο που πρέπει να ακολουθήσετε για να ενημερώσετε τη συνδρομή σας." + +#: templates/organization/edit.html:47 +#: templates/organization/requests/pending.html:34 +#: templates/ticket/edit-notes.html:4 +msgid "Update" +msgstr "Ενημέρωση" + +#: templates/organization/home.html:28 +msgid "Are you sure you want to leave this organization?" +msgstr "Είστε βέβαιοι ότι θέλετε να εγκαταλείψετε αυτό τον οργανισμό;" + +#: templates/organization/home.html:30 +msgid "You will have to rejoin to show up on the organization leaderboard." +msgstr "Θα πρέπει να επανεγγραφείτε για να εμφανίζεστε στον πίνακα κατάταξης του οργανισμού." + +#: templates/organization/home.html:32 +msgid "You will have to request membership in order to join again." +msgstr "Θα πρέπει να κάνετε αίτηση ιδιότητας μέλους για να συμμετάσχετε ξανά." + +#: templates/organization/home.html:45 +msgid "Leave organization" +msgstr "Αποχώρηση από τον οργανισμό" + +#: templates/organization/home.html:50 +msgid "Join organization" +msgstr "Εγγραφή στον οργανισμό" + +#: templates/organization/home.html:54 +msgid "Request membership" +msgstr "Αίτηση ιδιότητας μέλους" + +#: templates/organization/home.html:60 +msgid "Edit organization" +msgstr "Επεξεργασία οργανισμού" + +#: templates/organization/home.html:65 +msgid "View requests" +msgstr "Προβολή αιτήσεων" + +#: templates/organization/home.html:71 +msgid "Admin organization" +msgstr "Διαχειριστής οργανισμού" + +#: templates/organization/home.html:76 +msgid "View members" +msgstr "Προβολή μελών" + +#: templates/organization/home.html:88 +msgid "Class" +msgstr "Κατηγορία" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "Εγγεγραμμένος" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "Αίτηση εγγραφής" + +#: templates/organization/list.html:23 templates/status/language-list.html:35 +msgid "Name" +msgstr "Όνομα" + +#: templates/organization/list.html:24 +msgid "Members" +msgstr "Μέλη" + +#: templates/organization/new.html:10 templates/ticket/new.html:39 +msgid "Create" +msgstr "Δημιουργία" + +#: templates/organization/requests/detail.html:13 +msgid "User:" +msgstr "Χρήστης:" + +#: templates/organization/requests/detail.html:17 +msgid "Organization:" +msgstr "Οργανισμός:" + +#: templates/organization/requests/detail.html:25 +msgid "Time:" +msgstr "Ώρα:" + +#: templates/organization/requests/detail.html:29 +msgid "Reason:" +msgstr "Αιτία:" + +#: templates/organization/requests/log.html:11 +#: templates/organization/requests/pending.html:14 +msgid "State" +msgstr "Κατάσταση" + +#: templates/organization/requests/log.html:12 +#: templates/organization/requests/pending.html:15 +msgid "Reason" +msgstr "Αιτία" + +#: templates/organization/requests/log.html:28 +#: templates/organization/requests/pending.html:37 +msgid "There are no requests to approve." +msgstr "Δεν υπάρχουν αιτήσεις για έγκριση." + +#: templates/organization/requests/pending.html:17 +#: templates/problem/data.html:392 +msgid "Delete?" +msgstr "Διαγραφή?" + +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "Επιλέξτε την κατηγορία σας:" + +#: templates/organization/requests/request.html:27 +msgid "Your reason for joining:" +msgstr "Ο λόγος για την εγγραφή σας:" + +#: templates/organization/requests/request.html:29 +msgid "Request" +msgstr "Αίτηση" + +#: templates/organization/requests/tabs.html:4 +msgid "Pending" +msgstr "Εκκρεμεί" + +#: templates/organization/requests/tabs.html:7 +msgid "Log" +msgstr "Αρχείο καταγραφής" + +#: templates/organization/requests/tabs.html:10 +msgid "Approved" +msgstr "Εγκρίθηκε" + +#: templates/organization/requests/tabs.html:13 +msgid "Rejected" +msgstr "Απορρίφθηκε" + +#: templates/organization/users-table.html:15 +msgid "Kick" +msgstr "Αποβολή" + +#: templates/organization/users.html:34 +msgid "Are you sure you want to kick this user?" +msgstr "Είστε βέβαιοι ότι θέλετε να αποβάλλετε αυτόν τον χρήστη;" + +#: templates/pagedown.html:10 +msgid "Update preview" +msgstr "Ενημέρωση προεπισκόπησης" + +#: templates/problem/clone.html:37 +msgid "Enter a new code for the cloned problem:" +msgstr "Εισάγετε έναν νέο κωδικό για το κλωνοποιημένο πρόβλημα:" + +#: templates/problem/data.html:344 +msgid "View YAML" +msgstr "Προβολή YAML" + +#: templates/problem/data.html:360 +msgid "Show columns:" +msgstr "Εμφάνιση στηλών:" + +#: templates/problem/data.html:363 templates/problem/data.html:387 +msgid "Output prefix" +msgstr "Πρόθεμα εξόδου" + +#: templates/problem/data.html:367 templates/problem/data.html:388 +msgid "Output limit" +msgstr "Όριο εξόδου" + +#: templates/problem/data.html:371 templates/problem/data.html:389 +msgid "Checker" +msgstr "Ελεγκτής" + +#: templates/problem/data.html:375 templates/problem/data.html:390 +msgid "Generator args" +msgstr "Ορίσματα γεννήτριας" + +#: templates/problem/data.html:382 +msgid "Type" +msgstr "Τύπος" + +#: templates/problem/data.html:383 +msgid "Input file" +msgstr "Αρχείο εισόδου" + +#: templates/problem/data.html:384 +msgid "Output file" +msgstr "Αρχείο εξόδου" + +#: templates/problem/data.html:386 +msgid "Pretest?" +msgstr "Προδοκιμή;" + +#: templates/problem/data.html:438 templates/problem/submit.html:257 +msgid "Submit!" +msgstr "Υποβολή!" + +#: templates/problem/data.html:439 +msgid "Add new case" +msgstr "Προσθήκη νέας περίπτωσης" + +#: templates/problem/data.html:441 +msgid "Save" +msgstr "Αποθήκευση" + +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." +msgstr "Θυμηθείτε να χρησιμοποιήσετε αυτήν την εξήγηση **μόνο** όταν κολλήσετε, και όχι **για να αντιγράψετε-επικολλήσετε τον κώδικα από αυτήν**. Παρακαλώ σεβαστείτε τον συγγραφέα του προβλήματος και τον συντάκτη της εξήγησης." + +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "Η υποβολή επίσημης λύσης πριν από την επίλυση του προβλήματος είναι αδίκημα που μπορεί να προκαλέσει τον αποκλεισμό του χρήστη." + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 +msgid "Author:" +msgid_plural "Authors:" +msgstr[0] "Συγγραφέας:" +msgstr[1] "Συγγραφείς:" + +#: templates/problem/list.html:62 +msgid "Filter by type..." +msgstr "Φιλτράρισμα ανά τύπο..." + +#: templates/problem/list.html:183 +msgid "Hot problems" +msgstr "Χοτ προβλήματα" + +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 +msgid "Category" +msgstr "Κατηγορία" + +#: templates/problem/list.html:207 templates/problem/list.html:227 +msgid "Types" +msgstr "Τύποι" + +#: templates/problem/list.html:234 +#, python-format +msgid "AC %%" +msgstr "AC %%" + +#: templates/problem/manage_submission.html:55 +msgid "Leave empty to not filter by language" +msgstr "Αφήστε κενό για να μην φιλτράρετε ανά γλώσσα" + +#: templates/problem/manage_submission.html:60 +msgid "Leave empty to not filter by result" +msgstr "Αφήστε κενό για να μην φιλτράρετε ανά αποτέλεσμα" + +#: templates/problem/manage_submission.html:79 +msgid "Need valid values for both start and end IDs." +msgstr "Χρειάζονται έγκυρες τιμές τόσο για αναγνωριστικά (ID) έναρξης όσο και τέλους." + +#: templates/problem/manage_submission.html:82 +msgid "End ID must be after start ID." +msgstr "Το ID λήξης πρέπει να βρίσκεται μετά το ID έναρξης." + +#: templates/problem/manage_submission.html:90 +#, python-brace-format +msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" +msgstr "Πρόκειται να κρίνετε εκ νέου {count} υποβολές. Είστε σίγουροι ότι θέλετε να το κάνετε;" + +#: templates/problem/manage_submission.html:96 +msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" +msgstr "Πρόκειται να κρίνετε εκ νέου μερικές υποβολές. Είστε σίγουροι ότι θέλετε να το κάνετε;" + +#: templates/problem/manage_submission.html:115 +msgid "Rejudge Submissions" +msgstr "Κρίση εκ νέου Υποβολών" + +#: templates/problem/manage_submission.html:120 +msgid "Filter by ID:" +msgstr "Φιλτράρισμα ανά ID:" + +#: templates/problem/manage_submission.html:123 +msgid "Starting ID:" +msgstr "ID Έναρξης:" + +#: templates/problem/manage_submission.html:127 +msgid "Ending ID:" +msgstr "ID Λήξης:" + +#: templates/problem/manage_submission.html:131 +msgid "This range includes both endpoints." +msgstr "Αυτό το εύρος περιλαμβάνει και τα δύο τελικά σημεία." + +#: templates/problem/manage_submission.html:134 +msgid "Filter by language:" +msgstr "Φιλτράρισμα ανά γλώσσα" + +#: templates/problem/manage_submission.html:150 +msgid "Rejudge selected submissions" +msgstr "Κρίση εκ νέου επιλεγμένων υποβολών" + +#: templates/problem/manage_submission.html:157 +msgid "Rescore Everything" +msgstr "Αναβαθμολόγηση Όλων" + +#: templates/problem/manage_submission.html:158 +#, python-format +msgid "This will rescore %(count)d submissions." +msgstr "Αυτό θα αναβαθμολογήσει %(count)d υποβολές." + +#: templates/problem/manage_submission.html:162 +#, python-format +msgid "Are you sure you want to rescore %(count)d submissions?" +msgstr "Είστε βέβαιοι ότι θέλετε να αναβαθμολογήσετε %(count)d υποβολές;" + +#: templates/problem/manage_submission.html:163 +msgid "Rescore all submissions" +msgstr "Αναβαθμολόγηση όλων των υποβολών" + +#: templates/problem/problem.html:91 +msgid "View as PDF" +msgstr "Προβολή ως PDF" + +#: templates/problem/problem.html:101 templates/problem/problem.html:111 +#: templates/problem/problem.html:116 +msgid "Submit solution" +msgstr "Υποβολή λύσης" + +#: templates/problem/problem.html:104 +#, python-format +msgid "%(counter)s submission left" +msgid_plural "%(counter)s submissions left" +msgstr[0] "απομένει %(counter)s υποβολή" +msgstr[1] "απομένουν %(counter)s υποβολές" + +#: templates/problem/problem.html:112 +msgid "0 submissions left" +msgstr "απομένουν 0 υποβολές" + +#: templates/problem/problem.html:124 +msgid "My submissions" +msgstr "Οι Υποβολές Μου" + +#: templates/problem/problem.html:128 +msgid "Best submissions" +msgstr "Οι καλύτερες υποβολές" + +#: templates/problem/problem.html:131 +msgid "Read editorial" +msgstr "Ανάγνωση εξήγησης" + +#: templates/problem/problem.html:136 +msgid "Manage tickets" +msgstr "Διαχείριση αιτημάτων" + +#: templates/problem/problem.html:140 +msgid "Edit problem" +msgstr "Επεξεργασία προβλήματος" + +#: templates/problem/problem.html:142 +msgid "Edit test data" +msgstr "Επεξεργασία δεδομένων δοκιμής" + +#: templates/problem/problem.html:147 +msgid "My tickets" +msgstr "Τα αιτήματά μου" + +#: templates/problem/problem.html:155 +msgid "Manage submissions" +msgstr "Διαχείρηση υποβολών" + +#: templates/problem/problem.html:168 +msgid "Points:" +msgstr "Πόντοι:" + +#: templates/problem/problem.html:171 templates/problem/problem.html:173 +msgid "(partial)" +msgstr "(εν μέρει)" + +#: templates/problem/problem.html:178 +msgid "Time limit:" +msgstr "Χρονικό όριο:" + +#: templates/problem/problem.html:190 +msgid "Memory limit:" +msgstr "Όριο μνήμης:" + +#: templates/problem/problem.html:226 +msgid "Problem type" +msgid_plural "Problem types" +msgstr[0] "Τύπος προβλήματος" +msgstr[1] "Τύποι προβλήματος" + +#: templates/problem/problem.html:239 +msgid "Allowed languages" +msgstr "Επιτρεπόμενες γλώσσες" + +#: templates/problem/problem.html:247 +#, python-format +msgid "No %(lang)s judge online" +msgstr "Κανένας κριτής %(lang)s συνδεδεμένος" + +#: templates/problem/problem.html:258 +msgid "Judge:" +msgid_plural "Judges:" +msgstr[0] "Κριτής:" +msgstr[1] "Κριτές:" + +#: templates/problem/problem.html:275 +msgid "none available" +msgstr "κανένας διαθέσιμος" + +#: templates/problem/problem.html:300 +msgid "Request clarification" +msgstr "Αίτηση διευκρίνισης" + +#: templates/problem/problem.html:302 +msgid "Report an issue" +msgstr "Αναφορά προβλήματος" + +#: templates/problem/raw.html:62 +msgid "Time Limit:" +msgstr "Χρονικό όριο:" + +#: templates/problem/raw.html:71 +msgid "Memory Limit:" +msgstr "Όριο Μνήμης:" + +#: templates/problem/search-form.html:2 +msgid "Problem search" +msgstr "Αναζήτηση προβλήματος" + +#: templates/problem/search-form.html:8 +msgid "Search problems..." +msgstr "Αναζήτηση προβλημάτων..." + +#: templates/problem/search-form.html:14 +msgid "Full text search" +msgstr "Αναζήτηση πλήρους κειμένου" + +#: templates/problem/search-form.html:21 +msgid "Hide solved problems" +msgstr "Απόκρυψη λυμένων προβλημάτων" + +#: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "Έχει εξήγηση" + +#: templates/problem/search-form.html:32 +msgid "Show problem types" +msgstr "Εμφάνιση τύπων προβλήματος" + +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 +#: templates/submission/submission-list-tabs.html:4 +msgid "All" +msgstr "Όλα" + +#: templates/problem/search-form.html:51 +msgid "Problem types" +msgstr "Τύποι προβλήματος" + +#: templates/problem/search-form.html:62 +msgid "Point range" +msgstr "Εύρος πόντων" + +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 +msgid "Go" +msgstr "Μετάβαση" + +#: templates/problem/search-form.html:69 +msgid "Random" +msgstr "Τυχαίο" + +#: templates/problem/submit.html:117 +msgid "Your source code must contain at most 65536 characters." +msgstr "Ο πηγαίος κώδικας σας πρέπει να περιέχει το πολύ 65536 χαρακτήρες." + +#: templates/problem/submit.html:204 +msgid "Warning!" +msgstr "Προσοχή!" + +#: templates/problem/submit.html:214 +#, python-format +msgid "You have %(left)s submission left" +msgid_plural "You have %(left)s submissions left" +msgstr[0] "Σας έχει απομείνει %(left)s υποβολή" +msgstr[1] "Σας έχουν απομείνει %(left)s υποβολές" + +#: templates/problem/submit.html:219 +msgid "You have 0 submissions left" +msgstr "Σας έχουν απομείνει 0 υποβολές" + +#: templates/problem/submit.html:253 +msgid "No judge is available for this problem." +msgstr "Κανένας κριτής δεν είναι διαθέσιμος για αυτό το πρόβλημα." + +#: templates/registration/activate.html:3 +#, python-format +msgid "%(key)s is an invalid activation key." +msgstr "%(key)s δεν είναι έγκυρο κλειδί ενεργοποίησης." + +#: templates/registration/activation_complete.html:3 +msgid "Your account has been successfully activated." +msgstr "Ο λογαριασμός σας ενεργοποιήθηκε επιτυχώς." + +#: templates/registration/login.html:35 +msgid "Invalid username or password." +msgstr "Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης." + +#: templates/registration/login.html:53 +#: templates/registration/two_factor_auth.html:92 +msgid "Login!" +msgstr "Σύνδεση!" + +#: templates/registration/login.html:56 +msgid "Forgot your password?" +msgstr "Ξεχάσατε τον κωδικό σας;" + +#: templates/registration/login.html:59 +msgid "Or log in with..." +msgstr "Ή συνδεθείτε με..." + +#: templates/registration/logout.html:3 +msgid "See you later!" +msgstr "Τα λέμε αργότερα!" + +#: templates/registration/password_change_done.html:3 +msgid "Your password was successfully changed." +msgstr "Ο κωδικός σας άλλαξε επιτυχώς." + +#: templates/registration/password_change_form.html:13 +msgid "Change Password" +msgstr "Αλλαγή Κωδικού Πρόσβασης" + +#: templates/registration/password_reset.html:7 +msgid "Send Reset Email" +msgstr "Αποστολή Email Επαναφοράς" + +#: templates/registration/password_reset_complete.html:3 +msgid "Your password has been set. You may go ahead and log in now" +msgstr "Ο κωδικός πρόσβασής σας έχει οριστεί. Μπορείτε τώρα να συνδεθείτε" + +#: templates/registration/password_reset_confirm.html:9 +msgid "Reset Password" +msgstr "Επαναφορά Κωδικού Πρόσβασης" + +#: templates/registration/password_reset_confirm.html:12 +msgid "Invalid password reset link." +msgstr "Μη έγκυρος σύνδεσμος επαναφοράς κωδικού πρόσβασης." + +#: templates/registration/password_reset_done.html:4 +msgid "We've emailed you instructions for setting your password. You should be receiving them shortly." +msgstr "Σας στείλαμε μήνυμα ηλεκτρονικού ταχυδρομείου με οδηγίες για τον ορισμό του κωδικού πρόσβασής σας. Θα πρέπει να το λάβετε σύντομα." + +#: templates/registration/password_reset_done.html:5 +msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." +msgstr "Εάν δεν λάβετε email, βεβαιωθείτε ότι έχετε εισάγει τη διεύθυνση με την οποία έχετε εγγραφεί, και ελέγξτε το φάκελο ανεπιθύμητης αλληλογραφίας σας." + +#: templates/registration/password_reset_email.html:9 +#, python-format +msgid "\n" +"Forgot your password on the %(site_name)s? Don't worry!

\n" +"To reset the password for your account \"%(username)s\", click the button below.\n" +msgstr "\n" +"Ξεχάσατε τον κωδικό σας στο %(site_name)s? Μην ανησυχείτε!

\n" +"Για να επαναφέρετε τον κωδικό πρόσβασης για το λογαριασμό σας \"%(username)s\", κάντε κλικ στο παρακάτω κουμπί.\n" + +#: templates/registration/password_reset_email.html:17 +msgid "See you soon! If you have problems resetting your email, feel free to shoot us an email at" +msgstr "Τα λέμε σύντομα! Αν έχετε πρόβλημα με την επαναφορά του email σας, μη διστάσετε να μας στείλετε ένα email στο" + +#: templates/registration/password_reset_email.html:19 +msgid "See you soon!" +msgstr "Τα λέμε σύντομα!" + +#: templates/registration/password_reset_email.txt:1 +#, python-format +msgid "You're receiving this email because you requested a password reset for your user account at %(site_name)s." +msgstr "Λαμβάνετε αυτό το μήνυμα επειδή ζητήσατε επαναφορά κωδικού πρόσβασης για το λογαριασμό χρήστη σας στο %(site_name)s." + +#: templates/registration/password_reset_email.txt:3 +msgid "Please go to the following page and choose a new password:" +msgstr "Παρακαλώ μεταβείτε στην ακόλουθη σελίδα και επιλέξτε ένα νέο κωδικό πρόσβασης:" + +#: templates/registration/password_reset_email.txt:7 +msgid "Your username, in case you've forgotten:" +msgstr "Το όνομα χρήστη σας, σε περίπτωση που τον έχετε ξεχάσει:" + +#: templates/registration/password_reset_email.txt:9 +msgid "Thanks for using our site!" +msgstr "Σας ευχαριστούμε που χρησιμοποιήσατε την ιστοσελίδα μας!" + +#: templates/registration/password_reset_email.txt:11 +#, python-format +msgid "The %(site_name)s team" +msgstr "Η %(site_name)s ομάδα" + +#: templates/registration/password_reset_subject.txt:1 +#, python-format +msgid "Password reset on %(site_name)s" +msgstr "Επαναφορά κωδικού πρόσβασης στο %(site_name)s" + +#: templates/registration/profile_creation.html:36 +#: templates/registration/username_select.html:7 +msgid "Continue >" +msgstr "Συνέχεια >" + +#: templates/registration/registration_closed.html:3 +msgid "Registration is currently closed. Please contact an administrator." +msgstr "Οι εγγραφές είναι κλειστές. Επικοινωνήστε με το διαχειριστή." + +#: templates/registration/registration_complete.html:3 +msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." +msgstr "Έχετε εγγραφεί με επιτυχία. Ένα μήνυμα ηλεκτρονικού ταχυδρομείου έχει σταλεί στη διεύθυνση που δώσατε για επιβεβαίωση της εγγραφής σας." + +#: templates/registration/registration_form.html:164 +msgid "(again, for confirmation)" +msgstr "(ξανά, για επιβεβαίωση)" + +#: templates/registration/registration_form.html:171 +msgid "(select your closest major city)" +msgstr "(επιλέξτε την κοντινότερη μεγάλη πόλη)" + +#: templates/registration/registration_form.html:176 +msgid "pick from map" +msgstr "επιλογή από χάρτη" + +#: templates/registration/registration_form.html:181 +msgid "Default language" +msgstr "Προεπιλεγμένη γλώσσα" + +#: templates/registration/registration_form.html:184 +#: templates/user/edit-profile.html:314 +msgid "Affiliated organizations" +msgstr "Συνδεδεμένοι οργανισμοί" + +#: templates/registration/registration_form.html:190 +#: templates/user/edit-profile.html:328 +msgid "Notify me about upcoming contests" +msgstr "Ειδοποιήστε με για επερχόμενους διαγωνισμούς" + +#: templates/registration/registration_form.html:204 +msgid "By registering, you agree to our" +msgstr "Με την εγγραφή σας, συμφωνείτε με" + +#: templates/registration/registration_form.html:205 +msgid "Terms & Conditions" +msgstr "Όροι & Προϋποθέσεις" + +#: templates/registration/registration_form.html:208 +msgid "Register!" +msgstr "Εγγραφή!" + +#: templates/registration/totp_disable.html:31 +msgid "To protect your account, you must first authenticate before you can disable Two Factor Authentication." +msgstr "Για να προστατεύσετε τον λογαριασμό σας, πρέπει πρώτα να ταυτοποιήσετε την ταυτότητά σας για να απενεργοποιήσετε την ταυτοποίηση δύο παραγόντων." + +#: templates/registration/totp_disable.html:38 +msgid "Enter the 6-digit code generated by your app or one of your 16-digit scratch codes:" +msgstr "Εισάγετε τον 6-ψήφιο κωδικό που δημιουργήθηκε από την εφαρμογή σας ή έναν από τους 16-ψήφιους κώδικες scratch:" + +#: templates/registration/totp_disable.html:41 +msgid "Disable Two Factor Authentication" +msgstr "Απενεργοποίηση Ταυτοποίησης Δύο Παραγόντων" + +#: templates/registration/totp_enable.html:72 +msgid "Scan this code with your authenticator app:" +msgstr "Σαρώστε αυτόν τον κωδικό με την εφαρμογή επαλήθευσης:" + +#: templates/registration/totp_enable.html:73 +msgid "QR code" +msgstr "QR κωδικός" + +#: templates/registration/totp_enable.html:74 +msgid "Or enter this code manually:" +msgstr "Ή εισάγετε αυτόν τον κωδικό χειροκίνητα:" + +#: templates/registration/totp_enable.html:85 +msgid "Enter the 6-digit code generated by your app:" +msgstr "Εισάγετε τον 6-ψήφιο κωδικό που παράχθηκε από την εφαρμογή σας:" + +#: templates/registration/totp_enable.html:90 +msgid "Refresh Two Factor Authentication" +msgstr "Ανανέωση Ταυτοποίησης Δύο Παραγόντων" + +#: templates/registration/totp_enable.html:92 +msgid "Enable Two Factor Authentication" +msgstr "Ενεργοποίηση Ταυτοποίησης Δύο Παραγόντων" + +#: templates/registration/totp_enable.html:98 +msgid "Below is a list of one-time use scratch codes." +msgstr "Παρακάτω είναι μια λίστα μίας χρήσης κωδικών scratch." + +#: templates/registration/totp_enable.html:99 +msgid "These codes can only be used once and are for emergency use." +msgstr "Οι κωδικοί αυτοί μπορούν να χρησιμοποιηθούν μόνο μία φορά και προορίζονται για επείγουσα χρήση." + +#: templates/registration/totp_enable.html:100 +msgid "You can use these codes to login to your account or disable two-factor authentication." +msgstr "Μπορείτε να χρησιμοποιήσετε αυτούς τους κωδικούς για να συνδεθείτε στο λογαριασμό σας ή να απενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων." + +#: templates/registration/totp_enable.html:101 +msgid "If you ever need more scratch codes, you can regenerate them on the edit profile tab." +msgstr "Εάν χρειάζεστε ποτέ περισσότερους κώδικες scratch, μπορείτε να τους παράξετε εκ νέου στην καρτέλα επεξεργασίας προφίλ." + +#: templates/registration/totp_enable.html:102 +msgid "Please write these down and keep them in a secure location." +msgstr "Παρακαλώ καταγράψτε και αποθηκεύστε τους σε ασφαλές σημείο." + +#: templates/registration/totp_enable.html:103 +msgid "These codes will never be shown again after you enable two-factor authentication." +msgstr "Αυτοί οι κωδικοί δε θα εμφανιστούν ξανά μετά την ενεργοποίηση της ταυτοποίησης δύο παραγόντων." + +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "Σημαντικό" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "Αν χάσετε τη συσκευή ελέγχου ταυτότητας και δεν μπορείτε να χρησιμοποιήσετε τους κωδικούς scratch, %(site_name)s διαχειριστές ΔΕΝ θα είναι σε θέση να ανακτήσουν το λογαριασμό σας. Παρακαλώ κρατήστε τους κωδικούς scratch σας ασφαλείς!" + +#: templates/registration/two_factor_auth.html:33 +#: templates/user/edit-profile.html:165 +msgid "WebAuthn is not supported by your browser." +msgstr "Το πρόγραμμα περιήγησης σας δεν υποστηρίζει WebAuthn." + +#: templates/registration/two_factor_auth.html:54 +#: templates/user/edit-profile.html:189 +msgid "Failed to contact server." +msgstr "Αποτυχία επικοινωνίας με το διακομιστή." + +#: templates/registration/two_factor_auth.html:79 +msgid "Enter the 6-digit code generated by your app or one of your 16-character scratch codes:" +msgstr "Εισάγετε τον 6-ψήφιο κωδικό που παράχθηκε από την εφαρμογή σας ή έναν από τους κωδικούς scratch 16-χαρακτήρων:" + +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" +msgstr "Εισάγετε έναν από τους κωδικούς scratch 16-χαρακτήρων:" + +#: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "Χρήση κλειδιού ασφαλείας" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "Χρήση κωδικού scratch" + +#: templates/registration/two_factor_auth.html:98 +#, python-format +msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." +msgstr "Αν χάσατε τη συσκευή ελέγχου ταυτότητας και δεν μπορείτε να χρησιμοποιήσετε τους κωδικούς scratch, παρακαλούμε επικοινωνήστε μαζί μας στο %(email)s." + +#: templates/stats/language.html:11 +msgid "Submission Statistics" +msgstr "Στατιστικά Υποβολής" + +#: templates/stats/language.html:21 +msgid "AC Submissions by Language" +msgstr "AC Υποβολές ανά γλώσσα" + +#: templates/status/judge-status-table.html:2 +msgid "Judge" +msgstr "Κριτής" + +#: templates/status/judge-status-table.html:4 +msgid "Online" +msgstr "Συνδεδεμένος" + +#: templates/status/judge-status-table.html:6 +msgid "Uptime" +msgstr "Χρόνος λειτουργίας" + +#: templates/status/judge-status-table.html:7 +msgid "Ping" +msgstr "Πινγκ" + +#: templates/status/judge-status-table.html:8 +msgid "Load" +msgstr "Φορτίο" + +#: templates/status/judge-status-table.html:34 +#: templates/status/judge-status-table.html:41 +#: templates/status/judge-status-table.html:48 +#: templates/status/judge-status-table.html:59 +msgid "N/A" +msgstr "Δ/Υ" + +#: templates/status/judge-status-table.html:64 +msgid "There are no judges available at this time." +msgstr "Δεν υπάρχουν διαθέσιμοι κριτές αυτή τη στιγμή." + +#: templates/status/language-list.html:34 templates/ticket/list.html:264 +msgid "ID" +msgstr "ID" + +#: templates/status/language-list.html:36 +msgid "Runtime Info" +msgstr "Πληροφορίες Χρόνου Εκτέλεσης" + +#: templates/status/status-tabs.html:4 +msgid "Judges" +msgstr "Κριτές" + +#: templates/status/status-tabs.html:6 +msgid "Version Matrix" +msgstr "Πίνακας Έκδοσης" + +#: templates/submission/internal-error-message.html:3 +#, python-format +msgid "An internal error occurred while grading, and the %(SITE_NAME)s administrators have been notified.
In the meantime, try resubmitting in a few seconds." +msgstr "Παρουσιάστηκε ένα εσωτερικό σφάλμα κατά τη βαθμολόγηση, και οι %(SITE_NAME)s διαχειριστές έχουν ειδοποιηθεί.
Εν τω μεταξύ, προσπαθήστε να υποβάλετε ξανά σε λίγα δευτερόλεπτα." + +#: templates/submission/internal-error-message.html:8 +msgid "An internal error occurred while grading." +msgstr "Παρουσιάστηκε ένα εσωτερικό σφάλμα κατά την βαθμολόγηση." + +#: templates/submission/internal-error-message.html:15 +msgid "Error information" +msgstr "Πληροφορίες σφάλματος" + +#: templates/submission/list.html:76 +msgid "Filter by status..." +msgstr "Φιλτράρισμα ανά κατάσταση..." + +#: templates/submission/list.html:82 +msgid "Filter by language..." +msgstr "Φιλτράρισμα ανά γλώσσα..." + +#: templates/submission/list.html:306 +msgid "Filter submissions" +msgstr "Φίλτρο υποβολών" + +#: templates/submission/list.html:342 +msgid "Total:" +msgstr "Σύνολο:" + +#: templates/submission/list.html:352 +msgid "You were disconnected. Refresh to show latest updates." +msgstr "Αποσυνδεθήκατε. Ανανεώστε για να εμφανιστούν οι τελευταίες ενημερώσεις." + +#: templates/submission/row.html:44 +#, python-format +msgid "Case #%(case)s" +msgstr "Περίπτωση #%(case)s" + +#: templates/submission/row.html:54 +msgid "view" +msgstr "προβολή" + +#: templates/submission/row.html:59 +msgid "rejudge" +msgstr "κρίση εκ νέου" + +#: templates/submission/row.html:64 +msgid "This submission has been locked, and cannot be rejudged." +msgstr "Αυτή η υποβολή έχει κλειδωθεί και δεν μπορεί να κριθεί εκ νεόυ." + +#: templates/submission/row.html:65 +msgid "locked" +msgstr "κλειδωμένο" + +#: templates/submission/row.html:71 +msgid "admin" +msgstr "διαχειριστής" + +#: templates/submission/source.html:25 +msgid "View status" +msgstr "Προβολή κατάστασης" + +#: templates/submission/source.html:26 +msgid "View raw source" +msgstr "Προβολή πηγαίου κώδικα" + +#: templates/submission/source.html:28 templates/submission/status.html:74 +msgid "Resubmit" +msgstr "Επανυποβολή" + +#: templates/submission/status-testcases.html:10 +msgid "We are waiting for a suitable judge to process your submission..." +msgstr "Αναμένουμε έναν κατάλληλο κριτή για να επεξεργαστούμε την υποβολή σας..." + +#: templates/submission/status-testcases.html:12 +msgid "Your submission is being processed..." +msgstr "Η υποβολή σας βρίσκεται υπό επεξεργασία..." + +#: templates/submission/status-testcases.html:14 +msgid "Compilation Error" +msgstr "Σφάλμα Μεταγλώττισης" + +#: templates/submission/status-testcases.html:18 +msgid "Compilation Warnings" +msgstr "Προειδοποιήσεις Μεταγλώττισης" + +#: templates/submission/status-testcases.html:23 +msgid "Pretest Execution Results" +msgstr "Αποτελέσματα Εκτέλεσης Προδοκιμής" + +#: templates/submission/status-testcases.html:25 +msgid "Execution Results" +msgstr "Αποτελέσματα Εκτέλεσης" + +#: templates/submission/status-testcases.html:51 +msgid "Batch " +msgstr "Δεσμίδα" + +#: templates/submission/status-testcases.html:64 +msgid "Case" +msgstr "Περίπτωση" + +#: templates/submission/status-testcases.html:66 +msgid "Pretest" +msgstr "Προδοκιμή" + +#: templates/submission/status-testcases.html:68 +msgid "Test case" +msgstr "Δοκιμαστική περίπτωση" + +#: templates/submission/status-testcases.html:101 +msgid "Your output (clipped)" +msgstr "Η έξοδος σας (κομμένη)" + +#: templates/submission/status-testcases.html:113 +msgid "Judge feedback" +msgstr "Σχόλια κριτή" + +#: templates/submission/status-testcases.html:129 +msgid "Resources:" +msgstr "Πόροι:" + +#: templates/submission/status-testcases.html:138 +msgid "Maximum single-case runtime:" +msgstr "Μέγιστος χρόνος εκτέλεσης μίας περίπτωσης:" + +#: templates/submission/status-testcases.html:143 +msgid "Final pretest score:" +msgstr "Τελική βαθμολογία προδοκιμασίας:" + +#: templates/submission/status-testcases.html:145 +msgid "Final score:" +msgstr "Τελική βαθμολογία:" + +#: templates/submission/status-testcases.html:159 +msgid "Passing pretests does not guarantee a full score on system tests." +msgstr "Περνώντας προ-δοκιμές δεν εγγυάται μια πλήρη βαθμολογία στις δοκιμές του συστήματος." + +#: templates/submission/status-testcases.html:162 +msgid "Submission aborted!" +msgstr "Η υποβολή ακυρώθηκε!" + +#: templates/submission/status.html:72 +msgid "View source" +msgstr "Προβολή πηγής" + +#: templates/submission/status.html:100 +msgid "Press Ctrl-Enter or Command-Enter to abort." +msgstr "Πατήστε Ctrl-Enter ή Command-Enter για ακύρωση." + +#: templates/submission/status.html:102 +msgid "Abort" +msgstr "Ακύρωση" + +#: templates/submission/submission-list-tabs.html:6 +msgid "Mine" +msgstr "Δικές μου" + +#: templates/submission/submission-list-tabs.html:9 +msgid "Best" +msgstr "Καλύτερες" + +#: templates/submission/submission-list-tabs.html:12 +#, python-format +msgid "%(user)s's" +msgstr "%(user)s's" + +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 +msgid "Reopened: " +msgstr "Ανοιγμένα εκ νέου" + +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 +msgid "Closed: " +msgstr "Κλειστά: " + +#: templates/ticket/list.html:221 +msgid "Use desktop notification" +msgstr "Χρήση ειδοποίησης επιφάνειας εργασίας" + +#: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "Απόκρυψη κλειστών αιτημάτων" + +#: templates/ticket/list.html:232 +msgid "Show my tickets only" +msgstr "Εμφάνιση μόνο των αιτημάτων μου" + +#: templates/ticket/list.html:236 +msgid "Filing user" +msgstr "Χρήστης αρχειοθέτης" + +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 +msgid "Assignee" +msgid_plural "Assignees" +msgstr[0] "Υπεύθυνος" +msgstr[1] "Υπεύθυνοι" + +#: templates/ticket/list.html:265 +msgid "Title" +msgstr "Τίτλος" + +#: templates/ticket/list.html:267 +msgid "Assignees" +msgstr "Υπεύθυνοι" + +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "έλαβε μήνυμα στις {time}" + +#: templates/ticket/new_problem.html:7 +msgid "Thanks for opening a ticket!" +msgstr "Ευχαριστούμε που ανοίξατε ένα αίτημα!" + +#: templates/ticket/new_problem.html:9 +msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." +msgstr "Λάβετε υπόψη ότι αυτή η φόρμα είναι για την αναφορά θεμάτων με μία δήλωση προβλήματος και όχι για αναζήτηση βοήθειας. Αν χρειάζεστε βοήθεια για την επίλυση ενός προβλήματος, ρωτήστε στα σχόλια." + +#: templates/ticket/ticket.html:356 +msgid "Post" +msgstr "Ανάρτηση" + +#: templates/ticket/ticket.html:364 +msgid "Associated object" +msgstr "Συσχετιζόμενο αντικείμενο" + +#: templates/ticket/ticket.html:381 +msgid "No one is assigned." +msgstr "Δεν έχει ανατεθεί σε κανέναν" + +#: templates/ticket/ticket.html:387 +msgid "Close ticket" +msgstr "Κλείσιμο αιτήματος" + +#: templates/ticket/ticket.html:389 +msgid "Reopen ticket" +msgstr "Εκ νέου άνοιγμα αιτήματος" + +#: templates/ticket/ticket.html:393 +msgid "Assignee notes" +msgstr "Σημειώσεις υπεύθυνου" + +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 +msgid "Nothing here." +msgstr "Δεν υπάρχει κάτι εδώ!" + +#: templates/user/base-users-table.html:3 +msgid "Rank" +msgstr "Βαθμίδα" + +#: templates/user/base-users.html:14 templates/user/base-users.html:71 +msgid "Search by handle..." +msgstr "Αναζήτηση με ανγνωριστικό..." + +#: templates/user/edit-profile.html:113 +msgid "Are you sure you want to generate or regenerate your API token?" +msgstr "Είστε βέβαιοι ότι θέλετε να παράξετε ή να αναπαράξετε το API διακριτικό σας?" + +#: templates/user/edit-profile.html:114 +msgid "This will invalidate any previous API tokens." +msgstr "Αυτό θα ακυρώσει τυχόν προηγούμενα διακριτικά API." + +#: templates/user/edit-profile.html:115 +msgid "It also allows access to your account without Two-factor Authentication." +msgstr "Επιτρέπει επίσης πρόσβαση στο λογαριασμό σας χωρίς έλεγχο ταυτότητας δύο παραγόντων." + +#: templates/user/edit-profile.html:116 +msgid "You will not be able to view your api token after you leave this page!" +msgstr "Δεν θα είστε σε θέση να δείτε το api διακριτικό σας αφού φύγετε από αυτή τη σελίδα!" + +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 +msgid "Generating..." +msgstr "Δημιουργία..." + +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:247 +#: templates/user/edit-profile.html:373 templates/user/edit-profile.html:395 +msgid "Regenerate" +msgstr "Αναπαραγωγή" + +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 +msgid "Remove" +msgstr "Διαγραφή" + +#: templates/user/edit-profile.html:141 +msgid "Are you sure you want to remove your API token?" +msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε το API διακριτικό σας;" + +#: templates/user/edit-profile.html:148 templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:401 +msgid "Generate" +msgstr "Παραγωγή" + +#: templates/user/edit-profile.html:194 +msgid "Are you sure you want to delete this security key?" +msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το κλειδί ασφαλείας;" + +#: templates/user/edit-profile.html:284 +msgid "Self-description" +msgstr "Αυτο-περιγραφή" + +#: templates/user/edit-profile.html:291 +msgid "Select your closest major city" +msgstr "Επιλέξτε την κοντινότερη μεγάλη πόλη" + +#: templates/user/edit-profile.html:300 +msgid "Editor theme" +msgstr "Μοτίβο συντάκτη" + +#: templates/user/edit-profile.html:305 +msgid "Math engine" +msgstr "Μηχανή μαθηματικών" + +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 +msgid "Change your avatar" +msgstr "Αλλάξτε το avatar σας" + +#: templates/user/edit-profile.html:346 +msgid "Change your password" +msgstr "Αλλάξτε τον κωδικό σας" + +#: templates/user/edit-profile.html:359 +msgid "Two-factor Authentication is enabled" +msgstr "Η ταυτοποίηση δύο παραγόντων είναι ενεργοποιημένη" + +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" +msgstr "Απενεργοποίηση" + +#: templates/user/edit-profile.html:367 +msgid "Refresh" +msgstr "Ανανέωση" + +#: templates/user/edit-profile.html:370 +msgid "Scratch Codes:" +msgstr "Κωδικοί Scratch:" + +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 +msgid "Hidden" +msgstr "Κρυφο" + +#: templates/user/edit-profile.html:384 +msgid "Two-factor Authentication is disabled" +msgstr "Η ταυτοποίηση δύο παραγόντων είναι απενεργοποιημένη" + +#: templates/user/edit-profile.html:385 +msgid "Enable" +msgstr "Ενεργοποίηση" + +#: templates/user/edit-profile.html:392 +msgid "API Token" +msgstr "API Διακριτικό" + +#: templates/user/edit-profile.html:409 +msgid "Security keys" +msgstr "Κλειδιά Ασφαλείας" + +#: templates/user/edit-profile.html:419 +msgid "Delete" +msgstr "Διαγραφή" + +#: templates/user/edit-profile.html:426 +msgid "Enter a name for this key" +msgstr "Εισάγετε όνομα για αυτό το κλειδί" + +#: templates/user/edit-profile.html:427 +msgid "Add" +msgstr "Προσθήκη" + +#: templates/user/edit-profile.html:435 +msgid "User-script" +msgstr "script χρήστη" + +#: templates/user/edit-profile.html:439 +msgid "Update profile" +msgstr "Ενημέρωση προφίλ" + +#: templates/user/pp-row.html:26 +#, python-format +msgid "%(pp).1fpp" +msgstr "%(pp).1fpp" + +#: templates/user/pp-row.html:28 +#, python-format +msgid "%(pp).0fpp" +msgstr "%(pp).0fpp" + +#: templates/user/prepare-data.html:64 +msgid "Are you sure you want to prepare a download?" +msgstr "Είστε βέβαιοι ότι θέλετε να προετοιμάσετε μια λήψη?" + +#: templates/user/prepare-data.html:79 +msgid "We are currently preparing your data." +msgstr "Αυτή τη στιγμή προετοιμάζουμε τα δεδομένα σας." + +#: templates/user/prepare-data.html:81 +msgid "Track progress" +msgstr "Παρακολούθηση προόδου" + +#: templates/user/prepare-data.html:86 +msgid "Once your data is ready, you will find a download link on this page." +msgstr "Μόλις τα δεδομένα σας είναι έτοιμα, θα βρείτε ένα σύνδεσμο λήψης σε αυτή τη σελίδα." + +#: templates/user/prepare-data.html:103 +msgid "Submissions" +msgstr "Υποβολές" + +#: templates/user/prepare-data.html:120 +msgid "Prepare new download" +msgstr "Προετοιμασία νέας λήψης" + +#: templates/user/prepare-data.html:122 +msgid "Prepare download" +msgstr "Προετοιμασία λήψης" + +#: templates/user/prepare-data.html:126 +msgid "Download prepared data" +msgstr "Λήψη έτοιμων δεδομένων" + +#: templates/user/prepare-data.html:132 +msgid "Your data is ready!" +msgstr "Τα δεδομένα σας είναι έτοιμα!" + +#: templates/user/prepare-data.html:136 +msgid "Download data" +msgstr "Λήψη δεδομένων" + +#: templates/user/user-about.html:14 +msgid "From" +msgstr "Από" + +#: templates/user/user-about.html:25 +msgid "Admin Notes" +msgstr "Σημειώσεις Διαχειριστή" + +#: templates/user/user-about.html:33 templates/user/user-tabs.html:4 +msgid "About" +msgstr "Σχετικά" + +#: templates/user/user-about.html:40 +msgid "You have not shared any information." +msgstr "Δεν έχετε κοινοποιήσει καμία πληροφορία." + +#: templates/user/user-about.html:42 +msgid "This user has not shared any information." +msgstr "Αυτός ο χρήστης δεν έχει κοινοποιήσει καμία πληροφορία." + +#: templates/user/user-about.html:59 +msgid "Sun" +msgstr "Κυρ" + +#: templates/user/user-about.html:64 +msgid "Mon" +msgstr "Δε" + +#: templates/user/user-about.html:69 +msgid "Tues" +msgstr "Τρί" + +#: templates/user/user-about.html:74 +msgid "Wed" +msgstr "Τετ" + +#: templates/user/user-about.html:79 +msgid "Thurs" +msgstr "Πεμ" + +#: templates/user/user-about.html:84 +msgid "Fri" +msgstr "Παρ" + +#: templates/user/user-about.html:89 +msgid "Sat" +msgstr "Σαβ" + +#: templates/user/user-about.html:98 +msgid "Less" +msgstr "Λιγότερα" + +#: templates/user/user-about.html:104 +msgid "More" +msgstr "Περισσότερα" + +#: templates/user/user-about.html:112 +msgid "Rating history" +msgstr "Ιστορικό αξιολόγησης" + +#: templates/user/user-about.html:183 +msgid "past year" +msgstr "προηγούμενο έτος" + +#: templates/user/user-base.html:42 +#, python-format +msgid "%(counter)s problem solved" +msgid_plural "%(counter)s problems solved" +msgstr[0] "%(counter)s πρόβλημα επιλύθηκε" +msgstr[1] "%(counter)s προβλήματα επιλύθηκαν" + +#: templates/user/user-base.html:50 +msgid "Rank by points:" +msgstr "Βαθμίδα βάσει πόντων" + +#: templates/user/user-base.html:53 +msgid "Total points:" +msgstr "Συνολικοί πόντοι:" + +#: templates/user/user-base.html:67 +#, python-format +msgid "%(counter)s contest written" +msgid_plural "%(counter)s contests written" +msgstr[0] "%(counter)s διαγωνισμός συντάχθηκε" +msgstr[1] "%(counter)s διαγωνισμοί συντάχθηκαν" + +#: templates/user/user-base.html:74 +msgid "Rank by rating:" +msgstr "Βαθμίδα βάσει αξιολόγησης" + +#: templates/user/user-base.html:76 +msgid "Rating:" +msgstr "Αξιολόγηση:" + +#: templates/user/user-base.html:77 +msgid "Min. rating:" +msgstr "Ελάχιστη αξιολόγηση:" + +#: templates/user/user-base.html:78 +msgid "Max rating:" +msgstr "Μέγιστη αξιολόγηση:" + +#: templates/user/user-problems.html:37 +msgid "Points breakdown" +msgstr "Κατανομή πόντων" + +#: templates/user/user-problems.html:43 +msgid "Load more..." +msgstr "Φόρτωση περισσότερων..." + +#: templates/user/user-problems.html:47 +msgid "This user has not yet solved any problems." +msgstr "Αυτός ο χρήστης δεν έχει ακόμη λύσει κανένα πρόβλημα." + +#: templates/user/user-problems.html:53 +msgid "Authored problems" +msgstr "Επικυρωμένα προβλήματα" + +#: templates/user/user-problems.html:85 +msgid "Hide problems I've solved" +msgstr "Απόκρυψη προβλημάτων που έχω λύσει" + +#: templates/user/user-problems.html:95 +#, python-format +msgid "%(points).1f points" +msgstr "%(points).1f πόντοι" + +#: templates/user/user-problems.html:112 +#, python-format +msgid "%(points)s / %(total)s" +msgstr "%(points)s / %(total)s" + +#: templates/user/user-tabs.html:7 +msgid "Impersonate" +msgstr "Προσωποποίηση" + +#: templates/user/user-tabs.html:10 +msgid "Admin User" +msgstr "Χρήστης Διαχειριστής" + +#: templates/user/user-tabs.html:13 +msgid "Admin Profile" +msgstr "Προφίλ Διαχειριστή" + +#: templates/widgets/select_all.html:8 +msgid "Check all" +msgstr "Επιλογή όλων" + diff --git a/locale/el/LC_MESSAGES/djangojs.po b/locale/el/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..2fd80f9f92 --- /dev/null +++ b/locale/el/LC_MESSAGES/djangojs.po @@ -0,0 +1,31 @@ +msgid "" +msgstr "" +"Project-Id-Version: dmoj\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-01 23:12+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" +"Last-Translator: \n" +"Language-Team: Greek\n" +"Language: el_GR\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-Crowdin-Project: dmoj\n" +"X-Crowdin-Project-ID: 142963\n" +"X-Crowdin-Language: el\n" +"X-Crowdin-File: djangojs.po\n" +"X-Crowdin-File-ID: 12\n" + +#: resources/common.js:207 +msgctxt "time format with day" +msgid "%d day %h:%m:%s" +msgid_plural "%d days %h:%m:%s" +msgstr[0] "%d ημέρα %h:%m:%s" +msgstr[1] "%d ημέρες %h:%m:%s" + +#: resources/common.js:210 +msgctxt "time format without day" +msgid "%h:%m:%s" +msgstr "%h:%m:%s" + diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 3beeaa9919..55c3879fbd 100644 --- a/locale/en/LC_MESSAGES/django.po +++ b/locale/en/LC_MESSAGES/django.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-28 00:25+0000\n" +"POT-Creation-Date: 2022-03-26 00:41+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,75 +18,75 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "" @@ -120,108 +120,108 @@ msgstr "" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -237,17 +237,17 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -264,9 +264,9 @@ msgstr "" msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -275,8 +275,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "" @@ -326,10 +326,10 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "" @@ -378,76 +378,86 @@ msgstr "" msgid "Capabilities" msgstr "" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "" @@ -475,7 +485,7 @@ msgstr "" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "" "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -614,7 +624,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -682,7 +692,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -690,7 +700,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -713,6 +723,10 @@ msgstr "" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" @@ -774,7 +788,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -815,480 +829,554 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "" "These users will be able to edit the contest, but will not be listed as " "authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "" +"These users will be able to spectate the contest, but not see the problems " +"ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "" "Should be set even for organization-private contests, where it determines " "whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "" "Whether judges should grade pretests only, versus all testcases. Commonly " "set during a contest, then unset prior to rejudging user submissions when " "the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "" "Whether to show a section containing contest settings on the contest page or " "not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" +msgstr "" + +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "" "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "" "An optional code to prompt contestants before they are allowed to join the " "contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "" "A JSON object to serve as the configuration for the chosen contest format " "module. Leave empty to use None. Exact format depends on the contest format " "selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "" +"A custom Lua function to generate problem labels. Requires a single function " +"with an integer parameter, the zero-indexed contest problem index, and " +"returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "" "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "" "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1328,7 +1416,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1336,7 +1424,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1364,11 +1452,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1389,7 +1481,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1401,7 +1493,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1421,7 +1513,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1450,260 +1542,260 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "" "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "" "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) " "are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "" "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 " "kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "" "Points awarded for problem completion. Points are displayed with a 'p' " "suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "" "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1815,299 +1907,353 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "" "Maximum amount of users in this organization, only applicable to private " "organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "" "This image will replace the default site logo for users viewing the " "organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "" +"Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "" "JSON array of 16 character base32-encoded " "codes for scratch " "codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "" "Scratch codes must be empty or a JSON array " "of 16-" "character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2268,6 +2414,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2276,210 +2426,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2535,16 +2685,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2553,11 +2731,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2626,12 +2804,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2678,11 +2856,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2690,132 +2872,131 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" -msgstr "" - -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." -msgstr "" - -#: judge/views/contests.py:338 +#: judge/views/contests.py:359 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:339 +#: judge/views/contests.py:360 msgid "" "You have been declared persona non grata for this contest. You are " "permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:390 +msgid "Cannot enter" +msgstr "" + +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." +msgstr "" + +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2844,177 +3025,197 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "" "Your organization can only receive %d more members. You cannot approve %d " "users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "" "You have been declared persona non grata for this problem. You are " "permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -3031,27 +3232,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3061,53 +3257,38 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3145,88 +3326,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "" -"{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "" -"{0}'s submissions for problem {2} in {3}" -"" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3251,30 +3431,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3283,27 +3463,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3325,49 +3505,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3423,36 +3603,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3531,7 +3714,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3544,7 +3727,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3565,46 +3748,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "" -"\n" -" This comment is hidden due " -"to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3680,12 +3860,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3693,8 +3877,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3719,7 +3902,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3727,15 +3910,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3747,30 +3935,14 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "" -"%(time_limit)s window between %(start_time)s and " -"%(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "" "Special thanks to %(link_testers)s for testing and feedback on the problems." @@ -3779,32 +3951,32 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "" "This contest will be **rated** for **all** participants who have a rating " "between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "" "This contest will be **rated** for **all** participants who have a rating of " "at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "" "This contest will be **rated** for **all** participants who have a rating of " "at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "" "This contest will be **rated** for participants who submit at least once and " @@ -3812,101 +3984,106 @@ msgid "" "inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "" "This contest will be **rated** for participants who submit at least once and " "have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "" "This contest will be **rated** for participants who submit at least once and " "have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "" "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "" "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3920,44 +4097,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3976,6 +4153,11 @@ msgid "" "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -4000,14 +4182,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "" @@ -4140,46 +4334,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4228,11 +4434,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4308,7 +4518,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4320,15 +4530,19 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 +#: templates/problem/editorial.html:23 msgid "" -"Remember to use this editorial only when stuck, and not to copy-" -"paste code from it. Please be respectful to the problem author and " -"editorialist.

Submitting an official solution before solving the " -"problem yourself is a bannable offence." +"Remember to use this editorial **only** when stuck, and **not to copy-paste " +"code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "" +"Submitting an official solution before solving the problem yourself is a " +"bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4342,16 +4556,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4556,28 +4770,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4586,24 +4804,21 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "" -"Warning! Your default language, %(default_language)s, is " -"unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4638,7 +4853,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4844,6 +5059,18 @@ msgid "" "authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "" +"If you lose your authentication device and are unable to use your scratch " +"codes, %(site_name)s admins will NOT be able to recover your account. Please " +"keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4872,7 +5099,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "" "If you lost your authentication device and are unable to use your scratch " @@ -4918,7 +5145,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -5060,7 +5287,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -5104,11 +5331,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -5117,27 +5344,36 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -5149,31 +5385,31 @@ msgid "" "a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5308,20 +5544,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "" -"\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 3ad4bdb7f6..a4878cab4a 100644 --- a/locale/fr/LC_MESSAGES/django.po +++ b/locale/fr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:29\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:41\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "Catalane" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "Allemand" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "Anglais" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "Espagnol" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "Français" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "Croate" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "Hongrois" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "Japonais" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "Coréen" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "Portugais Brazilien" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "Roumain" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "Russe" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "Serbe (Latin)" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "Turque" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "Vietnamien" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "Chinois simplifié" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "Chinois Traditionel" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "Accueil" @@ -119,108 +119,108 @@ msgstr "Page associée" msgid "Included contests" msgstr "Concours inclus" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Problème" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "Réglages" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "Planification" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "Détails" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "Format" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Valeur" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "Accès" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "Justice" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d concours marqué visible avec succès." msgstr[1] "%d concours marqué visible avec succès." -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "Marquer concours comme visible" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d concours marqué invisible avec succès." msgstr[1] "%d concours marqué invisible avec succès." -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "Marquer concours invisible" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d les concours ont été verrouillés avec succès" msgstr[1] "%d concours ont été verrouillés avec succès." -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "Verrouiller les soumissions au concours" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d concour ont été déverrouiller avec succès." msgstr[1] "%d concours ont été déverrouiller avec succès." -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "Déverrouiller les soumissions au concours" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "%d soumission a été programmée pour être réjugée avec succès." msgstr[1] "%d soumissions ont été programmées pour être réjugées avec succès." -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d participation récalculée." msgstr[1] "%d participations récalculées." -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "Récalculer résultats" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "nom d'utilisateur" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "virtuel" @@ -236,17 +236,17 @@ msgstr "Contenu" msgid "Summary" msgstr "Résumé" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "utilisateur" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "objet" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "Sur le site" @@ -263,9 +263,9 @@ msgstr "Médias Sociaux" msgid "Taxonomy" msgstr "Taxonomie" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Points " @@ -274,8 +274,8 @@ msgstr "Points " msgid "Limits" msgstr "Limites" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "Langue" @@ -325,10 +325,10 @@ msgstr "Marquer les problèmes comme privés" msgid "timezone" msgstr "fuseau horaire" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "Utilisateur" @@ -377,76 +377,86 @@ msgstr "Information" msgid "Capabilities" msgstr "Capacités" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "Rien" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "Pas finit" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "Exceptionnel" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "Non acceptés" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s dans %(contest)s" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "Vous n'avez pas le droit de resoumettre des soumisisons." -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Vous n'avez pas le droit de resoumettre AUTANT de soumissions." -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "Resoumettre les soumissions sélectionnées" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "Remarque les soumissions sélectionnées" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "Code de la problème" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "Nom de la problème" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "Temps" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "%d Ko" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "%.2f Mo" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "RAM" @@ -474,7 +484,7 @@ msgstr "Corps du commentaire" msgid "Your part is silent, little toad." msgstr "Votre partie est silencieux, petit crapaud." -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "Il faut résoudre un problème avant que tu ne puisse être entendu." @@ -592,7 +602,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "Vous devez résoudre au moins un problème avant de pouvoir modifier votre profil." -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Vous ne pouvez pas faire partie de plus de {count} organisations publiques." @@ -660,7 +670,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -668,7 +678,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -691,6 +701,10 @@ msgstr "{time}" msgid "on {time}" msgstr "à {time}" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "Laisser en tant que LaTeX" @@ -752,7 +766,7 @@ msgid "comments" msgstr "commentaires" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "Editorial for %s" @@ -793,463 +807,532 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "Caché pour la durée du concours" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "Caché pour la durée de la participation" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "id du concours" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "nom du concours" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." -msgstr "" +msgstr "Ces utilisateurs peuvent modifier le concours." -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." -msgstr "" +msgstr "Ces utilisateurs peuvent modifier le concours, mais ne sera pas listés comme auteurs." -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." +msgstr "Ces utilisateurs peuvent voir le concours, mais ne peuvent pas éditer ça." + +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "Description" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "problèmes" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "heure de début" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "heure de fin" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "limite de Temps" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "visible publiquement" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "concours évalué" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "Si ce concours peut être évalué." -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" -msgstr "" +msgstr "voir le tableau de bord du concours" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "aucun commentaire" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "Utiliser le système de clarification au lieu de commentaires." -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "Plancher de classement pour le concours" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "Plafond de classement pour le concours" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "évaluer tout" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "Évaluer tous les utilisateurs qui se sont inscrits." -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "exclure des évaluations" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "privé à des utilisateurs spécifiques" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" -msgstr "Si privé, seuls ces utilisateurs peuvent voir le concours" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" +msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "exécuter uniquement les prétests" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "Si les juges ne devraient évaluer que les prétests, par opposition à tous les cas de test. Généralement coché pendant un concours, puis annulé avant de réévaluer les soumissions des utilisateurs à la fin du concours." -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "privés aux organisations" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "organisations" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" -msgstr "Si privé, seules ces organisations peuvent voir le concours" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" +msgstr "" + +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "Image OpenGraph" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "Image de remplacement du logo" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "Cette image remplacera le logo par défaut du site pour les utilisateurs à l'intérieur du concours." -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "le nombre de participants en direct" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "Résumé du concours" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "Texte simple, affiché dans la meta description, par exemple pour les réseaux sociaux." -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "code d'accès" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "personae non gratae" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "Banni les utilisateurs sélectionnés de rejoindre ce concours." -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "format de concours" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "Le module de format du concours à utiliser." -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "Un objet JSON pour servir de configuration pour le module de format de concours choisi. Laisser vide pour utiliser Aucune. Le format exact dépend du format du concours sélectionné." -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "points de précision" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "Nombre de chiffres vers lesquels arrondir les points." -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "Voir les concours privés" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "Modifier vos propres concours" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "Modifier tous les concours" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "Cloner concours" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "Évaluer les concours" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "Créer des concours privés" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "Modifier la visibilité des concours" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "Modifier le script d'étiquette du problème du concours" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "Changer le statut de verrouillage du concours" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "concours" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "concours" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "concours associé" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "score" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "temps cumulé" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "Disqualifiée" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "Si cette participation est disqualifiée." -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "id de participation virtuelle" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 signifie non virtuel, sinon la n-ème participation virtuelle." -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "données spécifiques au format du concours" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "%s spectateur dans %s" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "%s dans %s" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "problème" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "points" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "partiel" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "est prétesté" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "ordre" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Nombre maximum de soumissions pour ce problème, ou laisser vide pour aucune limite." -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "soumission" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "Participation" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "Si cette soumission a été exécutée uniquement sur les pré-tests." -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "soumissions de concours" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "classement" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "évaluation" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "dernière évaluation" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1289,7 +1372,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "auteurs" @@ -1297,7 +1380,7 @@ msgstr "auteurs" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1325,11 +1408,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1350,7 +1437,7 @@ msgstr "" msgid "problem type" msgstr "type de problème" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1362,7 +1449,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1382,7 +1469,7 @@ msgstr "" msgid "full name" msgstr "nom complet" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1411,252 +1498,252 @@ msgstr "licence" msgid "licenses" msgstr "licenses" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "limite de mémoire" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "langages autorisées" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "langue" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "limite de ressources spécifiques à un language" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "limites de ressources spécifiques à un language" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "solution" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "solutions" @@ -1768,289 +1855,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "Ceux qui peuvent modifier cette organisation" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "date de création" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "Permettre de rejoindre l'Organisation" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "taille maximum" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "organisation" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "langage préféré" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "Admin" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "profil utilisateur" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "raison" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2198,6 +2338,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2206,210 +2350,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Accepté" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "Mauvaise réponse" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "Limite temps dépassée" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "Limite mémoire dépassée" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "Retour invalide" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "Erreur d'exécution" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Erreur de compilation" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "Erreur interne" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "Court circuit" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "Abandonné" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "En file d'attente" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "En cours de traitement" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "En cours de notation" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "Terminé" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "soumissions" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2465,16 +2609,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2483,11 +2655,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2556,12 +2728,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2608,11 +2780,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2620,130 +2796,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "Concours" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2772,173 +2947,193 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Problèmes" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2955,27 +3150,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -2985,53 +3175,38 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "Les meilleures solutions pour %s" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "Les meilleures solutions pour {0}" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3065,84 +3240,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Etat" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 -#, python-brace-format -msgid "My submissions in {0}" -msgstr "" - -#: judge/views/submission.py:573 -#, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "{0}'s submissions for {2} in {4}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:604 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3167,30 +3345,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3199,27 +3377,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3241,49 +3419,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "Entrer" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Modifier le profile" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3339,36 +3517,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." -msgstr "Bonjour, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" +msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "Se déconnecter" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "Ce site fonctionne mieux avec JavaScript activé." +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3445,7 +3626,7 @@ msgid "Comments" msgstr "Commentaires" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3458,7 +3639,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3479,43 +3660,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "Il n'y a aucun commentaire pour le moment." -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "Commenter" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "Corps de commentaire non valide." -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3591,12 +3772,16 @@ msgstr "" msgid "Next" msgstr "Suiv" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3604,8 +3789,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3630,7 +3814,7 @@ msgstr "" msgid "Leave contest" msgstr "Quitter le concours" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3638,15 +3822,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "Joindre les concours" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" -msgstr "Joindre les concours" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." +msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3658,147 +3847,138 @@ msgstr "" msgid "Contest is over." msgstr "Concours est terminé." -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "Utilisateurs" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3810,44 +3990,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" -msgstr "" - -#: templates/contest/list.html:137 +#: templates/contest/list.html:138 templates/contest/list.html:150 msgid "Join" msgstr "Joindre" -#: templates/contest/list.html:147 +#: templates/contest/list.html:144 +msgid "Spectate" +msgstr "" + +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "Concours" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "Concours en cours" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "Concours à venir" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "Il n'y a aucun concours au futur à ce moment." -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "Concours de la passé" @@ -3863,6 +4043,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3887,14 +4072,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "Organisation " @@ -4019,46 +4216,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4107,11 +4316,15 @@ msgstr "" msgid "Delete?" msgstr "Supprimer ?" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4187,7 +4400,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4199,11 +4412,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4217,16 +4434,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4428,28 +4645,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4458,22 +4679,21 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4508,7 +4728,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4692,6 +4912,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4718,7 +4947,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4762,7 +4991,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4901,7 +5130,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4945,11 +5174,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -4958,27 +5187,36 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -4987,31 +5225,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "Il n'y a rien ici." @@ -5145,19 +5383,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/hr/LC_MESSAGES/django.po b/locale/hr/LC_MESSAGES/django.po index 2fcb4e1011..672913c84a 100644 --- a/locale/hr/LC_MESSAGES/django.po +++ b/locale/hr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:29\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:41\n" "Last-Translator: \n" "Language-Team: Croatian\n" "Language: hr_HR\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "Njemački" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "Engleski" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "Španjolski" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "Hrvatski" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "Mađarski" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "Korejski" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "Rumunjski" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "Ruski" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "Srpski (Latinica)" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "Turski" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "Vijetnamski" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "Pojednostavljeni kineski" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "Početna" @@ -121,42 +121,42 @@ msgstr "Povezana stranica" msgid "Included contests" msgstr "Uključena natjecanja" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Zadatak" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "Raspoređivanje" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "Pojedinosti" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Bodovi" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "Pravda" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -164,11 +164,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -176,11 +176,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -188,11 +188,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -200,11 +200,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -212,7 +212,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -220,15 +220,15 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "korisničko ime" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "virtualno" @@ -244,17 +244,17 @@ msgstr "Sadržaj" msgid "Summary" msgstr "Sažetak" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "korisnik" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "Prikaži na stranici" @@ -271,9 +271,9 @@ msgstr "Društveni mediji" msgid "Taxonomy" msgstr "Taksonomija" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Bodovi" @@ -282,8 +282,8 @@ msgstr "Bodovi" msgid "Limits" msgstr "Ograničenja" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "Jezik" @@ -336,10 +336,10 @@ msgstr "Označi zadatke privatnima" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "Korisnik" @@ -389,42 +389,52 @@ msgstr "Informacije" msgid "Capabilities" msgstr "Mogućnosti" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "Nepoznato" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "Nedovršeno" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "Izuzetno" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "Odbijeno" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s u %(contest)s" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "Nemate dozvolu za ponovno evaluiranje predanog rješenja." -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Nemate dozvolu za ponovnu evaluaciju toliko puno predanih rješenja." -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "Reevaluiraj označena predana rješenja" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -432,34 +442,34 @@ msgstr[0] "%d predano rješenje je uspješno ponovno ocijenjeno." msgstr[1] "%d predanih rješenja je uspješno ponovno ocijenjeno." msgstr[2] "%d predanih rješenja je uspješno ponovno ocijenjeno." -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "Ponovno ocijeni označena predana rješenja" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "Kod zadatka" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "Ime zadatka" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "Vrijeme" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "Memorija" @@ -487,7 +497,7 @@ msgstr "Tekst komentara" msgid "Your part is silent, little toad." msgstr "Budi tiho, mala žabice." -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "Moraš riješiti barem jedan zadatak kako bi mogao komentirati." @@ -607,7 +617,7 @@ msgstr "Uključi eksperimentalne opcije" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Ne možete biti član više od {count} javnih organizacija." @@ -675,7 +685,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "ID zadatka mora biti ^[a-z0-9]+$" @@ -683,7 +693,7 @@ msgstr "ID zadatka mora biti ^[a-z0-9]+$" msgid "Problem with code already exists." msgstr "Već postoji zadatak koji koristi taj ID." -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "ID natjecanja mora biti ^[a-z0-9]+$" @@ -706,6 +716,10 @@ msgstr "{time}" msgid "on {time}" msgstr "u {time}" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "Ostavi kao LaTeX" @@ -767,7 +781,7 @@ msgid "comments" msgstr "komentari" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "Objašnjenje za %s" @@ -808,463 +822,532 @@ msgstr "opis oznake" msgid "contest tag" msgstr "oznaka natjecanja" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "oznake natjecanja" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 +msgid "Hidden permanently" +msgstr "" + +#: judge/models/contest.py:67 msgid "contest id" msgstr "ID natjecanja" -#: judge/models/contest.py:67 +#: judge/models/contest.py:69 msgid "contest name" msgstr "naziv natjecanja" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "opis" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "zadaci" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "vrijeme početka" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "vrijeme kraja" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "vremensko ograničenje" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "javno vidljivo" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "bodovanje natjecanja" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "Može li ovo natjecanje biti bodovano." -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "bez komentara" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "Koristite sustav za pojašnjenja umjesto komentara." -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "boduj sve" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "Boduj sve korisnike koji su se pridružili." -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "izostavi iz bodovanja" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "sakrij oznake zadataka" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "Trebaju li oznake zadataka biti zadano skrivene." -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "pokreni samo predtestiranje" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "privatno za organizacije" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "OpenGraph slika" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "trenutni broj natjecatelja" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "sažetak natjecanja" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "persona non grata" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "Zabranjuje označenom korisniku pridruživanje natjecanju." -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "oblik natjecanja" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "Pregledaj privatna natjecanja" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "Uredi vlastita natjecanja" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "Uredi sva natjecanja" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "Kloniraj natjecanje" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "MOSS natjecanje" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "natjecanje" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "natjecanja" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "bodovi" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "redoslijed" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "predano rješenje" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "sudjelovanje" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1304,7 +1387,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1312,7 +1395,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1340,11 +1423,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1365,7 +1452,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1377,7 +1464,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1397,7 +1484,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1426,252 +1513,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "memorijsko ograničenje" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "Memorijsko ograničenje za ovaj zadatak, u kilobajtima (npr. 64mb = 65536 kilobajta)." -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "dopušteno djelomično bodovanje" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "dopušteni programski jezici" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "ručno upravljano" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "datum objave" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "sažetak zadatka" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1783,289 +1870,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2213,6 +2353,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2221,210 +2365,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2480,16 +2624,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2498,11 +2670,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2571,12 +2743,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2626,11 +2798,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2638,130 +2814,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2790,71 +2965,81 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "Zahtjev za pridruživanje %s" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2862,7 +3047,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2870,95 +3055,105 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "Uređivanje %s" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "Nije moguće urediti organizaciju" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "Nemate ovlasti za uređivanje ove organizacije." -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "Nemate ovlasti za izbacivanje ljudi iz ove organizacije." -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "Nije moguće izbaciti korisnika" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "Korisnik kojeg pokušavate izbaciti ne postoji!" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "Korisnik kojeg pokušavate izbaciti nije u organizaciji: %s." -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Zadaci" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "Previše poslanih rješenja" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2975,27 +3170,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3005,17 +3195,17 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." @@ -3023,36 +3213,21 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3086,84 +3261,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Status predanog rješenja" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Predano rješenje za zadatak %(problem)s od korisnika %(user)s" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Sva predana rješenja" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "Sva moja predana rješenja" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "Sva predana rješenja od korisnika %s" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "Sva predana rješenja za korisnika %s" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3188,30 +3366,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3220,27 +3398,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3262,49 +3440,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "Prijava" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3360,36 +3538,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3466,7 +3647,7 @@ msgid "Comments" msgstr "Komentari" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "Molimo, prijavite se da biste mogli glasati" #: templates/comments/list.html:47 @@ -3479,7 +3660,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3500,43 +3681,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3612,12 +3793,16 @@ msgstr "" msgid "Next" msgstr "Sljedeća" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "Kalendar" @@ -3625,8 +3810,7 @@ msgstr "Kalendar" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3651,7 +3835,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3659,15 +3843,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3679,21 +3868,7 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." @@ -3701,7 +3876,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." @@ -3709,49 +3884,49 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." @@ -3759,70 +3934,75 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3834,44 +4014,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3887,6 +4067,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3911,14 +4096,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "Organizacija" @@ -4043,46 +4240,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4131,11 +4340,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4211,7 +4424,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4223,11 +4436,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4242,16 +4459,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4456,28 +4673,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4486,11 +4707,10 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -4498,11 +4718,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4537,7 +4757,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4721,6 +4941,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4747,7 +4976,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4791,7 +5020,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4930,7 +5159,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4974,11 +5203,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -4987,28 +5216,37 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -5017,31 +5255,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5175,19 +5413,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/it/LC_MESSAGES/django.po b/locale/it/LC_MESSAGES/django.po index bddbfe0da7..550ba80000 100644 --- a/locale/it/LC_MESSAGES/django.po +++ b/locale/it/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:30\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "" @@ -119,108 +119,108 @@ msgstr "" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -236,17 +236,17 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -263,9 +263,9 @@ msgstr "" msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -274,8 +274,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "" @@ -325,10 +325,10 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "" @@ -377,76 +377,86 @@ msgstr "" msgid "Capabilities" msgstr "" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "" @@ -474,7 +484,7 @@ msgstr "" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -592,7 +602,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -660,7 +670,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -668,7 +678,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -691,6 +701,10 @@ msgstr "" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" @@ -752,7 +766,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -793,463 +807,532 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1289,7 +1372,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1297,7 +1380,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1325,11 +1408,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1350,7 +1437,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1362,7 +1449,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1382,7 +1469,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1411,252 +1498,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1768,289 +1855,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2198,6 +2338,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2206,210 +2350,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2465,16 +2609,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2483,11 +2655,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2556,12 +2728,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2608,11 +2780,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2620,130 +2796,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2772,173 +2947,193 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2955,27 +3150,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -2985,53 +3175,38 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3065,84 +3240,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3167,30 +3345,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3199,27 +3377,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3241,49 +3419,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3339,36 +3517,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3445,7 +3626,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3458,7 +3639,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3479,43 +3660,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3591,12 +3772,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3604,8 +3789,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3630,7 +3814,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3638,15 +3822,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3658,147 +3847,138 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3810,44 +3990,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3863,6 +4043,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3887,14 +4072,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "" @@ -4019,46 +4216,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4107,11 +4316,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4187,7 +4400,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4199,11 +4412,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4217,16 +4434,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4428,28 +4645,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4458,22 +4679,21 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4508,7 +4728,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4692,6 +4912,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4718,7 +4947,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4762,7 +4991,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4901,7 +5130,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4945,11 +5174,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -4958,27 +5187,36 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -4987,31 +5225,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5145,19 +5383,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/ko/LC_MESSAGES/django.po b/locale/ko/LC_MESSAGES/django.po index b99aba25c2..3ad80644dc 100644 --- a/locale/ko/LC_MESSAGES/django.po +++ b/locale/ko/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:30\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "카탈루냐어" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "독일어" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "영어" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "스페인어" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "프랑스어" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "크로아티아어" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "헝가리어" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "일본어" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "한국어" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "포르투갈어 (브라질)" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "루마니아어" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "러시아어" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "세르비아어(라틴문자)" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "터키어" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "베트남어" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "중국어(간체)" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "중국어(번체)" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "메인" @@ -117,102 +117,102 @@ msgstr "관련 페이지" msgid "Included contests" msgstr "포함된 대회" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "문제" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "설정" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "Scheduling" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "세부사항" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" -msgstr "" +msgstr "형식" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "순위" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" -msgstr "" +msgstr "접근" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "정의" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." -msgstr[0] "" +msgstr[0] "%d개의 대회가 공개로 전환되었습니다." -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "공개 대회로 전환" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." -msgstr[0] "" +msgstr[0] "%d개의 대회가 비공개로 전환되었습니다." -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "비공개 대회로 전환" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." -msgstr[0] "" +msgstr[0] "%d개의 대회가 성공적으로 잠겼습니다." -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" -msgstr "" +msgstr "콘테스트 답안제출 잠그기" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." -msgstr[0] "" +msgstr[0] "%d개의 대회가 해제되었습니다." -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" -msgstr "" +msgstr "콘테스트 답안제출 허용" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." -msgstr[0] "" +msgstr[0] "%d개의 제출이 성공적으로 재채점 대기열에 등록되었습니다." -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." -msgstr[0] "" +msgstr[0] "%d 참여자가 재계산되었습니다." -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" -msgstr "" +msgstr "결과 초기화" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "사용자 이름" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "가상" @@ -228,17 +228,17 @@ msgstr "내용" msgid "Summary" msgstr "요약" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "사용자" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" -msgstr "" +msgstr "개체" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "사이트에서 보기" @@ -255,9 +255,9 @@ msgstr "SNS" msgid "Taxonomy" msgstr "분류" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "포인트" @@ -266,8 +266,8 @@ msgstr "포인트" msgid "Limits" msgstr "제한" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "언어" @@ -284,11 +284,11 @@ msgstr "저자" #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." -msgstr[0] "" +msgstr[0] "%d개의 문제 게시일이 성공적으로 갱신되었습니다." #: judge/admin/problem.py:196 msgid "Set publish date to now" -msgstr "" +msgstr "게시일을 지금으로 하기" #: judge/admin/problem.py:202 #, python-format @@ -312,12 +312,12 @@ msgstr "비공개로 설정" #: judge/admin/profile.py:35 msgid "timezone" -msgstr "" +msgstr "시간대" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "사용자" @@ -365,75 +365,85 @@ msgstr "정보" msgid "Capabilities" msgstr "기능" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "없음" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "완료되지 않음" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "예외" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "틀림" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s 대회의 문제 %(contest)s" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "재채점할 권한이 없습니다." -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "재채점 가능 개수를 초과하였습니다." -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "선택한 제출 재채점" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d개의 제출이 성공적으로 재채점되었습니다." -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "재채점" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "문제 코드" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "문제 이름" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "시간" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "Memory" @@ -461,7 +471,7 @@ msgstr "코멘트 본문" msgid "Your part is silent, little toad." msgstr "침묵하세요." -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "최소 1개 이상의 문제를 해결해야 합니다." @@ -471,99 +481,99 @@ msgstr "게시된 코멘트" #: judge/contest_format/atcoder.py:19 msgid "AtCoder" -msgstr "" +msgstr "as" #: judge/contest_format/atcoder.py:117 judge/contest_format/default.py:79 #: judge/contest_format/icpc.py:127 judge/contest_format/legacy_ioi.py:97 msgid "The maximum score submission for each problem will be used." -msgstr "" +msgstr "제출한 답안 중 가장 점수가 높은 답안이 사용됩니다." #: judge/contest_format/atcoder.py:122 judge/contest_format/icpc.py:132 #, python-format msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." -msgstr[0] "" +msgstr[0] "첫 번째 최대 점수 제출 이전의 제출에 대해서 **penalty of %d minute**가 부가됩니다." #: judge/contest_format/atcoder.py:127 msgid "Ties will be broken by the last score altering submission time." -msgstr "" +msgstr "동점은 제출 시간을 변경하는 마지막 점수에 의해 깨집니다." #: judge/contest_format/default.py:18 msgid "Default" -msgstr "" +msgstr "기본 값" #: judge/contest_format/default.py:80 msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." -msgstr "" +msgstr "동점은 점수가 0이 아닌 문제에 대한 마지막 제출 시간의 합으로 결정됩니다." #: judge/contest_format/ecoo.py:18 msgid "ECOO" -msgstr "" +msgstr "ECOO" #: judge/contest_format/ecoo.py:130 msgid "The score on your **last** non-CE submission for each problem will be used." -msgstr "" +msgstr "각 문제에 대한 **마지막**의 비 CE 제출물의 점수가 사용됩니다." #: judge/contest_format/ecoo.py:135 #, python-format msgid "There is a **%d bonus** for fully solving on your first non-CE submission." -msgstr "" +msgstr "CE가 아닌 첫 번째 제출물에서 완전히 해결하면 **%d 보너스**가 있습니다." #: judge/contest_format/ecoo.py:141 #, python-format msgid "For every **%d minute** you submit before the end of your window, there will be a **1** point bonus." msgid_plural "For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus." -msgstr[0] "" +msgstr[0] "제출 기간이 끝나기 전에 제출한 것에 대해서는 모두 **%d minutes**마다 **1**포인트 가산점을 부여합니다." #: judge/contest_format/ecoo.py:147 msgid "Ties will be broken by the sum of the last submission time on **all** problems." -msgstr "" +msgstr "동점은 **all** 문제의 마지막 제출 합계로 나뉘게 됩니다." #: judge/contest_format/ecoo.py:149 judge/contest_format/ioi.py:102 #: judge/contest_format/legacy_ioi.py:103 msgid "Ties by score will **not** be broken." -msgstr "" +msgstr "점수에 의한 동점은 **깨지지 않습니다**." #: judge/contest_format/icpc.py:19 msgid "ICPC" -msgstr "" +msgstr "ICPC" #: judge/contest_format/icpc.py:137 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score, followed by the time of the last score altering submission." -msgstr "" +msgstr "동점은 점수가 0이 아닌 문제에 대한 제출 시간을 변경한 마지막 점수의 합과 제출을 변경한 마지막 점수의 합으로 결정됩니다." #: judge/contest_format/ioi.py:11 msgid "IOI" -msgstr "" +msgstr "IOI" #: judge/contest_format/ioi.py:96 msgid "The maximum score for each problem batch will be used." -msgstr "" +msgstr "각 문제 배치의 최대 점수가 사용됩니다." #: judge/contest_format/ioi.py:99 judge/contest_format/legacy_ioi.py:100 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score." -msgstr "" +msgstr "동점은 점수가 0이 아닌 문제의 변경 제출 시간의 마지막 합계로 나뉘게 됩니다." #: judge/contest_format/legacy_ioi.py:18 msgid "IOI (pre-2016)" -msgstr "" +msgstr "IOI (pre-2016)" #: judge/forms.py:27 #, python-brace-format msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." -msgstr "" +msgstr "2단계 인증 토큰은 십진수 {TOTP_CODE_LENGTH}자리여야 합니다." #: judge/forms.py:30 msgid "Invalid two-factor authentication token." -msgstr "" +msgstr "잘못된 이중 인증 토큰입니다." #: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." -msgstr "" +msgstr "스크래치 코드는 16 base32 문자여야 합니다." #: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." -msgstr "" +msgstr "유효하지 않은 접근 코드입니다." #: judge/forms.py:46 msgid "Subscribe to contest updates" @@ -575,40 +585,40 @@ msgstr "베타 기능 활성화" #: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." -msgstr "" +msgstr "프로필을 업데이트하고 싶다면 최소한 한 문제를 먼저 풀어야 합니다." -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "{count}개보다 많은 공개 조직에 소속될 수 없습니다." #: judge/forms.py:97 msgid "Download comments?" -msgstr "" +msgstr "주석을 다운로드하시겠습니까?" #: judge/forms.py:98 msgid "Download submissions?" -msgstr "" +msgstr "제출물을 다운로드하시겠습니까?" #: judge/forms.py:99 msgid "Filter by problem code glob:" -msgstr "" +msgstr "문제 코드로 필터링:" #: judge/forms.py:103 msgid "Leave empty to include all submissions" -msgstr "" +msgstr "모든 제출물을 포함하려면 비워 둡니다." #: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" -msgstr "" +msgstr "결과 필터링:" #: judge/forms.py:112 msgid "Please select at least one thing to download." -msgstr "" +msgstr "다운 받을 것을 최소 한 개 선택해주세요." #: judge/forms.py:138 msgid "Any judge" -msgstr "" +msgstr "모든 judge" #: judge/forms.py:159 judge/views/register.py:25 #: templates/registration/registration_form.html:137 @@ -623,58 +633,62 @@ msgstr "비밀번호" #: judge/forms.py:192 msgid "Invalid code length." -msgstr "" +msgstr "잘못된 코드 길이입니다." #: judge/forms.py:223 msgid "Invalid WebAuthn response." -msgstr "" +msgstr "잘못된 WebAuthn 응답입니다." #: judge/forms.py:226 msgid "No WebAuthn challenge issued." -msgstr "" +msgstr "WebAuthn 챌린지가 발행되지 않았습니다." #: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." -msgstr "" +msgstr "잘못된 WebAuthn 자격 증명 ID입니다." #: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." -msgstr "" +msgstr "잘못된 2단계 인증 토큰 또는 접근 코드입니다." #: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." -msgstr "" +msgstr "totp_token 또는 webauthn_response를 지정해야 합니다." -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" -msgstr "" +msgstr "문제 코드는 ^[a-z0-9]+$ 이어야 합니다." #: judge/forms.py:275 msgid "Problem with code already exists." -msgstr "" +msgstr "코드에 문제가 이미 있습니다." -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Contest id must be ^[a-z0-9]+$" #: judge/forms.py:285 msgid "Contest with key already exists." -msgstr "" +msgstr "키가 있는 콘테스트가 이미 존재합니다." #: judge/jinja2/datetime.py:26 templates/blog/content.html:27 #: templates/blog/dashboard.html:21 msgid "N j, Y, g:i a" -msgstr "" +msgstr "N j, Y, g:i a" #: judge/jinja2/datetime.py:26 #, python-brace-format msgid "{time}" -msgstr "" +msgstr "{time}" #: judge/jinja2/datetime.py:26 #, python-brace-format msgid "on {time}" -msgstr "" +msgstr "{time}에" + +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "레이팅 없음" #: judge/models/choices.py:59 msgid "Leave as LaTeX" @@ -694,11 +708,11 @@ msgstr "MathJax with SVG/PNG fallback" #: judge/models/choices.py:63 msgid "Detect best quality" -msgstr "" +msgstr "최고의 질을 찾아라" #: judge/models/comment.py:25 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" -msgstr "" +msgstr "페이지 코드는 ^[pcs]:[a-z0-9]+$|^b:\\d+$ 이어야 합니다." #: judge/models/comment.py:41 msgid "commenter" @@ -710,7 +724,7 @@ msgstr "게시 시각" #: judge/models/comment.py:43 judge/models/comment.py:196 msgid "associated page" -msgstr "" +msgstr "페이지와 연관된" #: judge/models/comment.py:45 msgid "votes" @@ -737,10 +751,10 @@ msgid "comments" msgstr "코멘트" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" -msgstr "" +msgstr "%s에 대한 편집" #: judge/models/comment.py:191 msgid "comment vote" @@ -752,7 +766,7 @@ msgstr "코멘트 투표" #: judge/models/comment.py:201 msgid "Override comment lock" -msgstr "" +msgstr "주석 잠금 무시" #: judge/models/contest.py:28 msgid "Invalid colour." @@ -778,465 +792,534 @@ msgstr "태그 설명" msgid "contest tag" msgstr "대회 태그" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "대회 태그" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" -msgstr "" +msgstr "표시" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" -msgstr "" +msgstr "대회 기간 숨기기" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" -msgstr "" +msgstr "참가 기간 숨기기" #: judge/models/contest.py:65 +msgid "Hidden permanently" +msgstr "" + +#: judge/models/contest.py:67 msgid "contest id" msgstr "대회 id" -#: judge/models/contest.py:67 +#: judge/models/contest.py:69 msgid "contest name" msgstr "대회 이름" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." -msgstr "" +msgstr "이 사용자들은 대회를 편집할 권한이 있습니다." -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." -msgstr "" +msgstr "이러한 사용자는 컨테스트를 편집할 수 있지만 작성자로 나열되지는 않습니다." -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." +msgstr "아 사용자들은 대회를 볼 수 있지만, 수정할 수 없습니다." + +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "설명" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "문제" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "시작 시각" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "종료 시각" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "시간 제한" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "공개" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." -msgstr "" +msgstr "지정된 조직의 구성원에게 컨테스트가 표시되는지 여부를 결정하는 조직-비공개 컨테스트의 경우에도 설정해야 합니다." -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "대회 순위" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "대회 순위 표시 여부" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" -msgstr "" +msgstr "대회 점수표 보기" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." +msgstr "이 사용자들은 점수표를 볼 수 있습니다." + +#: judge/models/contest.py:99 +msgid "can see contest submissions" msgstr "" -#: judge/models/contest.py:90 -msgid "scoreboard visibility" +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:103 +msgid "scoreboard visibility" +msgstr "점수표 보이기" + +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" -msgstr "" +msgstr "대회 기간 동안 스코어보드 가시성" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "코멘트 없음" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "코멘트 대신 수정 시스템을 사용하세요." -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" +msgstr "대회 랭킹 순위" + +#: judge/models/contest.py:111 +msgid "rating ceiling" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" -msgstr "" +msgstr "콘테스트 등급 상한선" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "모든 순위" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "참가한 모든 사용자에 대한 순위" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "순위에서 제외" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" -msgstr "" +msgstr "특정 사용자에게만 비공개" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" -msgstr "" +msgstr "개인 참가자" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "문제 태그 숨기기" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "문제 태그 공개 여부 기본값" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" -msgstr "" +msgstr "문제 저자 숨기기" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." -msgstr "" +msgstr "문제 작성자를 기본적으로 숨겨야 하는지 여부입니다." -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "pretests만 실행" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "judge가 pretests만 채점할지, 모든 테스트 데이터를 채점할지 여부. 일반적으로 대회 종료전까지 설정 후 대회 종료 후 해제하여 모든 테스트 케이스 채점 진행" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" -msgstr "" +msgstr "짧은 형식 설정 표시" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." -msgstr "" +msgstr "컨테스트 페이지에 컨테스트 설정이 포함된 섹션을 표시할지 여부입니다." -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "조직에 비공개" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "조직" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" -msgstr "비공개로 설정 시, 이 조직만 대회를 볼 수 있습니다." +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" +msgstr "" + +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "OpenGraph 이미지" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" -msgstr "" +msgstr "이미지 중첩 로고" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." -msgstr "" +msgstr "이 이미지는 컨테스트 내 유저에게 기본 사이트 로고로 교체될 것이다." -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "현재 접속되어 있는 참가자 수" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "대회 요약" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." -msgstr "" +msgstr "메타 설명 태그에 표시되는 일반 텍스트(예: 소셜 미디어용." -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "액세스 코드" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." -msgstr "" +msgstr "참가자가 콘테스트에 참가하도록 허용되기 전에 참가자에게 메시지를 표시하는 선택적 코드입니다. 비활성화하려면 비워 둡니다." -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" -msgstr "" +msgstr "해당 인물 없음" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." -msgstr "" +msgstr "선택된 사용자는 이 대회에 참여할 수 없도록 차단합니다." -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" -msgstr "" +msgstr "대회 형식" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." -msgstr "" +msgstr "사용할 대회 형식 모듈입니다." -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" -msgstr "" +msgstr "대회 형식 구성" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." +msgstr "선택한 컨테스트 형식 모듈의 구성으로 사용할 JSON 개체입니다. 없음을 사용하려면 비워 둡니다. 정확한 형식은 선택한 콘테스트 형식에 따라 다릅니다." + +#: judge/models/contest.py:165 +msgid "contest problem label script" msgstr "" -#: judge/models/contest.py:149 -msgid "contest lock" +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:169 +msgid "contest lock" +msgstr "콘테스트 잠금" + +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." -msgstr "" +msgstr "이 날짜 이후에 이 콘테스트의 제출물이 재심사되지 않도록 합니다." -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" -msgstr "" +msgstr "정밀 포인트" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." -msgstr "" +msgstr "점수를 반올림할 자릿수입니다." -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" -msgstr "" +msgstr "비공개 콘테스트 보기" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" -msgstr "" +msgstr "내 콘테스트 편집" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" -msgstr "" +msgstr "모든 콘테스트 편집" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" -msgstr "" +msgstr "콘테스트 복사" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" -msgstr "" +msgstr "MOSS 콘테스트" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" -msgstr "" +msgstr "대회 레이팅" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" -msgstr "" +msgstr "대회 접근 코드" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" -msgstr "" +msgstr "Private 대회 생성하기" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" -msgstr "" +msgstr "대회 가시성 변경하기" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" -msgstr "" +msgstr "컨테스트 문제 라벨 스크립트 수정" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" -msgstr "" +msgstr "대회 잠금 여부 변경하기" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "대회" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "대회" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "관련된 대회" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "점수" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "누적 시간" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" -msgstr "" +msgstr "실격되었습니다." -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." -msgstr "" +msgstr "이 참여자의 실격 여부" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" -msgstr "" +msgstr "동점 필드" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "가상 참여 id" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." -msgstr "" +msgstr "0은 가상이 아님을 의미하고, 그렇지 않으면 n번째 가상 참여를 의미합니다." -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" -msgstr "" +msgstr "대회 형식별 데이터" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" -msgstr "" +msgstr "%s이(가) %s에서 관전 중입니다." -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" -msgstr "" +msgstr "%s의 %s, v%d" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "%s에서 %s" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "대회 참가" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "대회 참가자" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "문제" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "점수" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "부분" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "pretested 됨" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "순서" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "출력 접두사 길이 재정의" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." -msgstr "" +msgstr "이 문제에 대한 최대 제출 수이거나 제한이 없는 경우 공백으로 둡니다." -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" -msgstr "" +msgstr "제출할 수 없는 문제를 포함하는 이유는 무엇입니까?" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "대회 문제" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "대회 문제" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "제출" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "참가 여부" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "Pretests에서만 이 제출이 실행되었는지 여부" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "대회 제출" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "대회 제출" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "등수" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "순위" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" -msgstr "" +msgstr "원ㅅ ㅣ등급" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" -msgstr "" +msgstr "대회 퍼포먼스" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "최근 순위" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "대회 순위" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "대회 순위" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" -msgstr "" +msgstr "대회 코드 카피 체크 결과" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" -msgstr "" +msgstr "대회 코드 카피 체크 결과" #: judge/models/interface.py:24 msgid "configuration item" @@ -1274,7 +1357,7 @@ msgstr "부모 항목" msgid "post title" msgstr "게시물 제목" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "저자" @@ -1282,7 +1365,7 @@ msgstr "저자" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "공개 여부" @@ -1308,20 +1391,24 @@ msgstr "openGraph 이미지" #: judge/models/interface.py:96 msgid "Edit all posts" +msgstr "모든 게시물 수정" + +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" -#: judge/models/interface.py:98 +#: judge/models/interface.py:99 msgid "blog post" msgstr "블로그 게시물" -#: judge/models/interface.py:99 +#: judge/models/interface.py:100 msgid "blog posts" msgstr "블로그 게시물" #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" -msgstr "" +msgstr "허가되지 않은 문자열: %(value)s" #: judge/models/problem.py:35 msgid "problem category ID" @@ -1335,7 +1422,7 @@ msgstr "문제 범주 이름" msgid "problem type" msgstr "문제 유형" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "문제 유형" @@ -1347,7 +1434,7 @@ msgstr "문제 그룹 ID" msgid "problem group name" msgstr "문제 그룹" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "문제 그룹" @@ -1367,7 +1454,7 @@ msgstr "링크" msgid "full name" msgstr "전체 이름" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "짧은 이름" @@ -1396,252 +1483,252 @@ msgstr "라이센스" msgid "licenses" msgstr "라이센스" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" -msgstr "" +msgstr "전역 설정 따르기" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" -msgstr "" +msgstr "항상 보이기" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" -msgstr "" +msgstr "문제가 해결됬을 경우 보이기" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" -msgstr "" +msgstr "자신의 제출물만" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "문제 코드" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" -msgstr "" +msgstr "/problem/ 뒤의 url에서 사용되는 문제에 대한 짧고 고유한 코드" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "문제 이름" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." -msgstr "" +msgstr "문제 목록에 표시된 문제의 전체 이름입니다." -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "문제 본문" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "제작자" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." -msgstr "" +msgstr "이러한 사용자는 문제를 편집할 수 있고 작성자로 나열됩니다." -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "curators" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." -msgstr "" +msgstr "이러한 사용자는 문제를 편집할 수 있고, 작성자로 나열됩니다." -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "testers" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." -msgstr "" +msgstr "이러한 사용자는 비공개 문제를 볼 수 있지만 편집할 수는 없습니다." -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." -msgstr "" +msgstr "문제 페이지에 표시된 문제 유형입니다." -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." -msgstr "" +msgstr "문제 목록의 범주 아래에 표시된 문제 그룹입니다." -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." -msgstr "" +msgstr "이 문제의 시간 제한(초)입니다. 소수 자릿수 초(예: 1.5)가 지원됩니다." -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "메모리 제한" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." -msgstr "" +msgstr "이 문제에 대한 메모리 제한(KB)입니다(예: 64mb = 65536KB)." -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." -msgstr "" +msgstr "문제 완료에 대해 부여된 점수입니다. 부분적인 경우 점은 'p' 접미사로 표시됩니다." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "부분 점수 허용" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "허용된 언어" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." -msgstr "" +msgstr "허용된 제출 언어 목록입니다." -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "수동으로 관리됨" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." -msgstr "" +msgstr "심사위원의 데이터 관리 허용 여부" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "게시 날짜" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" -msgstr "" +msgstr "이전 버전과의 호환성으로 인해 자동 게시하는 마법의 기능이 없습니다." -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." -msgstr "" +msgstr "선택한 사용자가 이 문제를 제출하는 것을 금지합니다." -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." -msgstr "" +msgstr "이 문제가 게시되는 라이선스입니다." -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "문제 요약" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" -msgstr "" +msgstr "유저 수" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." -msgstr "" +msgstr "문제를 해결한 사용자 수입니다." -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" -msgstr "" +msgstr "정답률" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" -msgstr "" +msgstr "전체 마크다운 액세스 허용" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" -msgstr "" +msgstr "제출 소스 가시성" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." -msgstr "" +msgstr "비공개로 설정 시, 이 조직들만 문제를 볼 수 있습니다." -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" -msgstr "" +msgstr "숨겨진 문제들 보이기" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" -msgstr "" +msgstr "문제 수정" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" -msgstr "" +msgstr "모든 문제 수정" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" -msgstr "" +msgstr "모든 공개 문제 수정" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" -msgstr "" +msgstr "전체 마크업 문제 수정" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" -msgstr "" +msgstr "문제 복사" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" -msgstr "" +msgstr "is_public 필드 변경" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" -msgstr "" +msgstr "is_manually_managed 필드 변경" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" -msgstr "" +msgstr "조직에게만 공개된 문제들 보기" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "언어" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "번역된 이름" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "번역된 설명" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "문제 번역" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "문제 번역" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "수정된 문제" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "수정사항" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "수정 타임스탬프" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "특정 언어 리소스 제한" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "특정 언어 리소스 제한" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "관련된 문제" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" -msgstr "" +msgstr "게시일:" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" -msgstr "" +msgstr "편집 내용" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" -msgstr "" +msgstr "숨겨진 솔루션 보기" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "솔루션" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "솔루션" @@ -1663,7 +1750,7 @@ msgstr "Floats (relative)" #: judge/models/problem_data.py:27 msgid "Non-trailing spaces" -msgstr "" +msgstr "비 후행 공백" #: judge/models/problem_data.py:28 msgid "Unordered" @@ -1675,7 +1762,7 @@ msgstr "바이트 단위로 동일" #: judge/models/problem_data.py:30 msgid "Line-by-line" -msgstr "" +msgstr "라인별" #: judge/models/problem_data.py:37 msgid "data zip file" @@ -1743,299 +1830,352 @@ msgstr "출력 파일 이름" #: judge/models/problem_data.py:87 msgid "generator arguments" -msgstr "" +msgstr "생성자 인자" #: judge/models/problem_data.py:88 msgid "point value" -msgstr "" +msgstr "점수 값" #: judge/models/problem_data.py:89 msgid "case is pretest?" -msgstr "" +msgstr "케이스가 사전 테스트입니까?" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "조직 이름" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" -msgstr "" +msgstr "그룹 URL" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" -msgstr "" +msgstr "URL에 표시된 조직 이름" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "대회 동안 사용자 이름 옆에 표시됩니다." -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "조직 설명" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "관리자" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "이 조직을 편집할 수 있는 사람" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "만든 날짜" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "공개 조직인가?" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "조직 가입 허용" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "최대 크기" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "이 조직의 최대 인원수(비공개 조직에만 적용)" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "학생 엑세스 코드" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." +msgstr "이 이미지는 조직을 보는 사용자의 기본 사이트 로고를 대체합니다." + +#: judge/models/profile.py:62 +msgid "class membership required" msgstr "" -#: judge/models/profile.py:82 -msgid "Administer organizations" +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" msgstr "" -#: judge/models/profile.py:83 -msgid "Edit all organizations" +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:95 +msgid "Administer organizations" +msgstr "조직 관리" + +#: judge/models/profile.py:96 +msgid "Edit all organizations" +msgstr "조직 편집" + +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "조직" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "연결된 사용자" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "자기소개" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "위치" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "기본 설정 언어" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "마지막 접속 시간" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "마지막 IP" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "순위 표시" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" -msgstr "" +msgstr "일반 유저" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" -msgstr "" +msgstr "문제 해결사" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "관리자" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "코멘트 음소거" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." -msgstr "" +msgstr "일부 사용자는 침묵할 때 최상의 상태를 유지합니다." -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" -msgstr "" +msgstr "비공개 사용자" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." -msgstr "" +msgstr "사용자는 순위가 매겨지지 않습니다." -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "사용자 스크립트" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "사이트 수정을 위한 사용자 자바스크립트입니다." -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "현재 대회" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "math engine" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" -msgstr "" +msgstr "수학을 렌더링하는 데 사용되는 렌더링 엔진" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" -msgstr "" +msgstr "TOTP 2FA 활성화" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" -msgstr "" +msgstr "TOTP 기반 이중 인증 활성화 확인" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" -msgstr "" +msgstr "WebAuthn 2FA 사용" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" -msgstr "" +msgstr "WebAuthn 기반 2단계 인증을 활성화하려면 체크." -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" -msgstr "" +msgstr "TOTP 키" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" -msgstr "" +msgstr "TOTP용 32자 base32 인코딩 키" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" -msgstr "" +msgstr "TOTP 키는 비어 있거나 base32 이어야 합니다." -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" -msgstr "" +msgstr "기본 코드:" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" -msgstr "" +msgstr "기본 코드용 16 글자 base32 인코딩 코드의 JSON 배열" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" -msgstr "" +msgstr "기본 코드는 비어있거나 base32 코드 글자의 JSON 배열이어야 합니다." -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" -msgstr "" +msgstr "마지막 TOPT 타임 코드" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" -msgstr "" +msgstr "API 토큰" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" -msgstr "" +msgstr "마지막으로 데이터를 다운로드한 시간" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "사용자 프로파일" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "사용자 프로파일" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" -msgstr "" +msgstr "공개 키" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" -msgstr "" +msgstr "서명 카운터" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "요청 시간" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "상태" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "이유" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "조직 가입 요청" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "조직 가입 요청" @@ -2183,6 +2323,10 @@ msgstr "시스템 로드" msgid "Load for the last minute, divided by processors to be fair." msgstr "1분간의 로드율(프로세서 수로 나눔)" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "채점기" @@ -2191,210 +2335,210 @@ msgstr "채점기" msgid "judge" msgstr "채점" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "통과" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "오답" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "시간 제한 초과" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "메모리 제한 초과" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "출력 제한 초과" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "잘못된 반환" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "런타임 에러" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "컴파일 에러" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "내부 에러" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "Short circuit" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "취소됨" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "대기열에 있음" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "처리중" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "채점중" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "완료" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "제출 시간" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "실행 시간" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "메모리 사용량" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "획득 포인트" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "제출 언어" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "상태" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "결과" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "컴파일 에러" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "batched 테스트 케이스" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "테스크 케이스 점수" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "테스트 케이스 총 점수" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "pretest에서만 채점됨" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" -msgstr "" +msgstr "모든 제출 답안 보기" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" -msgstr "" +msgstr "다른 사람의 제출물 다시 제출" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "제출" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "관련된 제출" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "소스 코드" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "test case ID" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "상태 flag" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "획득 가능한 포인트" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "batch number" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "채점 피드백" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" -msgstr "" +msgstr "확장된 심사 피드백" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "프로그램 출력" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "제출 테스트 케이스" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "제출 테스트 케이스" @@ -2450,39 +2594,67 @@ msgstr "메시지 본문" msgid "message time" msgstr "메시지 시간" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "[topage]의 페이지 [page]" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "뉴비" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "아마추어" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "전문가" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" -msgstr "" +msgstr "대회 점수 재계산" #: judge/tasks/contest.py:40 msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" -msgstr "" +msgstr "제출 수정" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" -msgstr "" +msgstr "사용자 포인트 재계산" #: judge/tasks/user.py:49 msgid "Applying filters" -msgstr "" +msgstr "필터적용" #: judge/tasks/user.py:64 msgid "Preparing your submission data" -msgstr "" +msgstr "제출 데이터 준비" #: judge/tasks/user.py:95 msgid "Preparing your comment data" @@ -2495,7 +2667,7 @@ msgstr "빈 batches는 허용되지 않습니다." #: judge/utils/problem_data.py:82 #, python-format msgid "Points must be defined for non-batch case #%d." -msgstr "" +msgstr "비배치 사례 #%d에 대해 포인트를 정의해야 합니다." #: judge/utils/problem_data.py:87 #, python-format @@ -2510,12 +2682,12 @@ msgstr "테스트 케이스 %d에 대한 출력 파일이 존재하지 않습니 #: judge/utils/problem_data.py:115 #, python-format msgid "Batch start case #%d requires points." -msgstr "" +msgstr "일괄 시작 사례 #%d에 점수가 필요합니다." #: judge/utils/problem_data.py:136 #, python-format msgid "Attempt to end batch outside of one in case #%d" -msgstr "" +msgstr "#%d의 경우 일괄 처리를 종료하려고 시도합니다." #: judge/utils/problem_data.py:154 msgid "How did you corrupt the zip path?" @@ -2527,27 +2699,27 @@ msgstr "" #: judge/utils/problems.py:75 msgid "Wrong" -msgstr "" +msgstr "틀림" #: judge/utils/problems.py:77 msgid "Timeout" -msgstr "" +msgstr "시간초과" #: judge/utils/problems.py:78 msgid "Error" -msgstr "" +msgstr "오류" #: judge/utils/problems.py:89 msgid "Can't pass both queryset and keyword filters" -msgstr "" +msgstr "쿼리 세트와 키워드 필터를 모두 전달할 수 없습니다." -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." -msgstr "" - -#: judge/utils/pwned.py:102 +#: judge/utils/pwned.py:109 msgid "This password is too common." -msgstr "" +msgstr "이 비밀번호는 너무 일반적입니다." + +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." +msgstr "너무 흔한 비밀번호는 비밀번호로 사용할 수 없습니다." #: judge/utils/timedelta.py:49 msgctxt "time format with day" @@ -2584,148 +2756,151 @@ msgstr "게시물 %d 페이지" #: judge/views/comment.py:27 msgid "Messing around, are we?" -msgstr "" +msgstr "장난치고 있어?" #: judge/views/comment.py:36 msgid "You must solve at least one problem before you can vote." +msgstr "투표하기 전에 최소한 하나의 문제를 해결해야 합니다." + +#: judge/views/comment.py:48 +msgid "Comment not found." msgstr "" #: judge/views/comment.py:66 msgid "You already voted." msgstr "이미 투표하셨습니다." -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "사이트에서 편집" #: judge/views/comment.py:150 msgid "Editing comment" -msgstr "" +msgstr "코멘트 수정" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "그런 대회는 존재하지 않습니다." -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "키 %s로는 대회를 찾을 수 없습니다." -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "대회" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "그런 대회를 찾을 수 있습니다." -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "%s 대회 접근이 거부되었습니다." -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" -msgstr "" +msgstr "콘테스트 복제" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" -msgstr "" +msgstr "%s의 복제된 콘테스트" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "현재 진행중인 대회가 아닙니다." -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "%s는 현재 진행중이 아닙니다." -#: judge/views/contests.py:334 -msgid "Already in contest" -msgstr "대회에 이미 있습니다." - -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." -msgstr "현재 대회 %s에 이미 참가해 있습니다." - -#: judge/views/contests.py:338 +#: judge/views/contests.py:359 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:339 +#: judge/views/contests.py:360 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +msgstr "당신은 이 콘테스트에 대해 무료로 선언되지 않았습니다. 당신은 이 콘테스트에 영구적으로 참가할 수 없습니다." + +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." +msgstr "" + +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" -msgstr "" +msgstr "\"%s\"에 대한 액세스 코드를 입력하십시오." -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "현재 대회 %s에 참가중이 아닙니다." -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" -msgstr "" +msgstr "%(month)s의 콘테스트" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "%s 순위" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" -msgstr "" +msgstr "???" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "%s에 대한 당신의 참가" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "%s's %s에 대한 참가" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "실시간" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "참여" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" -msgstr "" +msgstr "%s MOSS 결과" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "대회 태그: %s" @@ -2754,171 +2929,191 @@ msgstr "손상된 페이지 %s" msgid "Runtimes" msgstr "런타임" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "존재하지 않는 조직" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "%s 조직을 찾을 수 없습니다." -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "그러한 조직을 찾을 수 없습니다." -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "조직" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "%s 멤버" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "조직 가입" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "이미 조직에 가입되어 있습니다." -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "이 조직은 공개되어 있지 않습니다." -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "조직 탈퇴" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "%s에 있지 않습니다." -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "%s 에 가입을 신청 할 수 없습니다." + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "이미 %s에 가입 신청을 했습니다." + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "%s 가입 신청" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "가입 신청 세부 사항" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "%s 가입 신청 가입" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "당신의 조직은 %d명의 회원만 더 가입이 가능합니다. %d명의 사용자 가입 승인이 불가합니다." -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d명 사용자 승인" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d명 거부" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "%s 편집중" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "조직 편집이 불가합니다." -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "조직을 편집할 권한이 없습니다." -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "조직 사용자를 탈퇴시킬 권한이 없습니다." -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "이 사용자를 탈퇴시킬 수 없습니다." -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "탈퇴시키려는 사용자가 존재하지 않습니다." -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." +msgstr "삭제하려는 유저: %s 가 조직에 없습니다." + +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "존재하지 않는 문제" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "%s 문제를 찾을 수 없습니다." -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" -msgstr "" +msgstr "그런 사설이 없습니다" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "문제" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" -msgstr "" +msgstr "제출이 너무 많습니다" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." -msgstr "" +msgstr "이 문제에 허용된 제출 횟수를 초과했습니다" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" -msgstr "" +msgstr "문제 복사" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2929,33 +3124,28 @@ msgstr "Checker arguments must be a JSON object" #: judge/views/problem_data.py:39 msgid "Checker arguments is invalid JSON" -msgstr "" +msgstr "검사기의 인자가 잘못된 JSON입니다." #: judge/views/problem_data.py:46 msgid "Your zip file is invalid!" msgstr "Zip 파일이 올바르지 않습니다." -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" +msgstr "{0}에 대한 제출 비교" -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -2965,52 +3155,37 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "%s를 위한 best 솔루션" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" -msgstr "" +msgstr "%(contest)s의 %(problem)s에 대한 최상의 솔루션" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "사용자 이름은 문자, 숫자, 또는 밑줄을 포함해야 합니다." @@ -3044,86 +3219,89 @@ msgstr "인증 실패" msgid "Language statistics" msgstr "언어 통계" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "현재 상태" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 #, python-format -msgid "Submission of %(problem)s by %(user)s" +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:81 judge/views/submission.py:88 +#, python-format +msgid "Submission of %(problem)s by %(user)s" +msgstr "%(user)s의 %(problem)s 제출" + +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "모든 제출들" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "내 모든 제출들" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" -msgstr "" +msgstr "%s의 모든 제출물" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" -msgstr "" +msgstr "문제를 통과해야 합니다" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "%(problem)s에 대한 나의 제출" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(problem)s에 대한 %(user)s의 제출" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "대회를 통화해야한다" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" -msgstr "" +msgstr "%(contest)s 에 제출한 내 답안들" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "{0}'s submissions for {2} in {4}" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" -msgstr "{0}'s submissions for problem {2} in {3}" - #: judge/views/ticket.py:33 judge/views/ticket.py:39 msgid "Ticket title" msgstr "" @@ -3139,145 +3317,145 @@ msgstr "" #: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" -msgstr "" +msgstr "%s에 대한 새 티켓" #: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" -msgstr "" +msgstr "%(title)s - 티켓 %(id)d" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" -msgstr "" +msgstr "티켓 - 페이지 %(number)d/%(total)d" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" -msgstr "" +msgstr "#%(id)d, 할당 대상: %(users)s" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " -msgstr "" +msgstr ", " -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" -msgstr "" +msgstr "새 티켓 메시지: %s" #: judge/views/two_factor.py:49 msgid "Enable Two-factor Authentication" -msgstr "" +msgstr "이중 인증 활성화" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" -msgstr "" +msgstr "이중 인증 비활성화" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" -msgstr "" +msgstr "유효하지 않은 이름" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" -msgstr "" +msgstr "직원은 2FA를 비활성화할 수 없습니다." -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" #: judge/views/user.py:78 msgid "No such user" -msgstr "" +msgstr "해당 사용자를 찾을 수 없습니다." #: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." -msgstr "" +msgstr "사용자 핸들 \"%s\"이 없습니다." #: judge/views/user.py:82 msgid "My account" -msgstr "" +msgstr "내 계정" #: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "로그인" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" -msgstr "" +msgstr "사이트에서 업데이트됨" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" -msgstr "" +msgstr "프로필 수정" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" -msgstr "" +msgstr "사용자에 대해 생성된 API 토큰" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" -msgstr "" +msgstr "사용자를 위해 생성된 스크래치 코드" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" -msgstr "" +msgstr "순위표" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" #: judge/views/widgets.py:52 judge/views/widgets.py:62 #, python-format msgid "Invalid upstream data: %s" -msgstr "" +msgstr "잘못된 업스트림 데이터: %s" #: judge/views/widgets.py:72 msgid "Bad latitude or longitude" -msgstr "" +msgstr "잘못된 위도 또는 경도" #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" -msgstr "" +msgstr "정말로 모든 답안을 재채점 하시겠습니까?" #: templates/admin/judge/contest/change_form.html:17 #: templates/admin/judge/contest/change_form.html:20 @@ -3286,26 +3464,26 @@ msgstr "" #: templates/admin/judge/contest/change_list.html:9 msgid "Rate all ratable contests" -msgstr "" +msgstr "평가 가능한 모든 콘테스트 평가" #: templates/admin/judge/judge/change_form.html:15 #: templates/admin/judge/judge/change_form.html:18 msgid "Disconnect" -msgstr "" +msgstr "연결 해제" #: templates/admin/judge/judge/change_form.html:20 #: templates/admin/judge/judge/change_form.html:23 msgid "Terminate" -msgstr "" +msgstr "종료" #: templates/admin/judge/problem/change_form.html:14 msgid "View Submissions" -msgstr "" +msgstr "제출물 보기" #: templates/admin/judge/problem/change_form.html:17 #: templates/user/user-base.html:61 msgid "View submissions" -msgstr "" +msgstr "제출물 보기" #: templates/admin/judge/profile/change_form.html:14 #: templates/admin/judge/profile/change_form.html:17 @@ -3318,50 +3496,55 @@ msgstr "사용자 수정" msgid "Rejudge" msgstr "재체점" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "로그아웃" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" -msgstr "" +msgstr "로그인" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" -msgstr "" +msgstr "또는" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" -msgstr "" +msgstr "회원 가입" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "관전" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "이 사이트는 자바 스크립트를 활성화시켜야 정상적으로 작동합니다." +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 #: templates/license.html:10 templates/problem/data.html:428 #: templates/problem/editorial.html:14 msgid "Edit" -msgstr "" +msgstr "수정" #: templates/blog/content.html:27 #, python-format msgid "\n" " posted on %(time)s\n" " " -msgstr "" +msgstr "\n" +" %(time)s\n" +" 에 게시됨." #: templates/blog/dashboard.html:21 #, python-format @@ -3372,44 +3555,44 @@ msgstr "" #: templates/blog/list.html:85 msgid "Blog" -msgstr "" +msgstr "블로그" #: templates/blog/list.html:87 msgid "Events" -msgstr "" +msgstr "이벤트" #: templates/blog/list.html:92 msgid "News" -msgstr "" +msgstr "새소식" #: templates/blog/list.html:106 #, python-brace-format msgid "posted on {time}" -msgstr "" +msgstr "{time}에 작성되었습니다." #: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" -msgstr "" +msgstr "해설" #: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." -msgstr "" +msgstr "현재로서는 명확한 설명이 없습니다." #: templates/blog/list.html:154 msgid "Ongoing contests" -msgstr "" +msgstr "진행중인 대회" #: templates/blog/list.html:172 msgid "Upcoming contests" -msgstr "" +msgstr "진행예정 대회" #: templates/blog/list.html:189 msgid "Comment stream" -msgstr "" +msgstr "주석 흐름" #: templates/blog/list.html:209 msgid "New problems" -msgstr "" +msgstr "새로운 문제" #: templates/blog/list.html:226 msgid "My open tickets" @@ -3421,415 +3604,414 @@ msgstr "" #: templates/comments/list.html:2 templates/user/prepare-data.html:97 msgid "Comments" -msgstr "" +msgstr "코멘트" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" -msgstr "" +msgid "Please log in to vote" +msgstr "투표하려면 로그인해 주세요." #: templates/comments/list.html:47 #, python-brace-format msgid "commented on {time}" -msgstr "" +msgstr "{time}에 작성되었습니다." #: templates/comments/list.html:56 #, python-format msgid "edit %(edits)s" -msgstr "" +msgstr "%(edits)s 수정" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" -msgstr "" +msgstr "수정됨" #: templates/comments/list.html:67 msgid "Link" -msgstr "" +msgstr "연결" #: templates/comments/list.html:80 templates/comments/list.html:87 msgid "Reply" -msgstr "" +msgstr "답변" #: templates/comments/list.html:95 templates/comments/votes.html:1 msgid "Votes" -msgstr "" +msgstr "투표" #: templates/comments/list.html:96 msgid "Hide" -msgstr "" +msgstr "숨김" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." msgstr "" -#: templates/comments/list.html:131 -msgid "There are no comments at the moment." +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:129 +msgid "There are no comments at the moment." +msgstr "현재 작성된 코멘트가 없습니다." + +#: templates/comments/list.html:135 msgid "New comment" -msgstr "" +msgstr "새 댓글" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." -msgstr "" +msgstr "유효하지 않은 댓글입니다." -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" -msgstr "" +msgstr "등록!" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." -msgstr "" +msgstr "이 페이지에 대한 댓글 기능이 비활성화되었습니다." -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" -msgstr "" +msgstr "댓글에 답글 달기" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" -msgstr "" +msgstr "{edits} 작성" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" -msgstr "" +msgstr "원본" #: templates/comments/votes.html:5 msgid "Voter" -msgstr "" +msgstr "투표자" #: templates/comments/votes.html:6 templates/user/user-problems.html:101 msgid "Score" -msgstr "" +msgstr "점수" #: templates/comments/votes.html:17 msgid "No votes" -msgstr "" +msgstr "투표자 없음" #: templates/contest/access_code.html:26 msgid "Invalid access code." -msgstr "" +msgstr "유효하지 않은 접근 코드입니다." #: templates/contest/access_code.html:29 msgid "Please enter your access code:" -msgstr "" +msgstr "접근 코드를 입력하여 주십시오." #: templates/contest/access_code.html:32 msgid "Join Contest" -msgstr "" +msgstr "대회 참가" #: templates/contest/calendar.html:12 msgid "Sunday" -msgstr "" +msgstr "일요일" #: templates/contest/calendar.html:13 msgid "Monday" -msgstr "" +msgstr "월요일" #: templates/contest/calendar.html:14 msgid "Tuesday" -msgstr "" +msgstr "화요일" #: templates/contest/calendar.html:15 msgid "Wednesday" -msgstr "" +msgstr "수요일" #: templates/contest/calendar.html:16 msgid "Thursday" -msgstr "" +msgstr "목요일" #: templates/contest/calendar.html:17 msgid "Friday" -msgstr "" +msgstr "금요일" #: templates/contest/calendar.html:18 msgid "Saturday" -msgstr "" +msgstr "토요일" #: templates/contest/clone.html:37 msgid "Enter a new key for the cloned contest:" -msgstr "" +msgstr "새로운 키를 입력해주세요." #: templates/contest/clone.html:40 templates/problem/clone.html:40 msgid "Clone!" -msgstr "" +msgstr "복사!" #: templates/contest/contest-list-tabs.html:7 msgid "Prev" -msgstr "" +msgstr "이전" #: templates/contest/contest-list-tabs.html:10 msgid "Today" -msgstr "" +msgstr "오늘" #: templates/contest/contest-list-tabs.html:13 msgid "Next" -msgstr "" +msgstr "다음" + +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "내보내기" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" -msgstr "" +msgstr "목록" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" -msgstr "" +msgstr "달력" #: templates/contest/contest-tabs.html:4 msgid "Info" -msgstr "" +msgstr "정보" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" -msgstr "" +msgstr "통계" #: templates/contest/contest-tabs.html:11 msgid "Rankings" -msgstr "" +msgstr "순위" #: templates/contest/contest-tabs.html:16 msgid "Hidden Rankings" -msgstr "" +msgstr "숨겨진 순위" #: templates/contest/contest-tabs.html:21 msgid "MOSS" -msgstr "" +msgstr "MOSS" #: templates/contest/contest-tabs.html:26 msgid "Clone" -msgstr "" +msgstr "복사" #: templates/contest/contest-tabs.html:38 #: templates/contest/contest-tabs.html:58 msgid "Leave contest" -msgstr "" +msgstr "대회 나가기" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" -msgstr "" +msgstr "모의 참여" #: templates/contest/contest-tabs.html:56 msgid "Stop spectating" -msgstr "" +msgstr "관전 중지" + +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "콘테스트 참여" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" -msgstr "" +msgstr "대회 관전" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" -msgstr "" +msgstr "참여하려면 로그인하세요" #: templates/contest/contest.html:37 msgid "Participating virtually." -msgstr "" +msgstr "가상으로 참여합니다." #: templates/contest/contest.html:43 msgid "Contest is over." -msgstr "" - -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" +msgstr "콘테스트가 종료되었습니다." -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." -msgstr[0] "" +msgstr[0] "이 콘테스트는 %(link_authors)s 가 작성했습니다." -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." -msgstr[0] "" +msgstr[0] "문제들을 테스트하고 검토해주신 %(link_testers)s 분들께 진심으로 감사드립니다." -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." -msgstr[0] "" +msgstr[0] "이 콘테스트엔 **%(count)s**개의 문제가 있습니다." -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." -msgstr "" +msgstr "이 콘테스트는 **부분 점수가 없습니다**." -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." -msgstr "" +msgstr "문제들 중에는 **제출 횟수가 제한된** 문제가 있습니다." -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 -msgid "An **access code is required** to join the contest." +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:174 +msgid "An **access code is required** to join the contest." +msgstr "콘테스트에 참여하시려면 **참가코드가 필요합니다** " + +#: templates/contest/contest.html:197 msgid "AC Rate" -msgstr "" +msgstr "정답률" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" -msgstr "" +msgstr "유저" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" -msgstr "" +msgstr "참여하겠습니까?" #: templates/contest/list.html:32 msgid "Joining a contest for the first time starts your timer, after which it becomes unstoppable." -msgstr "" +msgstr "콘테스트에 처음 참여하실 때 타이머가 시작하고, 일시정지 할 수 없습니다." #: templates/contest/list.html:65 msgid "hidden" -msgstr "" +msgstr "숨김" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" -msgstr "" +msgstr "비공개" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" -msgstr "" - -#: templates/contest/list.html:131 -msgid "Spectate" -msgstr "" +msgstr "순위" -#: templates/contest/list.html:137 +#: templates/contest/list.html:138 templates/contest/list.html:150 msgid "Join" -msgstr "" +msgstr "참가" -#: templates/contest/list.html:147 +#: templates/contest/list.html:144 +msgid "Spectate" +msgstr "관전" + +#: templates/contest/list.html:160 msgid "Active Contests" -msgstr "" +msgstr "대회 활성화" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" -msgstr "" +msgstr "대회" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" -msgstr "" +msgstr "진행중인 대회" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" -msgstr "" +msgstr "진행예정 대회" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." -msgstr "" +msgstr "예정된 대회가 없습니다." -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" -msgstr "" +msgstr "지난 대회들" #: templates/contest/media-js.html:4 msgid "Are you sure you want to leave?" -msgstr "" +msgstr "정말로 나가시겠습니까?" #: templates/contest/media-js.html:5 msgid "You cannot come back to a virtual participation. You will have to start a new one." @@ -3837,7 +4019,12 @@ msgstr "" #: templates/contest/media-js.html:10 msgid "Joining a contest starts your timer, after which it becomes unstoppable." -msgstr "" +msgstr "콘테스트에 참여하시면 타이머가 시작하고, 일시정지 할 수 없습니다." + +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "이 콘테스트에 참가하면 %(contest)s 를 떠나게 됩니다." #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" @@ -3845,11 +4032,11 @@ msgstr "" #: templates/contest/moss.html:33 msgid "Are you sure you want to delete the MOSS results?" -msgstr "" +msgstr "정말로 이 MOSS 결과를 삭제하겠습니까?" #: templates/contest/moss.html:60 msgid "No submissions" -msgstr "" +msgstr "제출 없음" #: templates/contest/moss.html:74 msgid "Re-MOSS contest" @@ -3863,12 +4050,24 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" -msgstr "" +msgstr "그리고, 다음 조직들만이 이 콘테스트에 접근할 수 있습니다." -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" +msgstr "다음 조직들만이 이 콘테스트에 접근할 수 있습니다." + +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" msgstr "" #: templates/contest/ranking-table.html:7 @@ -3898,23 +4097,23 @@ msgstr "" #: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" -msgstr "" +msgstr "이 참여의 자격을 취소하시겠습니까?" #: templates/contest/ranking.html:250 msgid "View user participation" -msgstr "" +msgstr "사용자 참여 보기" #: templates/contest/ranking.html:254 msgid "Show organizations" -msgstr "" +msgstr "조직들 표시" #: templates/contest/stats.html:38 msgid "Problem Status Distribution" -msgstr "" +msgstr "문제 상태 분포" #: templates/contest/stats.html:43 msgid "Problem AC Rate" -msgstr "" +msgstr "문제 정답률" #: templates/contest/stats.html:48 templates/stats/language.html:16 msgid "Submissions by Language" @@ -3922,11 +4121,11 @@ msgstr "" #: templates/contest/stats.html:54 templates/stats/language.html:26 msgid "Language AC Rate" -msgstr "" +msgstr "언어 AC 비율" #: templates/license.html:12 msgid "Source:" -msgstr "" +msgstr "소스:" #: templates/newsletter/common.html:6 #: templates/newsletter/subscription_unsubscribe_activated.html:3 @@ -3934,14 +4133,14 @@ msgstr "" #: templates/newsletter/subscription_update_activated.html:3 #: templates/newsletter/subscription_update_activated.html:6 msgid "Newsletter" -msgstr "" +msgstr "뉴스 레터" #: templates/newsletter/subscription_unsubscribe_activated.html:3 #: templates/newsletter/subscription_unsubscribe_activated.html:6 #: templates/newsletter/subscription_update_activated.html:3 #: templates/newsletter/subscription_update_activated.html:6 msgid "activate" -msgstr "" +msgstr "활성화" #: templates/newsletter/subscription_unsubscribe_activated.html:8 msgid "You have successfully been unsubscribed." @@ -3952,104 +4151,116 @@ msgstr "" #: templates/newsletter/subscription_unsubscribe_user.html:3 #: templates/newsletter/subscription_unsubscribe_user.html:6 msgid "Newsletter unsubscribe" -msgstr "" +msgstr "뉴스레터 수신 거부" #: templates/newsletter/subscription_unsubscribe_email_sent.html:8 msgid "Your unsubscription request has successfully been received. An email has been sent to you with a link you need to follow in order to confirm your unsubscription." -msgstr "" +msgstr "구독 취소 요청이 성공적으로 접수되었습니다. 구독 취소를 확인하기 위해 따라야 하는 링크가 포함된 이메일이 전송되었습니다." #: templates/newsletter/subscription_unsubscribe_user.html:17 msgid "Do you want to unsubscribe from this newsletter?" -msgstr "" +msgstr "이 뉴스레터를 구독 해지 하시겠습니까?" #: templates/newsletter/subscription_unsubscribe_user.html:21 msgid "Unsubscribe" -msgstr "" +msgstr "구독 해지" #: templates/newsletter/subscription_update.html:3 #: templates/newsletter/subscription_update.html:6 #: templates/newsletter/subscription_update_email_sent.html:3 #: templates/newsletter/subscription_update_email_sent.html:6 msgid "Newsletter update" -msgstr "" +msgstr "뉴스레터 업데이트" #: templates/newsletter/subscription_update.html:9 msgid "Due to a technical error we were not able to submit your confirmation email. This could be because your email address is invalid." -msgstr "" +msgstr "기술적인 오류로 인해 확인 이메일을 제출할 수 없습니다. 이메일 주소가 잘못되었기 때문일 수 있습니다." #: templates/newsletter/subscription_update.html:14 msgid "Update subscription" -msgstr "" +msgstr "구독 업데이트" #: templates/newsletter/subscription_update_activated.html:8 msgid "Your subscription has successfully been updated." -msgstr "" +msgstr "구독이 성공적으로 업데이트되었습니다." #: templates/newsletter/subscription_update_email_sent.html:8 msgid "Your update request was successfully received and an activation email has been sent to you. In that email you will find a link which you need to follow in order to update your subscription." -msgstr "" +msgstr "업데이트 요청이 성공적으로 수신되었으며 활성화 이메일이 전송되었습니다. 해당 이메일에서 구독을 업데이트하기 위해 따라야 하는 링크를 찾을 수 있습니다." #: templates/organization/edit.html:47 #: templates/organization/requests/pending.html:34 #: templates/ticket/edit-notes.html:4 msgid "Update" -msgstr "" +msgstr "업데이트" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" -msgstr "" +msgstr "정말 이 조직을 떠나시겠어요?" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." -msgstr "" +msgstr "조직 순위표에 표시되려면 다시 가입해야 합니다." -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." -msgstr "" +msgstr "다시 가입하려면 회원가입을 요청해야 합니다." -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" -msgstr "" +msgstr "조직 탈퇴" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" -msgstr "" +msgstr "조직 가입" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" -msgstr "" +msgstr "멤버십 요청" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" -msgstr "" +msgstr "조직 편집" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" -msgstr "" +msgstr "요청 확인" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" -msgstr "" +msgstr "조직 관리" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" -msgstr "" +msgstr "이름" #: templates/organization/list.html:24 msgid "Members" -msgstr "" +msgstr "멤버들" #: templates/organization/new.html:10 templates/ticket/new.html:39 msgid "Create" -msgstr "" +msgstr "만들기" #: templates/organization/requests/detail.html:13 msgid "User:" -msgstr "" +msgstr "유저:" #: templates/organization/requests/detail.html:17 msgid "Organization:" @@ -4057,43 +4268,47 @@ msgstr "" #: templates/organization/requests/detail.html:25 msgid "Time:" -msgstr "" +msgstr "시간:" #: templates/organization/requests/detail.html:29 msgid "Reason:" -msgstr "" +msgstr "이유:" #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" -msgstr "" +msgstr "상태" #: templates/organization/requests/log.html:12 #: templates/organization/requests/pending.html:15 msgid "Reason" -msgstr "" +msgstr "이유" #: templates/organization/requests/log.html:28 #: templates/organization/requests/pending.html:37 msgid "There are no requests to approve." -msgstr "" +msgstr "승인할 요청이 없습니다." #: templates/organization/requests/pending.html:17 #: templates/problem/data.html:392 msgid "Delete?" +msgstr "삭제하시겠습니까?" + +#: templates/organization/requests/request.html:24 +msgid "Select your class:" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" -msgstr "" +msgstr "가입 사유:" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" -msgstr "" +msgstr "요청" #: templates/organization/requests/tabs.html:4 msgid "Pending" -msgstr "" +msgstr "보류 중" #: templates/organization/requests/tabs.html:7 msgid "Log" @@ -4101,19 +4316,19 @@ msgstr "" #: templates/organization/requests/tabs.html:10 msgid "Approved" -msgstr "" +msgstr "승인됨" #: templates/organization/requests/tabs.html:13 msgid "Rejected" -msgstr "" +msgstr "거절됨" #: templates/organization/users-table.html:15 msgid "Kick" -msgstr "" +msgstr "내보내기" #: templates/organization/users.html:34 msgid "Are you sure you want to kick this user?" -msgstr "" +msgstr "정말로 이 유저를 내보내겠습니까?" #: templates/pagedown.html:10 msgid "Update preview" @@ -4125,7 +4340,7 @@ msgstr "" #: templates/problem/data.html:344 msgid "View YAML" -msgstr "" +msgstr "YAML 보기" #: templates/problem/data.html:360 msgid "Show columns:" @@ -4145,7 +4360,7 @@ msgstr "" #: templates/problem/data.html:375 templates/problem/data.html:390 msgid "Generator args" -msgstr "" +msgstr "생성자 인자" #: templates/problem/data.html:382 msgid "Type" @@ -4161,28 +4376,32 @@ msgstr "" #: templates/problem/data.html:386 msgid "Pretest?" -msgstr "" +msgstr "사전 테스트?" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" #: templates/problem/data.html:439 msgid "Add new case" -msgstr "" +msgstr "새 케이스 추가" #: templates/problem/data.html:441 msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." +msgstr "" + +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" -msgstr[0] "" +msgstr[0] "저자:" #: templates/problem/list.html:62 msgid "Filter by type..." @@ -4190,18 +4409,18 @@ msgstr "" #: templates/problem/list.html:183 msgid "Hot problems" -msgstr "" +msgstr "인기 있는 문제" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" -msgstr "" +msgstr "분류" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" -msgstr "" +msgstr "유형" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4237,15 +4456,15 @@ msgstr "" #: templates/problem/manage_submission.html:120 msgid "Filter by ID:" -msgstr "" +msgstr "아이디로 필터링:" #: templates/problem/manage_submission.html:123 msgid "Starting ID:" -msgstr "" +msgstr "시작하는 아이디:" #: templates/problem/manage_submission.html:127 msgid "Ending ID:" -msgstr "" +msgstr "끝나는 아이디:" #: templates/problem/manage_submission.html:131 msgid "This range includes both endpoints." @@ -4253,38 +4472,38 @@ msgstr "" #: templates/problem/manage_submission.html:134 msgid "Filter by language:" -msgstr "" +msgstr "언어로 필터링" #: templates/problem/manage_submission.html:150 msgid "Rejudge selected submissions" -msgstr "" +msgstr "선택한 제출 재채점" #: templates/problem/manage_submission.html:157 msgid "Rescore Everything" -msgstr "" +msgstr "모두 재검토" #: templates/problem/manage_submission.html:158 #, python-format msgid "This will rescore %(count)d submissions." -msgstr "" +msgstr "%(count)d 개의 제출이 재검토 될 예정입니다." #: templates/problem/manage_submission.html:162 #, python-format msgid "Are you sure you want to rescore %(count)d submissions?" -msgstr "" +msgstr "%(count)d 개의 제출을 재검토를 원하십니까?" #: templates/problem/manage_submission.html:163 msgid "Rescore all submissions" -msgstr "" +msgstr "모든 제출 재검토" #: templates/problem/problem.html:91 msgid "View as PDF" -msgstr "" +msgstr "PDF로 보기" #: templates/problem/problem.html:101 templates/problem/problem.html:111 #: templates/problem/problem.html:116 msgid "Submit solution" -msgstr "" +msgstr "답안 제출" #: templates/problem/problem.html:104 #, python-format @@ -4298,11 +4517,11 @@ msgstr "" #: templates/problem/problem.html:124 msgid "My submissions" -msgstr "" +msgstr "내 답안들" #: templates/problem/problem.html:128 msgid "Best submissions" -msgstr "" +msgstr "모범 답안" #: templates/problem/problem.html:131 msgid "Read editorial" @@ -4314,11 +4533,11 @@ msgstr "" #: templates/problem/problem.html:140 msgid "Edit problem" -msgstr "" +msgstr "문제 수정" #: templates/problem/problem.html:142 msgid "Edit test data" -msgstr "" +msgstr "테스트 케이스 수정" #: templates/problem/problem.html:147 msgid "My tickets" @@ -4338,20 +4557,20 @@ msgstr "" #: templates/problem/problem.html:178 msgid "Time limit:" -msgstr "" +msgstr "시간 제한:" #: templates/problem/problem.html:190 msgid "Memory limit:" -msgstr "" +msgstr "메모리 제한:" #: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" -msgstr[0] "" +msgstr[0] "문제 유형" #: templates/problem/problem.html:239 msgid "Allowed languages" -msgstr "" +msgstr "허용된 언어" #: templates/problem/problem.html:247 #, python-format @@ -4361,90 +4580,93 @@ msgstr "" #: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" -msgstr[0] "" +msgstr[0] "채점:" #: templates/problem/problem.html:275 msgid "none available" -msgstr "" +msgstr "선택 가능한 항목 없음" #: templates/problem/problem.html:300 msgid "Request clarification" -msgstr "" +msgstr "설명 요구" #: templates/problem/problem.html:302 msgid "Report an issue" -msgstr "" +msgstr "이슈 등록" #: templates/problem/raw.html:62 msgid "Time Limit:" -msgstr "" +msgstr "시간 초과:" #: templates/problem/raw.html:71 msgid "Memory Limit:" -msgstr "" +msgstr "메모리 초과:" #: templates/problem/search-form.html:2 msgid "Problem search" -msgstr "" +msgstr "문제 검색" #: templates/problem/search-form.html:8 msgid "Search problems..." -msgstr "" +msgstr "문제 검색" #: templates/problem/search-form.html:14 msgid "Full text search" -msgstr "" +msgstr "전체 텍스트 찾기" #: templates/problem/search-form.html:21 msgid "Hide solved problems" -msgstr "" +msgstr "푼 문제 숨기기" #: templates/problem/search-form.html:27 -msgid "Show problem types" +msgid "Has editorial" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:32 +msgid "Show problem types" +msgstr "문제 유형 필터 표시" + +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" -msgstr "" +msgstr "모두" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" -msgstr "" +msgstr "문제 유형" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" -msgstr "" +msgstr "이동" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" -msgstr "" +msgstr "무작위" #: templates/problem/submit.html:117 msgid "Your source code must contain at most 65536 characters." -msgstr "" +msgstr "소스 코드는 65536자를 넘을 수 없습니다." #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" -msgstr[0] "" +msgstr[0] "%(left)s 제출 횟수가 남았습니다." -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" -msgstr "" +msgstr "0번의 제출 횟수가 남았습니다." -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4464,22 +4686,22 @@ msgstr "" #: templates/registration/login.html:53 #: templates/registration/two_factor_auth.html:92 msgid "Login!" -msgstr "" +msgstr "로그인!" #: templates/registration/login.html:56 msgid "Forgot your password?" -msgstr "" +msgstr "비밀번호를 잊어버리셨습니까?" #: templates/registration/login.html:59 msgid "Or log in with..." -msgstr "" +msgstr "또는 다음으로 로그인하기:" #: templates/registration/logout.html:3 msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4496,7 +4718,7 @@ msgstr "" #: templates/registration/password_reset_confirm.html:9 msgid "Reset Password" -msgstr "" +msgstr "비밀번호 초기화" #: templates/registration/password_reset_confirm.html:12 msgid "Invalid password reset link." @@ -4555,7 +4777,7 @@ msgstr "" #: templates/registration/profile_creation.html:36 #: templates/registration/username_select.html:7 msgid "Continue >" -msgstr "" +msgstr "계속" #: templates/registration/registration_closed.html:3 msgid "Registration is currently closed. Please contact an administrator." @@ -4575,11 +4797,11 @@ msgstr "" #: templates/registration/registration_form.html:176 msgid "pick from map" -msgstr "" +msgstr "지도에서 고르기" #: templates/registration/registration_form.html:181 msgid "Default language" -msgstr "" +msgstr "기본 언어" #: templates/registration/registration_form.html:184 #: templates/user/edit-profile.html:314 @@ -4597,15 +4819,15 @@ msgstr "" #: templates/registration/registration_form.html:205 msgid "Terms & Conditions" -msgstr "" +msgstr "이용 약관 & 조건" #: templates/registration/registration_form.html:208 msgid "Register!" -msgstr "" +msgstr "등록" #: templates/registration/totp_disable.html:31 msgid "To protect your account, you must first authenticate before you can disable Two Factor Authentication." -msgstr "" +msgstr "계정을 보호하기 위해서, 이중(2-Factor) 인증을 비활성화 하려면 먼저 인증해야 합니다." #: templates/registration/totp_disable.html:38 msgid "Enter the 6-digit code generated by your app or one of your 16-digit scratch codes:" @@ -4613,7 +4835,7 @@ msgstr "" #: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" -msgstr "" +msgstr "이중(2-Factor) 인증 사용 비활성화" #: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" @@ -4621,7 +4843,7 @@ msgstr "" #: templates/registration/totp_enable.html:73 msgid "QR code" -msgstr "" +msgstr "QR 코드" #: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" @@ -4663,6 +4885,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4689,7 +4920,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4708,132 +4939,132 @@ msgstr "" #: templates/status/judge-status-table.html:4 msgid "Online" -msgstr "" +msgstr "온라인" #: templates/status/judge-status-table.html:6 msgid "Uptime" -msgstr "" +msgstr "운영 시간" #: templates/status/judge-status-table.html:7 msgid "Ping" -msgstr "" +msgstr "핑" #: templates/status/judge-status-table.html:8 msgid "Load" -msgstr "" +msgstr "불러오기" #: templates/status/judge-status-table.html:34 #: templates/status/judge-status-table.html:41 #: templates/status/judge-status-table.html:48 #: templates/status/judge-status-table.html:59 msgid "N/A" -msgstr "" +msgstr "없음" #: templates/status/judge-status-table.html:64 msgid "There are no judges available at this time." -msgstr "" +msgstr "현재 이용 가능한 채점기가 없습니다." -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" -msgstr "" +msgstr "아이디" #: templates/status/language-list.html:36 msgid "Runtime Info" -msgstr "" +msgstr "런타임 정보" #: templates/status/status-tabs.html:4 msgid "Judges" -msgstr "" +msgstr "채첨" #: templates/status/status-tabs.html:6 msgid "Version Matrix" -msgstr "" +msgstr "버전 표" #: templates/submission/internal-error-message.html:3 #, python-format msgid "An internal error occurred while grading, and the %(SITE_NAME)s administrators have been notified.
In the meantime, try resubmitting in a few seconds." -msgstr "" +msgstr "채점하는 동안 내부 오류가 발생하여 %(SITE_NAME)s 관리자에게 알렸습니다.
잠시 후 다시 제출하세요." #: templates/submission/internal-error-message.html:8 msgid "An internal error occurred while grading." -msgstr "" +msgstr "채점 도중 내부 에러가 발생했습니다. " #: templates/submission/internal-error-message.html:15 msgid "Error information" -msgstr "" +msgstr "에러 정보" #: templates/submission/list.html:76 msgid "Filter by status..." -msgstr "" +msgstr "상태 별로 필터링" #: templates/submission/list.html:82 msgid "Filter by language..." -msgstr "" +msgstr "언어로 필터링" #: templates/submission/list.html:306 msgid "Filter submissions" -msgstr "" +msgstr "제출 필터" #: templates/submission/list.html:342 msgid "Total:" -msgstr "" +msgstr "합계:" #: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." -msgstr "" +msgstr "연결이 끊겼습니다. 최신 업데이트를 표시하려면 새로고침하세요." #: templates/submission/row.html:44 #, python-format msgid "Case #%(case)s" -msgstr "" +msgstr "#%(case)s 케이스" #: templates/submission/row.html:54 msgid "view" -msgstr "" +msgstr "보기" #: templates/submission/row.html:59 msgid "rejudge" -msgstr "" +msgstr "다시 채점하기" #: templates/submission/row.html:64 msgid "This submission has been locked, and cannot be rejudged." -msgstr "" +msgstr "이 제출은 잠겼으며 다시 채점할 수 없습니다." #: templates/submission/row.html:65 msgid "locked" -msgstr "" +msgstr "잠김" #: templates/submission/row.html:71 msgid "admin" -msgstr "" +msgstr "관리자" #: templates/submission/source.html:25 msgid "View status" -msgstr "" +msgstr "상태 보기" #: templates/submission/source.html:26 msgid "View raw source" -msgstr "" +msgstr "윈시 소스 보기" #: templates/submission/source.html:28 templates/submission/status.html:74 msgid "Resubmit" -msgstr "" +msgstr "다시 제출" #: templates/submission/status-testcases.html:10 msgid "We are waiting for a suitable judge to process your submission..." -msgstr "" +msgstr "제출을 처리하기에 채점기를 기다리고 있습니다..." #: templates/submission/status-testcases.html:12 msgid "Your submission is being processed..." -msgstr "" +msgstr "제출이 처리도는 중입니다..." #: templates/submission/status-testcases.html:14 msgid "Compilation Error" -msgstr "" +msgstr "컴파일 에러" #: templates/submission/status-testcases.html:18 msgid "Compilation Warnings" -msgstr "" +msgstr "컴파일 경고" #: templates/submission/status-testcases.html:23 msgid "Pretest Execution Results" @@ -4872,7 +5103,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4916,405 +5147,407 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " -msgstr "" +msgstr "재개됨:" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " -msgstr "" +msgstr "닫힘:" #: templates/ticket/list.html:221 msgid "Use desktop notification" -msgstr "" +msgstr "데스크탑 알람 사용하기" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "마감된 티켓 숨기기" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" -msgstr "" +msgstr "내 티켓만 보기" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" -msgstr "" +msgstr "파일링 사용자" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" -msgstr[0] "" +msgstr[0] "인증된 사용자" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" -msgstr "" +msgstr "제목" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" -msgstr "" +msgstr "인증된 사용자" + +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "{time} 메시지 수신" #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" -msgstr "" +msgstr "티켓을 활성화 해주셔서 감사합니다." #: templates/ticket/new_problem.html:9 msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." -msgstr "" +msgstr "이 양식은 도움을 요청하는 것이 아닌 문제 기술의 문제점을 보고하기 위한 것임을 명심하세요. 문제 해결에 도움이 필요하다면 댓글로 요청하세요." -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" -msgstr "" +msgstr "등록" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" -msgstr "" +msgstr "관련 객체" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." -msgstr "" +msgstr "할당된 사람이 없습니다." -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" -msgstr "" +msgstr "티켓 마감" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" -msgstr "" +msgstr "티켓 재발급" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" -msgstr "" +msgstr "인증된 사용자 노트" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." -msgstr "" +msgstr "표시할 것이 없습니다. " #: templates/user/base-users-table.html:3 msgid "Rank" -msgstr "" +msgstr "순위" #: templates/user/base-users.html:14 templates/user/base-users.html:71 msgid "Search by handle..." -msgstr "" +msgstr "손쉽게 검색..." #: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" -msgstr "" +msgstr "API 토큰을 생성하거나 재생성 하겠습니까?" #: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." -msgstr "" +msgstr "이전 API 토큰이 무효화됩니다." #: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." -msgstr "" +msgstr "또한 2단계 인증 없이 계정에 접근할 수 있습니다." #: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" -msgstr "" +msgstr "이 페이지를 나간 후에는 API 토큰을 볼 수 없습니다." #: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." -msgstr "" +msgstr "생성 중..." #: templates/user/edit-profile.html:125 templates/user/edit-profile.html:247 #: templates/user/edit-profile.html:373 templates/user/edit-profile.html:395 msgid "Regenerate" -msgstr "" +msgstr "재생성" #: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" -msgstr "" +msgstr "삭제" #: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" -msgstr "" +msgstr "API 토큰을 삭제하겠습니까?" #: templates/user/edit-profile.html:148 templates/user/edit-profile.html:377 #: templates/user/edit-profile.html:401 msgid "Generate" -msgstr "" +msgstr "생성" #: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" -msgstr "" +msgstr "보안 키를 삭제하겠습니까?" #: templates/user/edit-profile.html:284 msgid "Self-description" -msgstr "" +msgstr "자기 소개" #: templates/user/edit-profile.html:291 msgid "Select your closest major city" -msgstr "" +msgstr "가장 가까운 대도시를 선택하세요" #: templates/user/edit-profile.html:300 msgid "Editor theme" -msgstr "" +msgstr "편집기 테마" #: templates/user/edit-profile.html:305 msgid "Math engine" -msgstr "" +msgstr "수학 엔진" #: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" -msgstr "" +msgstr "아바타 변경" #: templates/user/edit-profile.html:346 msgid "Change your password" -msgstr "" +msgstr "비밀번호 변경" #: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" -msgstr "" +msgstr "2단계 인증이 활성화 되었습니다." #: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 msgid "Disable" -msgstr "" +msgstr "비활성화" #: templates/user/edit-profile.html:367 msgid "Refresh" -msgstr "" +msgstr "새로 고침" #: templates/user/edit-profile.html:370 msgid "Scratch Codes:" -msgstr "" +msgstr "기본 코드:" #: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" -msgstr "" +msgstr "숨기기" #: templates/user/edit-profile.html:384 msgid "Two-factor Authentication is disabled" -msgstr "" +msgstr "2단계 인증이 비활성화 되었습니다." #: templates/user/edit-profile.html:385 msgid "Enable" -msgstr "" +msgstr "활성화" #: templates/user/edit-profile.html:392 msgid "API Token" -msgstr "" +msgstr "API 토큰" #: templates/user/edit-profile.html:409 msgid "Security keys" -msgstr "" +msgstr "보안 키" #: templates/user/edit-profile.html:419 msgid "Delete" -msgstr "" +msgstr "삭제" #: templates/user/edit-profile.html:426 msgid "Enter a name for this key" -msgstr "" +msgstr "해당 키의 이름을 입력하세요" #: templates/user/edit-profile.html:427 msgid "Add" -msgstr "" +msgstr "추가" #: templates/user/edit-profile.html:435 msgid "User-script" -msgstr "" +msgstr "사용자 스크립트" #: templates/user/edit-profile.html:439 msgid "Update profile" -msgstr "" - -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" +msgstr "프로필 업데이트" -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" -msgstr "" +msgstr "%(pp).1fpp" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" -msgstr "" +msgstr "%(pp).0fpp" #: templates/user/prepare-data.html:64 msgid "Are you sure you want to prepare a download?" -msgstr "" +msgstr "다운로드를 준비하겠습니까?" #: templates/user/prepare-data.html:79 msgid "We are currently preparing your data." -msgstr "" +msgstr "데이터를 준비하고 있습니다." #: templates/user/prepare-data.html:81 msgid "Track progress" -msgstr "" +msgstr "진행사항 추적" #: templates/user/prepare-data.html:86 msgid "Once your data is ready, you will find a download link on this page." -msgstr "" +msgstr "데이터가 준비되면, 이 페이지에서 다운로드 링크를 찾을 수 있습니다." #: templates/user/prepare-data.html:103 msgid "Submissions" -msgstr "" +msgstr "제출" #: templates/user/prepare-data.html:120 msgid "Prepare new download" -msgstr "" +msgstr "새로운 다운로드 준비" #: templates/user/prepare-data.html:122 msgid "Prepare download" -msgstr "" +msgstr "다운로드 준비" #: templates/user/prepare-data.html:126 msgid "Download prepared data" -msgstr "" +msgstr "준비된 데이터 다운로드" #: templates/user/prepare-data.html:132 msgid "Your data is ready!" -msgstr "" +msgstr "이제 데이터를 사용할 수 있습니다!" #: templates/user/prepare-data.html:136 msgid "Download data" -msgstr "" +msgstr "데이터 다운로드" #: templates/user/user-about.html:14 msgid "From" -msgstr "" +msgstr "시작" #: templates/user/user-about.html:25 msgid "Admin Notes" -msgstr "" +msgstr "관리 노트" #: templates/user/user-about.html:33 templates/user/user-tabs.html:4 msgid "About" -msgstr "" +msgstr "정보" #: templates/user/user-about.html:40 msgid "You have not shared any information." -msgstr "" +msgstr "정보를 공유하지 않았습니다." #: templates/user/user-about.html:42 msgid "This user has not shared any information." -msgstr "" +msgstr "이 사용자는 정보를 공유하지 않았습니다." #: templates/user/user-about.html:59 msgid "Sun" -msgstr "" +msgstr "일" #: templates/user/user-about.html:64 msgid "Mon" -msgstr "" +msgstr "월" #: templates/user/user-about.html:69 msgid "Tues" -msgstr "" +msgstr "화" #: templates/user/user-about.html:74 msgid "Wed" -msgstr "" +msgstr "수" #: templates/user/user-about.html:79 msgid "Thurs" -msgstr "" +msgstr "목" #: templates/user/user-about.html:84 msgid "Fri" -msgstr "" +msgstr "금" #: templates/user/user-about.html:89 msgid "Sat" -msgstr "" +msgstr "토" #: templates/user/user-about.html:98 msgid "Less" -msgstr "" +msgstr "간단히" #: templates/user/user-about.html:104 msgid "More" -msgstr "" +msgstr "더 보기" #: templates/user/user-about.html:112 msgid "Rating history" -msgstr "" +msgstr "등급 기록" #: templates/user/user-about.html:183 msgid "past year" -msgstr "" +msgstr "지난 해" #: templates/user/user-base.html:42 #, python-format msgid "%(counter)s problem solved" msgid_plural "%(counter)s problems solved" -msgstr[0] "" +msgstr[0] "%(counter)s 개의 문제를 품" #: templates/user/user-base.html:50 msgid "Rank by points:" -msgstr "" +msgstr "포인트 순위" #: templates/user/user-base.html:53 msgid "Total points:" -msgstr "" +msgstr "총점" #: templates/user/user-base.html:67 #, python-format msgid "%(counter)s contest written" msgid_plural "%(counter)s contests written" -msgstr[0] "" +msgstr[0] "%(counter)s 개의 대회를 작성함" #: templates/user/user-base.html:74 msgid "Rank by rating:" -msgstr "" +msgstr "등급 순위" #: templates/user/user-base.html:76 msgid "Rating:" -msgstr "" +msgstr "등급:" #: templates/user/user-base.html:77 msgid "Min. rating:" -msgstr "" +msgstr "최소 등급:" #: templates/user/user-base.html:78 msgid "Max rating:" -msgstr "" +msgstr "최대 등급:" #: templates/user/user-problems.html:37 msgid "Points breakdown" -msgstr "" +msgstr "점수 분석" #: templates/user/user-problems.html:43 msgid "Load more..." -msgstr "" +msgstr "더보기" #: templates/user/user-problems.html:47 msgid "This user has not yet solved any problems." -msgstr "" +msgstr "이 사용자는 아직 문제를 푼 적이 없습니다." #: templates/user/user-problems.html:53 msgid "Authored problems" -msgstr "" +msgstr "인증 완료 문제" #: templates/user/user-problems.html:85 msgid "Hide problems I've solved" -msgstr "" +msgstr "풀었던 푼제 숨기기 " #: templates/user/user-problems.html:95 #, python-format msgid "%(points).1f points" -msgstr "" +msgstr "%(points).1f points" #: templates/user/user-problems.html:112 #, python-format msgid "%(points)s / %(total)s" -msgstr "" +msgstr "%(points)s / %(total)s" #: templates/user/user-tabs.html:7 msgid "Impersonate" -msgstr "" +msgstr "도용" #: templates/user/user-tabs.html:10 msgid "Admin User" -msgstr "" +msgstr "관리자" #: templates/user/user-tabs.html:13 msgid "Admin Profile" -msgstr "" +msgstr "관리자 프로필" #: templates/widgets/select_all.html:8 msgid "Check all" -msgstr "" +msgstr "모두 선택" diff --git a/locale/lt/LC_MESSAGES/django.po b/locale/lt/LC_MESSAGES/django.po index 6786d7053a..bb235f8e62 100644 --- a/locale/lt/LC_MESSAGES/django.po +++ b/locale/lt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:30\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: Lithuanian\n" "Language: lt_LT\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "" @@ -123,42 +123,42 @@ msgstr "" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -167,11 +167,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -180,11 +180,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -193,11 +193,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -206,11 +206,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -219,7 +219,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -228,15 +228,15 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -252,17 +252,17 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -279,9 +279,9 @@ msgstr "" msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -290,8 +290,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "" @@ -347,10 +347,10 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "" @@ -401,42 +401,52 @@ msgstr "" msgid "Capabilities" msgstr "" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -445,34 +455,34 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "" @@ -500,7 +510,7 @@ msgstr "" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -622,7 +632,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -690,7 +700,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -698,7 +708,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -721,6 +731,10 @@ msgstr "" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" @@ -782,7 +796,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -823,463 +837,532 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1319,7 +1402,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1327,7 +1410,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1355,11 +1438,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1380,7 +1467,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1392,7 +1479,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1412,7 +1499,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1441,252 +1528,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1798,289 +1885,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2228,6 +2368,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2236,210 +2380,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2495,16 +2639,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2513,11 +2685,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2586,12 +2758,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2644,11 +2816,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2656,130 +2832,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2808,71 +2983,81 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2881,7 +3066,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2890,95 +3075,105 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2995,27 +3190,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3025,17 +3215,17 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." @@ -3044,36 +3234,21 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3107,84 +3282,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3209,30 +3387,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3241,27 +3419,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3283,49 +3461,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3381,36 +3559,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3487,7 +3668,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3500,7 +3681,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3521,43 +3702,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3633,12 +3814,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3646,8 +3831,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3672,7 +3856,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3680,15 +3864,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3700,21 +3889,7 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." @@ -3723,7 +3898,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." @@ -3732,49 +3907,49 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." @@ -3783,70 +3958,75 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3858,44 +4038,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3911,6 +4091,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3935,14 +4120,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "" @@ -4067,46 +4264,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4155,11 +4364,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4235,7 +4448,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4247,11 +4460,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4267,16 +4484,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4484,28 +4701,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4514,11 +4735,10 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -4527,11 +4747,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4566,7 +4786,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4750,6 +4970,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4776,7 +5005,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4820,7 +5049,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4959,7 +5188,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -5003,11 +5232,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -5016,14 +5245,18 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5031,14 +5264,19 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -5047,31 +5285,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5205,19 +5443,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/nl/LC_MESSAGES/django.po b/locale/nl/LC_MESSAGES/django.po index 9b55c83cf6..aa0f4b63bf 100644 --- a/locale/nl/LC_MESSAGES/django.po +++ b/locale/nl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:29\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:41\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "" @@ -119,108 +119,108 @@ msgstr "" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -236,17 +236,17 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -263,9 +263,9 @@ msgstr "" msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -274,8 +274,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "" @@ -325,10 +325,10 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "" @@ -377,76 +377,86 @@ msgstr "" msgid "Capabilities" msgstr "" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "" @@ -474,7 +484,7 @@ msgstr "" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -592,7 +602,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -660,7 +670,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -668,7 +678,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -691,6 +701,10 @@ msgstr "" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" @@ -752,7 +766,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -793,463 +807,532 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1289,7 +1372,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1297,7 +1380,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1325,11 +1408,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1350,7 +1437,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1362,7 +1449,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1382,7 +1469,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1411,252 +1498,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1768,289 +1855,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2198,6 +2338,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2206,210 +2350,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2465,16 +2609,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2483,11 +2655,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2556,12 +2728,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2608,11 +2780,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2620,130 +2796,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2772,173 +2947,193 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2955,27 +3150,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -2985,53 +3175,38 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3065,84 +3240,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3167,30 +3345,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3199,27 +3377,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3241,49 +3419,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3339,36 +3517,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3445,7 +3626,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3458,7 +3639,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3479,43 +3660,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3591,12 +3772,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3604,8 +3789,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3630,7 +3814,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3638,15 +3822,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3658,147 +3847,138 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3810,44 +3990,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3863,6 +4043,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3887,14 +4072,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "" @@ -4019,46 +4216,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4107,11 +4316,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4187,7 +4400,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4199,11 +4412,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4217,16 +4434,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4428,28 +4645,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4458,22 +4679,21 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4508,7 +4728,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4692,6 +4912,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4718,7 +4947,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4762,7 +4991,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4901,7 +5130,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4945,11 +5174,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -4958,27 +5187,36 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -4987,31 +5225,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5145,19 +5383,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/pl/LC_MESSAGES/django.po b/locale/pl/LC_MESSAGES/django.po index 90fe0db4db..2631b303ea 100644 --- a/locale/pl/LC_MESSAGES/django.po +++ b/locale/pl/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:30\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "kataloński" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "Niemiecki" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "Angielski" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "Hiszpański" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "Chorwacki" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "Węgierski" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "japoński" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "Koreański" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "Rumuński" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "Rosyjski" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "Serbski (alfabet łaciński)" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "Turecki" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "Wietnamski" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "Chiński Uproszczony" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "tradycyjny chiński" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "Strona główna" @@ -123,42 +123,42 @@ msgstr "Dołączona strona" msgid "Included contests" msgstr "Załączniki" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Problem" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "Ustawienia" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "Planowanie" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "Szczegóły" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "Format" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Ocena" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "Dostęp" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -167,11 +167,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -180,11 +180,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -193,11 +193,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -206,11 +206,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -219,7 +219,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -228,15 +228,15 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "nazwa użytkownika" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -252,17 +252,17 @@ msgstr "Zawartość" msgid "Summary" msgstr "Podsumowanie" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "użytkownik" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "obiekt" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "Zobacz na stronie" @@ -279,9 +279,9 @@ msgstr "Media społecznościowe" msgid "Taxonomy" msgstr "Taksonomia" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Punkty" @@ -290,8 +290,8 @@ msgstr "Punkty" msgid "Limits" msgstr "Limity" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "Język" @@ -347,10 +347,10 @@ msgstr "" msgid "timezone" msgstr "strefa czasowa" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "Użytkownik" @@ -401,42 +401,52 @@ msgstr "Informacje" msgid "Capabilities" msgstr "Możliwości" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "Brak" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "Nie wykonane" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "Wyjątkowe" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "Niezaakceptowane" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s w %(contest)s" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "Nie masz uprawnień, aby edytować tą witrynę." -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -445,34 +455,34 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "Kod problemu" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "Nazwa problemu" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "Czas" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "Pamięć" @@ -500,7 +510,7 @@ msgstr "Treść komentarza" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -622,7 +632,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -690,7 +700,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -698,7 +708,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -721,6 +731,10 @@ msgstr "{time}" msgid "on {time}" msgstr "w {time}" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "Zostaw jako LaTeX" @@ -782,7 +796,7 @@ msgid "comments" msgstr "komentarze" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -823,463 +837,532 @@ msgstr "opis tagu" msgid "contest tag" msgstr "tag konkursu" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "tagi konkursu" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 +msgid "Hidden permanently" +msgstr "" + +#: judge/models/contest.py:67 msgid "contest id" msgstr "ID konkursu" -#: judge/models/contest.py:67 +#: judge/models/contest.py:69 msgid "contest name" msgstr "nazwa konkursu" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "opis" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "problemy" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "Czas rozpoczęcia" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "Godzina zakończenia" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "Limit czasowy" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "publicznie widoczny" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "zobacz tabelę wyników konkursu" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "brak komentarzy" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "oceń wszystko" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "ukryj tagi problemu" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "podsumowanie konkursu" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "kod dostępu" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "format konkursu" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "konkurs" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "konkursy" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "wynik" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "problem" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "punkty" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "częściowe" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "zgłoszenie" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "ocena" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1319,7 +1402,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "autorzy" @@ -1327,7 +1410,7 @@ msgstr "autorzy" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1355,11 +1438,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1380,7 +1467,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1392,7 +1479,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1412,7 +1499,7 @@ msgstr "link" msgid "full name" msgstr "pełna nazwa" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "krótka nazwa" @@ -1441,252 +1528,252 @@ msgstr "licencja" msgid "licenses" msgstr "licencje" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "kod problemu" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "Krótki, unikalny kod problemu, używany w adresie url po /problem/" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "nazwa problemu" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "Pełna nazwa problemu, pokazywana na liście problemów." -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "treść problemu" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "twórcy" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "testerzy" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "limit pamięci" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "dozwolone języki" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "rozwiązanie" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "rozwiązania" @@ -1798,289 +1885,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "data utworzenia" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2228,6 +2368,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2236,210 +2380,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "wynik" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "błędy kompilacji" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "zgłoszenia" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "kod źródłowy" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2495,16 +2639,44 @@ msgstr "treść wiadomości" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2513,11 +2685,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2586,12 +2758,12 @@ msgstr "Błąd" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2644,11 +2816,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2656,130 +2832,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2808,71 +2983,81 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2881,7 +3066,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2890,95 +3075,105 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2995,27 +3190,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3025,17 +3215,17 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." @@ -3044,36 +3234,21 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3107,84 +3282,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3209,30 +3387,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3241,27 +3419,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3283,49 +3461,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "Logowanie" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3381,36 +3559,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3487,7 +3668,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3500,7 +3681,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3521,43 +3702,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3633,12 +3814,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3646,8 +3831,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3672,7 +3856,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3680,15 +3864,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3700,21 +3889,7 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." @@ -3723,7 +3898,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." @@ -3732,49 +3907,49 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." @@ -3783,70 +3958,75 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3858,44 +4038,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3911,6 +4091,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3935,14 +4120,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "Organizacja" @@ -4067,46 +4264,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4155,11 +4364,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4235,7 +4448,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4247,11 +4460,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4267,16 +4484,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4484,28 +4701,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4514,11 +4735,10 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -4527,11 +4747,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4566,7 +4786,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4750,6 +4970,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4776,7 +5005,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4820,7 +5049,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4959,7 +5188,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -5003,11 +5232,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -5016,14 +5245,18 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5031,14 +5264,19 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -5047,31 +5285,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5205,19 +5443,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/pt/LC_MESSAGES/django.po b/locale/pt/LC_MESSAGES/django.po index 72223e56a2..3fffc3c8d3 100644 --- a/locale/pt/LC_MESSAGES/django.po +++ b/locale/pt/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:30\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "" @@ -119,108 +119,108 @@ msgstr "" msgid "Included contests" msgstr "" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "" @@ -236,17 +236,17 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -263,9 +263,9 @@ msgstr "" msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -274,8 +274,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "" @@ -325,10 +325,10 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "" @@ -377,76 +377,86 @@ msgstr "" msgid "Capabilities" msgstr "" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "" @@ -474,7 +484,7 @@ msgstr "" msgid "Your part is silent, little toad." msgstr "" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "" @@ -592,7 +602,7 @@ msgstr "" msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" @@ -660,7 +670,7 @@ msgstr "" msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" @@ -668,7 +678,7 @@ msgstr "" msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" @@ -691,6 +701,10 @@ msgstr "" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" @@ -752,7 +766,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "" @@ -793,463 +807,532 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1289,7 +1372,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "" @@ -1297,7 +1380,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1325,11 +1408,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1350,7 +1437,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1362,7 +1449,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1382,7 +1469,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1411,252 +1498,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1768,289 +1855,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2198,6 +2338,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2206,210 +2350,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2465,16 +2609,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2483,11 +2655,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2556,12 +2728,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2608,11 +2780,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2620,130 +2796,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2772,173 +2947,193 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2955,27 +3150,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -2985,53 +3175,38 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3065,84 +3240,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "My submissions in {0}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:573 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "" - -#: judge/views/submission.py:599 -#, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3167,30 +3345,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3199,27 +3377,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3241,49 +3419,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3339,36 +3517,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3445,7 +3626,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3458,7 +3639,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3479,43 +3660,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3591,12 +3772,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3604,8 +3789,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3630,7 +3814,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3638,15 +3822,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3658,147 +3847,138 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." msgstr[0] "" msgstr[1] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3810,44 +3990,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" +#: templates/contest/list.html:138 templates/contest/list.html:150 +msgid "Join" msgstr "" -#: templates/contest/list.html:137 -msgid "Join" +#: templates/contest/list.html:144 +msgid "Spectate" msgstr "" -#: templates/contest/list.html:147 +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3863,6 +4043,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3887,14 +4072,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "" @@ -4019,46 +4216,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4107,11 +4316,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4187,7 +4400,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "" @@ -4199,11 +4412,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4217,16 +4434,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4428,28 +4645,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4458,22 +4679,21 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4508,7 +4728,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4692,6 +4912,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4718,7 +4947,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4762,7 +4991,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "" @@ -4901,7 +5130,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4945,11 +5174,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -4958,27 +5187,36 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -4987,31 +5225,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5145,19 +5383,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po index 4fd725f7c7..71d38da1af 100644 --- a/locale/ru/LC_MESSAGES/django.po +++ b/locale/ru/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:30\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "Каталанский" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "немецкий" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "английский" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "Испанский" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "французский" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "Хорватский" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "Венгерский" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "Японский" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "Корейский" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "Бразильский португальский" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "Румынский" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "русский" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "Сербский (латиница)" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "Турецкий" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "Вьетнамский" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "Упрощенный китайский" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "Традиционный китайский" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "Главная" @@ -123,42 +123,42 @@ msgstr "Связанная страница" msgid "Included contests" msgstr "Включены конкурсы" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Проблема" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "Настройки" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "Расписание" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "Детали" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "Формат" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Рейтинг" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "Доступ" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "Судья" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -167,11 +167,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "Отметьте соревнования как видимые" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -180,11 +180,11 @@ msgstr[1] "%d соревнований помечены как скрытые" msgstr[2] "%d соревнований помечены как скрытые" msgstr[3] "%d соревнования успешно помечены как скрытые" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "Отметьте соревнования как скрытые" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -193,11 +193,11 @@ msgstr[1] "%d соревнований успешно скрыто" msgstr[2] "%d соревнований успешно скрыто" msgstr[3] "%d соревнования успешно скрыты" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "заблокировать решения соревования" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -206,11 +206,11 @@ msgstr[1] "%d соревнований успешно разблокирован msgstr[2] "%d соревнований успешно разблокировано" msgstr[3] "%d соревнования успешно разблокированы" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "разблокировать решения соревования" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -219,7 +219,7 @@ msgstr[1] "%d решений было успешно запланировано msgstr[2] "%d решений было успешно запланировано для повторного тестирования" msgstr[3] "%d решения были успешно запланированы для повторного тестирования" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -228,15 +228,15 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "Пересчитать результаты" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "имя пользователя" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "виртуальный" @@ -252,17 +252,17 @@ msgstr "Содержание" msgid "Summary" msgstr "Сводка" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "пользователь" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "объект" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "Посмотреть на сайте" @@ -279,9 +279,9 @@ msgstr "Социальные сети" msgid "Taxonomy" msgstr "Таксономия" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Очки" @@ -290,8 +290,8 @@ msgstr "Очки" msgid "Limits" msgstr "Ограничения" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "Язык" @@ -347,10 +347,10 @@ msgstr "Пометить задачу как приватную" msgid "timezone" msgstr "часовой пояс" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "Пользователь" @@ -401,42 +401,52 @@ msgstr "Информация" msgid "Capabilities" msgstr "Возможности" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "Не указано" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "Не сделано" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "Исключительный" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "Незачтенный" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s в %(contest)s" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "У вас нет доступа перетестировать поссылки." -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "У вас нет доступа перетестировать ТАК много посылок." -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "Перетестировать выбранные посылки" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -445,34 +455,34 @@ msgstr[1] "%d решений были переоценены." msgstr[2] "%d решений были переоценены." msgstr[3] "%d решения были переоценены." -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "Пересчитать выбранные решения" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "Исходный код" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "Название задачи" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "Время" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "Память" @@ -500,7 +510,7 @@ msgstr "Содержание комментария" msgid "Your part is silent, little toad." msgstr "Твоя роль-молчание, маленькая жаба." -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "Вам нужно решить хотя бы одну задачу, чтобы оставить комментарий." @@ -622,7 +632,7 @@ msgstr "Включить экспериментальные возможност msgid "You must solve at least one problem before you can update your profile." msgstr "Вы должны решить хотя бы одну проблему, прежде чем вы сможете обновить свой профиль." -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Вы не можете состоять более чем в {count} публичных организациях." @@ -690,7 +700,7 @@ msgstr "Неверный токен двухфакторной аутентиф msgid "Must specify either totp_token or webauthn_response." msgstr "Необходимо указать totp_token или webauthn_response." -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Код задачи должен быть ^[a-z0-9]+$" @@ -698,7 +708,7 @@ msgstr "Код задачи должен быть ^[a-z0-9]+$" msgid "Problem with code already exists." msgstr "Задача с кодом уже существует." -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Идентификатор соревнования должен быть ^[a-z0-9]+$" @@ -721,6 +731,10 @@ msgstr "{time}" msgid "on {time}" msgstr "" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "Оставить LaTeX" @@ -782,7 +796,7 @@ msgid "comments" msgstr "комментарии" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "Разбор задач для %s" @@ -823,463 +837,532 @@ msgstr "описание тега" msgid "contest tag" msgstr "тег соревнования" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "теги соревнования" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "" #: judge/models/contest.py:65 -msgid "contest id" +msgid "Hidden permanently" msgstr "" #: judge/models/contest.py:67 +msgid "contest id" +msgstr "" + +#: judge/models/contest.py:69 msgid "contest name" msgstr "название соревнования" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "описание" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "задачи" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "время начала" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "время конца" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "ограничение по памяти" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "соревнование рейтинговое" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "Будте ли соревнование рейтинговым." -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "без комментариев" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "Используйте систему кларов вместо комментариев." -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "спрятать тэги задач" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "запустить только претесты" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "организации" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" +msgstr "" + +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "соревнование" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "соревнования" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "участие в соревновании" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "задача" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "очки" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "частичный" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "порядок" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "посылка" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "участие" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "ранг" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "рейтинг" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1319,7 +1402,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "авторы" @@ -1327,7 +1410,7 @@ msgstr "авторы" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1355,11 +1438,15 @@ msgstr "" msgid "Edit all posts" msgstr "" -#: judge/models/interface.py:98 -msgid "blog post" +#: judge/models/interface.py:97 +msgid "Edit post visibility" msgstr "" #: judge/models/interface.py:99 +msgid "blog post" +msgstr "" + +#: judge/models/interface.py:100 msgid "blog posts" msgstr "" @@ -1380,7 +1467,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "" @@ -1392,7 +1479,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "" @@ -1412,7 +1499,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1441,252 +1528,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "язык" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "" @@ -1798,289 +1885,342 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2228,6 +2368,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" @@ -2236,210 +2380,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2495,16 +2639,44 @@ msgstr "тело сообщения" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2513,11 +2685,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2586,12 +2758,12 @@ msgstr "" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2644,11 +2816,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2656,130 +2832,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" +#: judge/views/contests.py:359 +msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." +#: judge/views/contests.py:360 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:338 -msgid "Banned from joining" +#: judge/views/contests.py:390 +msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:339 -msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "Онлайн" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2808,71 +2983,81 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2881,7 +3066,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2890,95 +3075,105 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Задачи" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2995,27 +3190,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3025,17 +3215,17 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." @@ -3044,36 +3234,21 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3107,84 +3282,87 @@ msgstr "Ошибка авторизации" msgid "Language statistics" msgstr "Статистика языка" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Статус" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 -#, python-brace-format -msgid "My submissions in {0}" -msgstr "" - -#: judge/views/submission.py:573 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "{0}'s submissions in {2}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:599 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3209,30 +3387,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3241,27 +3419,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3283,49 +3461,49 @@ msgstr "" msgid "User %s" msgstr "Пользователь %s" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "Войти" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3381,36 +3559,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "Bыйти" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Войти" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3487,7 +3668,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3500,7 +3681,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "отредактирован" @@ -3521,43 +3702,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "Еще нет ни одного комментария." -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "Добавить комментарий" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3633,12 +3814,16 @@ msgstr "Сегодня" msgid "Next" msgstr "Следующая" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3646,8 +3831,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Статистика" @@ -3672,7 +3856,7 @@ msgstr "" msgid "Leave contest" msgstr "Покинуть соревнование" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "Виртуальное участие" @@ -3680,15 +3864,20 @@ msgstr "Виртуальное участие" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "Присоединиться к соревнованию" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" -msgstr "Присоединиться к соревнованию" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." +msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3700,21 +3889,7 @@ msgstr "" msgid "Contest is over." msgstr "Соревнование завершено." -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." @@ -3723,7 +3898,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." @@ -3732,49 +3907,49 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." @@ -3783,70 +3958,75 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "Пользователи" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3858,44 +4038,44 @@ msgstr "" msgid "hidden" msgstr "" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "" -#: templates/contest/list.html:131 -msgid "Spectate" -msgstr "" - -#: templates/contest/list.html:137 +#: templates/contest/list.html:138 templates/contest/list.html:150 msgid "Join" msgstr "Присоединиться" -#: templates/contest/list.html:147 +#: templates/contest/list.html:144 +msgid "Spectate" +msgstr "" + +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "Соревнование" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "Текущие Соревнования" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "Предстоящие соревнования" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "Прошедшие соревнования" @@ -3911,6 +4091,11 @@ msgstr "Вы не можете вернуться к виртуального у msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3935,14 +4120,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "Организация" @@ -4067,46 +4264,58 @@ msgstr "" msgid "Update" msgstr "Обновить" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "Покинуть организацию" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "Присоединиться к организации" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "Редактировать организацию" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "Просмотр запросов" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "Имя" @@ -4155,11 +4364,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4235,7 +4448,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "Отправить!" @@ -4247,11 +4460,15 @@ msgstr "Добавить новый пример" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4267,16 +4484,16 @@ msgstr "" msgid "Hot problems" msgstr "" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Категория" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "Типы" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4484,28 +4701,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "Все" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "Случайная задача" @@ -4514,11 +4735,10 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -4527,11 +4747,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4566,7 +4786,7 @@ msgid "See you later!" msgstr "Увидимся!" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4750,6 +4970,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4776,7 +5005,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4820,7 +5049,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "ID" @@ -4959,7 +5188,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -5003,11 +5232,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -5016,14 +5245,18 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5031,14 +5264,19 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -5047,31 +5285,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5205,19 +5443,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/sr_Latn/LC_MESSAGES/django.po b/locale/sr_Latn/LC_MESSAGES/django.po index 9fd24a792f..1469aadc89 100644 --- a/locale/sr_Latn/LC_MESSAGES/django.po +++ b/locale/sr_Latn/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-28 00:26\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:42\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "Katalonski" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "Nemački" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "Engleski" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "Španski" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "Hrvatski" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "Mađarski" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "Japanski" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "Korejski" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "Brazilski Portugalski" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "Rumunski" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "Ruski" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "Srpski (Latinica)" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "Turski" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "Vijetnamski" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "Pojednostavljeni Kineski" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "Klasični kinezki" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "Naslovna Strana" @@ -121,42 +121,42 @@ msgstr "Povezana stranica" msgid "Included contests" msgstr "Uključena takmičenja" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Zadatak" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "Podešavanja" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "Zakazivanje" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "Detalji" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "Format" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Rangiranje" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "Pristup" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "Pravda" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -164,11 +164,11 @@ msgstr[0] "%d Takmičenje je uspešno označeno kao vidljivo." msgstr[1] "%d Takmičenja su uspešno označena kao vidljiva." msgstr[2] "%d Takmičenja su uspešno označena kao vidljiva." -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "Označi takmičenja kao vidljiva" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -176,11 +176,11 @@ msgstr[0] "%d Takmičenje je uspešno označeno kao nevidljivo." msgstr[1] "%d Takmičenja su uspešno označena kao nevidljiva." msgstr[2] "%d Takmičenja su uspešno označena kao nevidljiva." -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "Označi takmičenja kao nevidljiva" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -188,11 +188,11 @@ msgstr[0] "%d Takmičenje uspešno zaključano." msgstr[1] "%d Takmičenja uspešno zaključana." msgstr[2] "%d Takmičenja uspešno zaključana." -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "Zaključaj predaju takmičenja" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -200,11 +200,11 @@ msgstr[0] "%d Takmičenje uspešno otključano." msgstr[1] "%d Takmičenja uspešno otključana." msgstr[2] "%d Takmičenja uspešno otključana." -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "Otključaj predaju takmičenja" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -212,7 +212,7 @@ msgstr[0] "%d predaja je uspešno zakazana za ponovno ocenjivanje." msgstr[1] "%d predaje su uspešno zakazane za ponovno ocenjivanje." msgstr[2] "%d predaje su uspešno zakazane za ponovno ocenjivanje." -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -220,15 +220,15 @@ msgstr[0] "%d učestvovanje preračunato." msgstr[1] "%d učestvovanja preračunata." msgstr[2] "%d učestvovanja preračunata." -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "Preračunati rezultati" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "korisničko ime" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "virtualno" @@ -244,17 +244,17 @@ msgstr "Sadržaj" msgid "Summary" msgstr "Kratak sadržaj" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "korisnik" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "objekat" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "Pogledaj na sajtu" @@ -271,9 +271,9 @@ msgstr "Social Media" msgid "Taxonomy" msgstr "Taksonomija" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Poeni" @@ -282,8 +282,8 @@ msgstr "Poeni" msgid "Limits" msgstr "Granice" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "Jezik" @@ -336,10 +336,10 @@ msgstr "Obeleži zadatak kao privatni" msgid "timezone" msgstr "vremenska zona" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "Korisnik" @@ -389,42 +389,52 @@ msgstr "Informacija" msgid "Capabilities" msgstr "Sposobnosti" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "Nijedan" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "Nije urađeno" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "Izuzetno" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "Nije prihvaćeno" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s u %(contest)s" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "Nemate prava da ponovo ocenite predaje." -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Nemate prava da ponovo ocenite TOLIKO puno predaja." -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "Ponovo oceni izabrane predaje" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -432,34 +442,34 @@ msgstr[0] "%d predaja je uspešno preračunata." msgstr[1] "%d predaje su uspešno preračunate." msgstr[2] "%d predaje su uspešno preračunate." -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "Preračunaj izabrane predaje" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "Kod zadatka" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "Ime zadatka" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "Vreme" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "Memorija" @@ -487,7 +497,7 @@ msgstr "Sastav komentara" msgid "Your part is silent, little toad." msgstr "Trenutno ste ućutkani, skrati jezičinu" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "Morate da rešite bar jedan zadatak pre što možete da komentarišete." @@ -607,7 +617,7 @@ msgstr "Dozvolite eksperimentalne karakteristike" msgid "You must solve at least one problem before you can update your profile." msgstr "Morate rešiti barem jedan zadatak pre nego što možete da ažurirate svoj profil." -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Ne možete biti član više od {count} javne organizacije." @@ -675,7 +685,7 @@ msgstr "Nevažeći token za dvofaktornu autentifikaciju ili scratch kod." msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Kod zadatka mora biti ^[a-z0-9]+$" @@ -683,7 +693,7 @@ msgstr "Kod zadatka mora biti ^[a-z0-9]+$" msgid "Problem with code already exists." msgstr "Zadatak sa tim kodom več postoji." -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "ID takmičenja mora biti ^[a-z0-9]+$" @@ -706,6 +716,10 @@ msgstr "{time}" msgid "on {time}" msgstr "na {time}" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "Ostavi kao LaTeX" @@ -767,7 +781,7 @@ msgid "comments" msgstr "komentari" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "Uvodnik za %s" @@ -808,463 +822,532 @@ msgstr "opis oznake" msgid "contest tag" msgstr "oznaka takmičenja" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "oznake takmičenja" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "Vidljivo" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "Sakriveno za vreme takmičenja" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "Sakriveno tokom učestvovanja" #: judge/models/contest.py:65 +msgid "Hidden permanently" +msgstr "" + +#: judge/models/contest.py:67 msgid "contest id" msgstr "id takmičenja" -#: judge/models/contest.py:67 +#: judge/models/contest.py:69 msgid "contest name" msgstr "ime takmičenja" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "Ovi korisnici će moći da edituju takmičenje." -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "Ovi korisnici će moći da edituju takmičenje, ali neće biti navedeni kao autori." -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "Ovi korisnici će moći da vide takmičenje, ali neće moći da ga edituju." -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "opis" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "zadaci" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "vreme početka" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "vreme kraja" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "vremensko ograničenje" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "vidljivo za javnost" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "takmičenje je rangirano" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "Može li ovo takmičenje biti rangirano." -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "pregledaj rezultate takmičenja" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "Ovi korisnici će moći da vide rezultate svih učesnika takmičenja." -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "vidljivost rezultata svih učesnika" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "Vidljivost rezultata svih učesnika tokom takmičenja" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "bez komentara" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "Koristi clarification sistem umesto komentara." -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "Minimalni nivo za takmičenje" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "Maksimalni nivo za takmičenje" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "oceni sve" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "Oceni sve korisnike koji su se uklučili." -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "odstrani iz rangiranja" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "privatno za specijalne korisnike" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "privatni takmičari" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" -msgstr "Ako privatno, samo ovi korisnici mogu da vide takmičenje" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" +msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "sakrij oznake zadataka" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "Dali oznake zadataka treba biti nevidljive po defaultu." -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" msgstr "sakrij autore zadatka" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "organizacije" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" +msgstr "" + +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "OpenGraph slika" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "Ova slika če zameniti default site logo za učesnike takmičenja." -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "broj aktivnih učesnika" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "kratak opis takmičenja" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "access code" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "personae non gratae" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "Sprečava učešće u takmičenju izabranim korisnicima." -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "format takmičenja" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "konfiguracija formata takmičenja" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "Pogledajte privatna takmičenja" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "MOSS takmičenje" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "Napravi privatno takmičenje" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "Promeniti vidljivost takmičenja" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "takmičenje" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "takmičenja" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "povezana takmičenja" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "rezultat" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "zbirno vreme" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "diskvalifikovan" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "%s u %s" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "učesnici takmičenja" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "zadatak" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "poeni" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "delimičan" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "več testiran" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "redosled" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Maksimalan broj odgovora za ovaj zadatak, ili ostaviti prazno da nema ograničenja." -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "Zašto uključiti zadatak koji ne možete predati?" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "zadatak na takmičenju" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "zadaci na takmičenju" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "predaja" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "učestvovanje" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "predaja takmičenja" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "predaje takmičenja" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "rang" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "rangiranje" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" msgstr "" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "" @@ -1304,7 +1387,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "autori" @@ -1312,7 +1395,7 @@ msgstr "autori" msgid "slug" msgstr "puž" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "" @@ -1340,11 +1423,15 @@ msgstr "openGraph slika" msgid "Edit all posts" msgstr "Edituj sve objave" -#: judge/models/interface.py:98 +#: judge/models/interface.py:97 +msgid "Edit post visibility" +msgstr "" + +#: judge/models/interface.py:99 msgid "blog post" msgstr "blog objava" -#: judge/models/interface.py:99 +#: judge/models/interface.py:100 msgid "blog posts" msgstr "blog objave" @@ -1365,7 +1452,7 @@ msgstr "ime kategorije zadatka" msgid "problem type" msgstr "tip zadatka" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "tipovi zadataka" @@ -1377,7 +1464,7 @@ msgstr "ID grupe zadataka" msgid "problem group name" msgstr "ime grupe zadataka" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "grupa zadataka" @@ -1397,7 +1484,7 @@ msgstr "link" msgid "full name" msgstr "puno ime" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "kratko ime" @@ -1426,252 +1513,252 @@ msgstr "licenca" msgid "licenses" msgstr "licence" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "Prati globalno podešavanje" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "Uvek dostupno" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "Dostupno ako je zadatak rešen" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "Samo svoja rešenja" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "kod zadatka" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "Kratak, jedinstveni kod za zadatak, koji se koristi u url-u posle /problem/" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "ime zadatka" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "Puno ime zadatka, kao što je prikazano u listi zadataka." -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "sadržaj zadatka" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "kreatori" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Ovi korisnici će moći da edituju zadatak, i biće navedeni kao autori." -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "kustos" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Ovi korisnici će moći da edituju zadatak, ali neće biti navedeni kao autori." -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "testeri" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "Ovi korisnici će moći da vide privatni zadatak, ali neće moći da ga edituju." -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "Tip zadatka, kao što je prikazano na stranici zadatka." -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "Grupa zadatka, prikazana u okviru Kategorije u listi zadataka." -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "Vremensko ograničenje za ovaj zadatak, u sekundama. Delovi sekunda (npr. 1.5) su podržani." -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "ograničenje memorije" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "Memorijsko ograničenje za ovaj zadatak, u kilobytes (npr. 64mb = 65536 kilobytes)." -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Poeni dodeljeni za rešen zadatak. Poeni su prikazani sa 'p' sufiksom ako je rešenje delimično priznato." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "dozvoljava dodeljivanje delimičnih poena" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "dozvoljeni jezici" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "Lista dozvoljenih jezika za rešenja." -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "broj korisnika" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "Vidi sakrivene zadatke" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "jezik" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "prevedeno ime" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "preveden opis" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "prevod zadatka" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "prevodi zadatka" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "datum objave" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "rešenje" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "rešenja" @@ -1783,289 +1870,342 @@ msgstr "vrednost poena" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "naziv organizacije" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "puž organizacije" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "ime Organizacije prikazano u URL-u" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "Prikazano pored imena korisnika tokom takmičenja" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "opis organizacije" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "administratori" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "Oni koji mogu da edit-uju ovu organizaciju" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "datum kreiranja" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "je otvorena organizacija?" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "Dozvoli pridruživanje organizaciji" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "maksimalna veličina" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "Maksimalan broj korisnika u ovoj organizaciji, primenljiv samo na privatne organizacije" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "pristupni kod studenta" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "Ova slika če zameniti default site logo za korisnike koji gledaju organizaciju." -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "Administriraj organizacije" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "Edit-uj sve organizacije" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "organizacija" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "povezani korisnik" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "samo-opis" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "lokacija" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "željeni jezik" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "vreme poslednjeg pristupa" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "poslednji IP" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "prikaži rang" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "Običan korisnik" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "Pisac zadatka" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "Administrator" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "nemi komentar" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "U ćutanju je zlato." -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "Korisnik neće biti rangiran" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "takmičenje u toku" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "math engine" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "API token" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "interne beleške" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "profil korisnika" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "ime uređaja" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "status" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "razlog" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "" @@ -2213,6 +2353,10 @@ msgstr "" msgid "Load for the last minute, divided by processors to be fair." msgstr "" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "sudije" @@ -2221,210 +2365,210 @@ msgstr "sudije" msgid "judge" msgstr "sudija" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Prihvaćeno" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "Pogrešan Odgovor" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Greška u Kompajliranju" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "Interna Grеška" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "Prekinut" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "Završeno" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "status" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "rezultat" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "Greške u Kompajliranju" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "statusna zastava" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "" @@ -2480,16 +2624,44 @@ msgstr "" msgid "message time" msgstr "" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "" @@ -2498,11 +2670,11 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "" @@ -2571,12 +2743,12 @@ msgstr "Greška" msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." +#: judge/utils/pwned.py:109 +msgid "This password is too common." msgstr "" -#: judge/utils/pwned.py:102 -msgid "This password is too common." +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." msgstr "" #: judge/utils/timedelta.py:49 @@ -2626,11 +2798,15 @@ msgstr "" msgid "You must solve at least one problem before you can vote." msgstr "" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "Već ste glasali" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "" @@ -2638,130 +2814,129 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "Ne postoji takvo takmičenje " -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Takmičenje sa \"%s\" ključem nije pronađeno." -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "Takmičenja" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:334 -msgid "Already in contest" -msgstr "Več na takmičenju " - -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." -msgstr "Već učestvujete na takmičenju: \"%s\"." - -#: judge/views/contests.py:338 +#: judge/views/contests.py:359 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:339 +#: judge/views/contests.py:360 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:400 +#: judge/views/contests.py:390 +msgid "Cannot enter" +msgstr "" + +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." +msgstr "" + +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "Oznaka takmičenja: %s" @@ -2790,71 +2965,81 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizacije" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2862,7 +3047,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2870,95 +3055,105 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Zadaci" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2975,27 +3170,22 @@ msgstr "" msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3005,17 +3195,17 @@ msgstr "" msgid "Managing submissions for %s" msgstr "" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." @@ -3023,36 +3213,21 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" @@ -3086,84 +3261,87 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Sva rešenja" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "Sva moja rešenja" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "Sva rešenja od %s" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "Sva rešenja za %s" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "Moja rešenja za %(problem)s" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(user)sa rešenja za %(problem)s" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "Moja rešenja u %(contest)s" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:571 -#, python-brace-format -msgid "My submissions in {0}" -msgstr "" - -#: judge/views/submission.py:573 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "{0}'s submissions in {2}" +msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:599 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "" - -#: judge/views/submission.py:604 -#, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" +msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 @@ -3188,30 +3366,30 @@ msgstr "" msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr "" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3220,27 +3398,27 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "Nevažeće ime" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "" @@ -3262,49 +3440,49 @@ msgstr "" msgid "User %s" msgstr "" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "Skini vaše podatke" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." msgstr "" @@ -3360,36 +3538,39 @@ msgstr "" msgid "Rejudge" msgstr "" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." -msgstr "Zdravo, %(username)s." +#: templates/base.html:222 +msgid "Stop impersonating" +msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "ili" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3466,7 +3647,7 @@ msgid "Comments" msgstr "" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "" #: templates/comments/list.html:47 @@ -3479,7 +3660,7 @@ msgstr "" msgid "edit %(edits)s" msgstr "" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "" @@ -3500,43 +3681,43 @@ msgid "Hide" msgstr "" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "" + +#: templates/comments/list.html:112 +msgid "Show it anyway." msgstr "" -#: templates/comments/list.html:131 +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "" @@ -3612,12 +3793,16 @@ msgstr "" msgid "Next" msgstr "" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "" @@ -3625,8 +3810,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3651,7 +3835,7 @@ msgstr "" msgid "Leave contest" msgstr "" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "" @@ -3659,15 +3843,20 @@ msgstr "" msgid "Stop spectating" msgstr "" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "" @@ -3679,21 +3868,7 @@ msgstr "" msgid "Contest is over." msgstr "" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." @@ -3701,7 +3876,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." @@ -3709,49 +3884,49 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." msgstr "" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." msgstr "" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." @@ -3759,70 +3934,75 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "" @@ -3834,44 +4014,44 @@ msgstr "" msgid "hidden" msgstr "sakriveno" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "privatno" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "rangirano" -#: templates/contest/list.html:131 -msgid "Spectate" -msgstr "" - -#: templates/contest/list.html:137 +#: templates/contest/list.html:138 templates/contest/list.html:150 msgid "Join" msgstr "Pridruži se" -#: templates/contest/list.html:147 +#: templates/contest/list.html:144 +msgid "Spectate" +msgstr "" + +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "Aktivna takmičenja" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "Takmičenje" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "Nema zakazanih takmičenja u ovom trenutku" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "" @@ -3887,6 +4067,11 @@ msgstr "" msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "" @@ -3911,14 +4096,26 @@ msgstr "" msgid "This contest is private to specific users." msgstr "Ovo takmičenje je privatno za određene korisnike." -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "Organizacija" @@ -4043,46 +4240,58 @@ msgstr "" msgid "Update" msgstr "" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" @@ -4131,11 +4340,15 @@ msgstr "" msgid "Delete?" msgstr "" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "" @@ -4211,7 +4424,7 @@ msgstr "" msgid "Pretest?" msgstr "" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "Predaj!" @@ -4223,11 +4436,15 @@ msgstr "" msgid "Save" msgstr "" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." msgstr "" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Autor:" @@ -4242,16 +4459,16 @@ msgstr "" msgid "Hot problems" msgstr "Popularni zadaci" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Kategorija" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "" @@ -4456,28 +4673,32 @@ msgid "Hide solved problems" msgstr "" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "Svi" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "Tipovi zadatka" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "Idi" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "" @@ -4486,11 +4707,10 @@ msgid "Your source code must contain at most 65536 characters." msgstr "" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." +msgid "Warning!" msgstr "" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -4498,11 +4718,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "" @@ -4537,7 +4757,7 @@ msgid "See you later!" msgstr "" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "" #: templates/registration/password_change_form.html:13 @@ -4721,6 +4941,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4747,7 +4976,7 @@ msgstr "" msgid "Use scratch code" msgstr "" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4791,7 +5020,7 @@ msgstr "" msgid "There are no judges available at this time." msgstr "" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "ID" @@ -4930,7 +5159,7 @@ msgid "Resources:" msgstr "" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" +msgid "Maximum single-case runtime:" msgstr "" #: templates/submission/status-testcases.html:143 @@ -4974,11 +5203,11 @@ msgstr "" msgid "%(user)s's" msgstr "" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "" -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "" @@ -4987,28 +5216,37 @@ msgid "Use desktop notification" msgstr "" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" @@ -5017,31 +5255,31 @@ msgstr "" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" @@ -5175,19 +5413,12 @@ msgstr "" msgid "Update profile" msgstr "" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "" - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 80ce7aa519..9cce6d98ef 100644 --- a/locale/zh_Hans/LC_MESSAGES/django.po +++ b/locale/zh_Hans/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-08-26 23:49+0000\n" -"PO-Revision-Date: 2021-08-27 00:29\n" +"POT-Creation-Date: 2022-03-22 06:17+0000\n" +"PO-Revision-Date: 2022-03-26 00:41\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:368 +#: dmoj/settings.py:372 msgid "Catalan" msgstr "加泰隆语" -#: dmoj/settings.py:369 +#: dmoj/settings.py:373 msgid "German" msgstr "德语" -#: dmoj/settings.py:370 +#: dmoj/settings.py:374 msgid "English" msgstr "英语" -#: dmoj/settings.py:371 +#: dmoj/settings.py:375 msgid "Spanish" msgstr "西班牙语" -#: dmoj/settings.py:372 +#: dmoj/settings.py:376 msgid "French" msgstr "法语" -#: dmoj/settings.py:373 +#: dmoj/settings.py:377 msgid "Croatian" msgstr "克罗地亚语" -#: dmoj/settings.py:374 +#: dmoj/settings.py:378 msgid "Hungarian" msgstr "匈牙利语" -#: dmoj/settings.py:375 +#: dmoj/settings.py:379 msgid "Japanese" msgstr "日语" -#: dmoj/settings.py:376 +#: dmoj/settings.py:380 msgid "Korean" msgstr "韩语" -#: dmoj/settings.py:377 +#: dmoj/settings.py:381 msgid "Brazilian Portuguese" msgstr "巴西葡萄牙语" -#: dmoj/settings.py:378 +#: dmoj/settings.py:382 msgid "Romanian" msgstr "罗马尼亚语" -#: dmoj/settings.py:379 +#: dmoj/settings.py:383 msgid "Russian" msgstr "俄语" -#: dmoj/settings.py:380 +#: dmoj/settings.py:384 msgid "Serbian (Latin)" msgstr "塞尔维亚文(拉丁字母)" -#: dmoj/settings.py:381 +#: dmoj/settings.py:385 msgid "Turkish" msgstr "土耳其语" -#: dmoj/settings.py:382 +#: dmoj/settings.py:386 msgid "Vietnamese" msgstr "越南语" -#: dmoj/settings.py:383 +#: dmoj/settings.py:387 msgid "Simplified Chinese" msgstr "简体中文" -#: dmoj/settings.py:384 +#: dmoj/settings.py:388 msgid "Traditional Chinese" msgstr "繁体中文" -#: dmoj/urls.py:104 templates/base.html:190 +#: dmoj/urls.py:103 templates/base.html:190 msgid "Home" msgstr "首页" @@ -117,102 +117,102 @@ msgstr "关联页" msgid "Included contests" msgstr "带标签的竞赛" -#: judge/admin/contest.py:66 templates/contest/contest.html:192 +#: judge/admin/contest.py:66 templates/contest/contest.html:195 #: templates/contest/moss.html:43 templates/problem/list.html:204 -#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/problem/list.html:220 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "题目" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:123 msgid "Settings" msgstr "设置" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:126 msgid "Scheduling" msgstr "时间计划" -#: judge/admin/contest.py:121 +#: judge/admin/contest.py:127 msgid "Details" msgstr "详细信息" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:128 msgid "Format" msgstr "格式" -#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:129 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "评分" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:130 msgid "Access" msgstr "访问权限" -#: judge/admin/contest.py:126 judge/admin/problem.py:135 +#: judge/admin/contest.py:132 judge/admin/problem.py:135 msgid "Justice" msgstr "司法" -#: judge/admin/contest.py:215 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d个竞赛已成功公开。" -#: judge/admin/contest.py:218 +#: judge/admin/contest.py:233 msgid "Mark contests as visible" msgstr "标记竞赛为可见" -#: judge/admin/contest.py:224 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d个竞赛已成功隐藏。" -#: judge/admin/contest.py:227 +#: judge/admin/contest.py:242 msgid "Mark contests as hidden" msgstr "隐藏选定竞赛" -#: judge/admin/contest.py:233 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d个竞赛锁定成功" -#: judge/admin/contest.py:236 +#: judge/admin/contest.py:251 msgid "Lock contest submissions" msgstr "锁定竞赛提交" -#: judge/admin/contest.py:242 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d个竞赛解锁成功。" -#: judge/admin/contest.py:245 +#: judge/admin/contest.py:260 msgid "Unlock contest submissions" msgstr "解锁竞赛提交" -#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#: judge/admin/contest.py:281 judge/admin/submission.py:175 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "%d个提交被计划重新评分。" -#: judge/admin/contest.py:341 +#: judge/admin/contest.py:357 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "重新计算了 %d 个参与。" -#: judge/admin/contest.py:344 +#: judge/admin/contest.py:360 msgid "Recalculate results" msgstr "重新计算结果" -#: judge/admin/contest.py:348 judge/admin/organization.py:63 +#: judge/admin/contest.py:364 judge/admin/organization.py:113 msgid "username" msgstr "用户名" -#: judge/admin/contest.py:353 templates/base.html:258 +#: judge/admin/contest.py:369 templates/base.html:256 msgid "virtual" msgstr "模拟竞赛" @@ -228,17 +228,17 @@ msgstr "内容" msgid "Summary" msgstr "概要" -#: judge/admin/interface.py:113 judge/models/contest.py:423 -#: judge/models/contest.py:552 judge/models/profile.py:267 -#: judge/models/profile.py:298 +#: judge/admin/interface.py:124 judge/models/contest.py:488 +#: judge/models/contest.py:617 judge/models/profile.py:325 +#: judge/models/profile.py:356 msgid "user" msgstr "用户" -#: judge/admin/interface.py:154 +#: judge/admin/interface.py:165 msgid "object" msgstr "对象" -#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/organization.py:82 judge/admin/problem.py:182 #: judge/admin/profile.py:92 msgid "View on site" msgstr "查看" @@ -255,9 +255,9 @@ msgstr "社交媒体" msgid "Taxonomy" msgstr "分类" -#: judge/admin/problem.py:132 templates/contest/contest.html:193 +#: judge/admin/problem.py:132 templates/contest/contest.html:196 #: templates/problem/data.html:385 templates/problem/list.html:209 -#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/problem/list.html:231 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "分数" @@ -266,8 +266,8 @@ msgstr "分数" msgid "Limits" msgstr "限制" -#: judge/admin/problem.py:134 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:319 +#: judge/admin/problem.py:134 judge/admin/submission.py:243 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 #: templates/user/edit-profile.html:296 msgid "Language" msgstr "语言" @@ -314,10 +314,10 @@ msgstr "隐藏题目" msgid "timezone" msgstr "时区" -#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:222 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:261 +#: templates/ticket/list.html:266 msgid "User" msgstr "用户" @@ -365,75 +365,85 @@ msgstr "信息" msgid "Capabilities" msgstr "能力" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:227 +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:232 msgid "None" msgstr "无" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Not done" msgstr "未完成" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:24 msgid "Exceptional" msgstr "错误" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:43 msgid "Unaccepted" msgstr "未被接受" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "" + +#: judge/admin/submission.py:94 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(contest)s 中的 %(problem)s" -#: judge/admin/submission.py:155 judge/admin/submission.py:177 +#: judge/admin/submission.py:160 judge/admin/submission.py:182 msgid "You do not have the permission to rejudge submissions." msgstr "您没有为程序重新评分的权利。" -#: judge/admin/submission.py:161 +#: judge/admin/submission.py:166 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "您没有为这么多程序重新评分的权利。" -#: judge/admin/submission.py:173 +#: judge/admin/submission.py:178 msgid "Rejudge the selected submissions" msgstr "重新评分选定的程序" -#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 +#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d个程序提交的分数已被重新计算。" -#: judge/admin/submission.py:202 +#: judge/admin/submission.py:207 msgid "Rescore the selected submissions" msgstr "重新计算选定程序的分数" -#: judge/admin/submission.py:206 +#: judge/admin/submission.py:211 msgid "Problem code" msgstr "题目代码" -#: judge/admin/submission.py:211 +#: judge/admin/submission.py:216 msgid "Problem name" msgstr "题目名称" -#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" msgstr "时间" -#: judge/admin/submission.py:229 +#: judge/admin/submission.py:234 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:231 +#: judge/admin/submission.py:236 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:233 +#: judge/admin/submission.py:238 msgid "Memory" msgstr "内存" @@ -461,7 +471,7 @@ msgstr "评论正文" msgid "Your part is silent, little toad." msgstr "你已被静音……" -#: judge/comments.py:49 templates/comments/list.html:142 +#: judge/comments.py:49 templates/comments/list.html:140 msgid "You need to have solved at least one problem before your voice can be heard." msgstr "只有解决了一个题目以后你才能有发言权。" @@ -476,17 +486,17 @@ msgstr "AtCoder" #: judge/contest_format/atcoder.py:117 judge/contest_format/default.py:79 #: judge/contest_format/icpc.py:127 judge/contest_format/legacy_ioi.py:97 msgid "The maximum score submission for each problem will be used." -msgstr "" +msgstr "获得最高分的提交将会被采用" #: judge/contest_format/atcoder.py:122 judge/contest_format/icpc.py:132 #, python-format msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." -msgstr[0] "" +msgstr[0] "任何在最高分提交之前的提交将会受到 %d 分钟的处罚" #: judge/contest_format/atcoder.py:127 msgid "Ties will be broken by the last score altering submission time." -msgstr "" +msgstr "同分时排名由最后一次使总得分变化的提交的时间决定。" #: judge/contest_format/default.py:18 msgid "Default" @@ -494,7 +504,7 @@ msgstr "默认 " #: judge/contest_format/default.py:80 msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." -msgstr "" +msgstr "同分时排名由每一道得分非零的题的用时之和决定,一道题的用时为最后一次提交的时间。" #: judge/contest_format/ecoo.py:18 msgid "ECOO" @@ -502,12 +512,12 @@ msgstr "ECOO" #: judge/contest_format/ecoo.py:130 msgid "The score on your **last** non-CE submission for each problem will be used." -msgstr "" +msgstr "每道题将使用您**最后** 的非CE 提交作为分数。" #: judge/contest_format/ecoo.py:135 #, python-format msgid "There is a **%d bonus** for fully solving on your first non-CE submission." -msgstr "" +msgstr "您的第一次非CE 提交有**%d 的附加分数** 。" #: judge/contest_format/ecoo.py:141 #, python-format @@ -517,12 +527,12 @@ msgstr[0] "" #: judge/contest_format/ecoo.py:147 msgid "Ties will be broken by the sum of the last submission time on **all** problems." -msgstr "" +msgstr "同分时排名由**所有**题的用时之和决定,一道题的用时为最后一次提交的时间。" #: judge/contest_format/ecoo.py:149 judge/contest_format/ioi.py:102 #: judge/contest_format/legacy_ioi.py:103 msgid "Ties by score will **not** be broken." -msgstr "" +msgstr "得分平局将**不会**被打破" #: judge/contest_format/icpc.py:19 msgid "ICPC" @@ -538,7 +548,7 @@ msgstr "国际信息学奥林匹克竞赛" #: judge/contest_format/ioi.py:96 msgid "The maximum score for each problem batch will be used." -msgstr "" +msgstr "每一题目批次的最高分将会被使用" #: judge/contest_format/ioi.py:99 judge/contest_format/legacy_ioi.py:100 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score." @@ -577,7 +587,7 @@ msgstr "允许使用实验性功能" msgid "You must solve at least one problem before you can update your profile." msgstr "您投票前必须解决至少一个问题。" -#: judge/forms.py:81 judge/views/organization.py:126 +#: judge/forms.py:81 judge/views/organization.py:147 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "你不能参与超过 {count} 个组织" @@ -645,7 +655,7 @@ msgstr "无效的双重验证码或者一次性代码。" msgid "Must specify either totp_token or webauthn_response." msgstr "必须指定 totp_token 或 webauthn_response。" -#: judge/forms.py:270 judge/models/problem.py:119 +#: judge/forms.py:270 judge/models/problem.py:120 msgid "Problem code must be ^[a-z0-9]+$" msgstr "题目代码必须匹配 ^[a-z0-9]+$" @@ -653,7 +663,7 @@ msgstr "题目代码必须匹配 ^[a-z0-9]+$" msgid "Problem with code already exists." msgstr "代码已经存在问题。" -#: judge/forms.py:280 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "竞赛标识必须匹配 ^[a-z0-9]+$" @@ -676,6 +686,10 @@ msgstr "{time}" msgid "on {time}" msgstr "在{time}" +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "未评分" + #: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "显示为LaTeX" @@ -737,7 +751,7 @@ msgid "comments" msgstr "评论" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:511 +#: judge/models/problem.py:521 #, python-format msgid "Editorial for %s" msgstr "%s 的题解" @@ -778,463 +792,532 @@ msgstr "标签说明" msgid "contest tag" msgstr "竞赛标签" -#: judge/models/contest.py:53 judge/models/contest.py:130 +#: judge/models/contest.py:53 judge/models/contest.py:150 msgid "contest tags" msgstr "竞赛标签" -#: judge/models/contest.py:61 +#: judge/models/contest.py:62 msgid "Visible" msgstr "可见" -#: judge/models/contest.py:62 +#: judge/models/contest.py:63 msgid "Hidden for duration of contest" msgstr "在竞赛持续时间内隐藏" -#: judge/models/contest.py:63 +#: judge/models/contest.py:64 msgid "Hidden for duration of participation" msgstr "在参与期间隐藏" #: judge/models/contest.py:65 +msgid "Hidden permanently" +msgstr "" + +#: judge/models/contest.py:67 msgid "contest id" msgstr "竞赛标识" -#: judge/models/contest.py:67 +#: judge/models/contest.py:69 msgid "contest name" msgstr "竞赛名称" -#: judge/models/contest.py:68 +#: judge/models/contest.py:70 msgid "These users will be able to edit the contest." msgstr "这些用户可以编辑比赛" -#: judge/models/contest.py:70 +#: judge/models/contest.py:72 msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "这些用户将可以编辑问题,但会隐藏姓名。" -#: judge/models/contest.py:73 +#: judge/models/contest.py:75 msgid "These users will be able to view the contest, but not edit it." msgstr "这些用户将可以查看题目, 但无法编辑。" -#: judge/models/contest.py:76 judge/models/runtime.py:136 +#: judge/models/contest.py:78 +msgid "testers see scoreboard" +msgstr "" + +#: judge/models/contest.py:79 +msgid "If testers can see the scoreboard." +msgstr "" + +#: judge/models/contest.py:80 +msgid "testers see submissions" +msgstr "" + +#: judge/models/contest.py:81 +msgid "If testers can see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:82 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "" + +#: judge/models/contest.py:85 judge/models/runtime.py:136 msgid "description" msgstr "描述" -#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/contest.py:86 judge/models/problem.py:467 #: judge/models/runtime.py:138 msgid "problems" msgstr "题目" -#: judge/models/contest.py:78 judge/models/contest.py:424 +#: judge/models/contest.py:87 judge/models/contest.py:489 msgid "start time" msgstr "开始时间" -#: judge/models/contest.py:79 +#: judge/models/contest.py:88 msgid "end time" msgstr "结束时间" -#: judge/models/contest.py:80 judge/models/problem.py:140 -#: judge/models/problem.py:482 +#: judge/models/contest.py:89 judge/models/problem.py:141 +#: judge/models/problem.py:492 msgid "time limit" msgstr "时间限制" -#: judge/models/contest.py:81 judge/models/problem.py:158 +#: judge/models/contest.py:90 judge/models/problem.py:159 msgid "publicly visible" msgstr "公开" -#: judge/models/contest.py:82 +#: judge/models/contest.py:91 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "组织内竞赛也需公开,否则责组织成员无法查看本竞赛。" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "contest rated" msgstr "竞赛参与评分" -#: judge/models/contest.py:85 +#: judge/models/contest.py:94 msgid "Whether this contest can be rated." msgstr "竞赛是否参与用户评分" -#: judge/models/contest.py:87 +#: judge/models/contest.py:96 msgid "view contest scoreboard" msgstr "查看竞赛记分板" -#: judge/models/contest.py:89 +#: judge/models/contest.py:98 msgid "These users will be able to view the scoreboard." msgstr "这些用户将能够查看记分板。" -#: judge/models/contest.py:90 +#: judge/models/contest.py:99 +msgid "can see contest submissions" +msgstr "" + +#: judge/models/contest.py:101 +msgid "These users will be able to see in-contest submissions." +msgstr "" + +#: judge/models/contest.py:103 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:91 +#: judge/models/contest.py:104 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:93 +#: judge/models/contest.py:106 msgid "no comments" msgstr "没有评论" -#: judge/models/contest.py:94 +#: judge/models/contest.py:107 msgid "Use clarification system instead of comments." msgstr "请使用澄清系统,而不是评论" -#: judge/models/contest.py:96 +#: judge/models/contest.py:109 +msgid "rating floor" +msgstr "" + +#: judge/models/contest.py:109 msgid "Rating floor for contest" msgstr "竞赛最低评分" -#: judge/models/contest.py:98 +#: judge/models/contest.py:111 +msgid "rating ceiling" +msgstr "" + +#: judge/models/contest.py:111 msgid "Rating ceiling for contest" msgstr "竞赛最高评分" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "rate all" msgstr "为所有用户评分" -#: judge/models/contest.py:100 +#: judge/models/contest.py:113 msgid "Rate all users who joined." msgstr "所有参与竞赛的用户,包含没有提交任何程序的用户,都将被评分。" -#: judge/models/contest.py:101 +#: judge/models/contest.py:114 msgid "exclude from ratings" msgstr "不会被评分" -#: judge/models/contest.py:103 +#: judge/models/contest.py:116 msgid "private to specific users" msgstr "私密给特定用户" -#: judge/models/contest.py:104 +#: judge/models/contest.py:117 msgid "private contestants" msgstr "秘密参赛者" -#: judge/models/contest.py:105 -msgid "If private, only these users may see the contest" -msgstr "如果是私密的,只有这些用户可以看到比赛" +#: judge/models/contest.py:118 +msgid "If non-empty, only these users may see the contest" +msgstr "" -#: judge/models/contest.py:107 +#: judge/models/contest.py:120 msgid "hide problem tags" msgstr "隐藏题目标签" -#: judge/models/contest.py:108 +#: judge/models/contest.py:121 msgid "Whether problem tags should be hidden by default." msgstr "设置竞赛内题目标签是否默认被隐藏。" -#: judge/models/contest.py:110 +#: judge/models/contest.py:123 msgid "hide problem authors" -msgstr "" +msgstr "隐藏题目作者" -#: judge/models/contest.py:111 +#: judge/models/contest.py:124 msgid "Whether problem authors should be hidden by default." -msgstr "" +msgstr "是否默认隐藏题目作者" -#: judge/models/contest.py:113 +#: judge/models/contest.py:126 msgid "run pretests only" msgstr "只运行预测试" -#: judge/models/contest.py:114 +#: judge/models/contest.py:127 msgid "Whether judges should grade pretests only, versus all testcases. Commonly set during a contest, then unset prior to rejudging user submissions when the contest ends." msgstr "设置裁判服务器是否只运行预测试而不是所有测试。通常在竞赛进行时启动,然后在竞赛结束后重新评分前关闭。" -#: judge/models/contest.py:118 +#: judge/models/contest.py:131 msgid "show short form settings display" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:132 msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:122 judge/models/problem.py:183 +#: judge/models/contest.py:135 judge/models/problem.py:184 msgid "private to organizations" msgstr "只对组织可见" -#: judge/models/contest.py:123 judge/models/problem.py:181 -#: judge/models/profile.py:86 +#: judge/models/contest.py:136 judge/models/problem.py:182 +#: judge/models/profile.py:99 msgid "organizations" msgstr "组织" -#: judge/models/contest.py:124 -msgid "If private, only these organizations may see the contest" -msgstr "隐藏时,只对选择的组织才可见" +#: judge/models/contest.py:137 +msgid "If non-empty, only these organizations may see the contest" +msgstr "" + +#: judge/models/contest.py:139 +msgid "limit organizations that can join" +msgstr "" + +#: judge/models/contest.py:140 +msgid "join organizations" +msgstr "" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may join the contest" +msgstr "" + +#: judge/models/contest.py:143 judge/models/profile.py:143 +msgid "classes" +msgstr "" + +#: judge/models/contest.py:144 +msgid "If organization private, only these classes may see the contest" +msgstr "" -#: judge/models/contest.py:125 judge/models/problem.py:167 +#: judge/models/contest.py:145 judge/models/problem.py:168 msgid "OpenGraph image" msgstr "OpenGraph 图像" -#: judge/models/contest.py:126 judge/models/profile.py:57 +#: judge/models/contest.py:146 judge/models/profile.py:58 msgid "Logo override image" msgstr "覆盖标志的图片" -#: judge/models/contest.py:128 +#: judge/models/contest.py:148 msgid "This image will replace the default site logo for users inside the contest." msgstr "此图片将替换比赛中用户的默认网站标识。" -#: judge/models/contest.py:131 +#: judge/models/contest.py:151 msgid "the amount of live participants" msgstr "实时参与者数" -#: judge/models/contest.py:132 +#: judge/models/contest.py:152 msgid "contest summary" msgstr "竞赛简介" -#: judge/models/contest.py:133 judge/models/problem.py:169 +#: judge/models/contest.py:153 judge/models/problem.py:170 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "在meta description标签内显示的纯文本介绍。" -#: judge/models/contest.py:134 judge/models/profile.py:56 +#: judge/models/contest.py:154 judge/models/profile.py:57 +#: judge/models/profile.py:110 msgid "access code" msgstr "访问码" -#: judge/models/contest.py:135 +#: judge/models/contest.py:155 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "在参赛者被允许参加比赛之前的一个可选代码。如无需要请留空白禁用。" -#: judge/models/contest.py:137 judge/models/problem.py:163 +#: judge/models/contest.py:157 judge/models/problem.py:164 msgid "personae non gratae" msgstr "不受欢迎人物" -#: judge/models/contest.py:138 +#: judge/models/contest.py:158 msgid "Bans the selected users from joining this contest." msgstr "禁止这些用户加入这个比赛。" -#: judge/models/contest.py:139 +#: judge/models/contest.py:159 msgid "contest format" msgstr "竞赛格式" -#: judge/models/contest.py:140 +#: judge/models/contest.py:160 msgid "The contest format module to use." msgstr "使用的竞赛格式模块。" -#: judge/models/contest.py:141 +#: judge/models/contest.py:161 msgid "contest format configuration" msgstr "竞赛格式配置" -#: judge/models/contest.py:142 +#: judge/models/contest.py:162 msgid "A JSON object to serve as the configuration for the chosen contest format module. Leave empty to use None. Exact format depends on the contest format selected." msgstr "作为选定竞赛格式模块的配置的JSON对象。留空来不使用。实在格式依赖于所选的竞赛格式。" -#: judge/models/contest.py:149 +#: judge/models/contest.py:165 +msgid "contest problem label script" +msgstr "" + +#: judge/models/contest.py:166 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "" + +#: judge/models/contest.py:169 msgid "contest lock" msgstr "竞赛锁定" -#: judge/models/contest.py:150 +#: judge/models/contest.py:170 msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:152 +#: judge/models/contest.py:172 msgid "precision points" msgstr "精度" -#: judge/models/contest.py:154 +#: judge/models/contest.py:174 msgid "Number of digits to round points to." msgstr "将分数四舍五入到第几位。" -#: judge/models/contest.py:402 +#: judge/models/contest.py:467 msgid "See private contests" msgstr "查看私人竞赛" -#: judge/models/contest.py:403 +#: judge/models/contest.py:468 msgid "Edit own contests" msgstr "编辑我的竞赛" -#: judge/models/contest.py:404 +#: judge/models/contest.py:469 msgid "Edit all contests" msgstr "编辑全部竞赛" -#: judge/models/contest.py:405 +#: judge/models/contest.py:470 msgid "Clone contest" msgstr "复制竞赛" -#: judge/models/contest.py:406 templates/contest/moss.html:74 +#: judge/models/contest.py:471 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "MOSS竞赛" -#: judge/models/contest.py:407 +#: judge/models/contest.py:472 msgid "Rate contests" msgstr "计算积分的比赛" -#: judge/models/contest.py:408 +#: judge/models/contest.py:473 msgid "Contest access codes" msgstr "比赛访问码" -#: judge/models/contest.py:409 +#: judge/models/contest.py:474 msgid "Create private contests" msgstr "创建私人竞赛" -#: judge/models/contest.py:410 +#: judge/models/contest.py:475 msgid "Change contest visibility" msgstr "更改竞赛可见性" -#: judge/models/contest.py:411 +#: judge/models/contest.py:476 msgid "Edit contest problem label script" msgstr "编辑竞赛问题标签脚本" -#: judge/models/contest.py:412 +#: judge/models/contest.py:477 msgid "Change lock status of contest" msgstr "更改竞赛锁定状态" -#: judge/models/contest.py:414 judge/models/contest.py:514 -#: judge/models/contest.py:553 judge/models/contest.py:576 -#: judge/models/submission.py:85 +#: judge/models/contest.py:479 judge/models/contest.py:579 +#: judge/models/contest.py:618 judge/models/contest.py:641 +#: judge/models/submission.py:87 msgid "contest" msgstr "竞赛" -#: judge/models/contest.py:415 +#: judge/models/contest.py:480 msgid "contests" msgstr "竞赛" -#: judge/models/contest.py:422 +#: judge/models/contest.py:487 msgid "associated contest" msgstr "关联的竞赛" -#: judge/models/contest.py:425 +#: judge/models/contest.py:490 msgid "score" msgstr "得分" -#: judge/models/contest.py:426 +#: judge/models/contest.py:491 msgid "cumulative time" msgstr "累积时间" -#: judge/models/contest.py:427 +#: judge/models/contest.py:492 msgid "is disqualified" msgstr "已被取消资格" -#: judge/models/contest.py:428 +#: judge/models/contest.py:493 msgid "Whether this participation is disqualified." msgstr "此参与是否被取消资格。" -#: judge/models/contest.py:429 +#: judge/models/contest.py:494 msgid "tie-breaking field" msgstr "以这个抢七" -#: judge/models/contest.py:430 +#: judge/models/contest.py:495 msgid "virtual participation id" msgstr "虚拟参与信息编号" -#: judge/models/contest.py:431 +#: judge/models/contest.py:496 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 表示正式参与,否则表示第n次虚拟参与。" -#: judge/models/contest.py:432 +#: judge/models/contest.py:497 msgid "contest format specific data" msgstr "竞赛格式特有的数据" -#: judge/models/contest.py:500 +#: judge/models/contest.py:565 #, python-format msgid "%s spectating in %s" msgstr "%s旁观%s中" -#: judge/models/contest.py:502 +#: judge/models/contest.py:567 #, python-format msgid "%s in %s, v%d" msgstr "%s于%s的第%d次虚拟参与" -#: judge/models/contest.py:503 +#: judge/models/contest.py:568 #, python-format msgid "%s in %s" msgstr "%s参与%s中" -#: judge/models/contest.py:506 +#: judge/models/contest.py:571 msgid "contest participation" msgstr "竞赛参与信息" -#: judge/models/contest.py:507 +#: judge/models/contest.py:572 msgid "contest participations" msgstr "竞赛参与信息" -#: judge/models/contest.py:513 judge/models/contest.py:537 -#: judge/models/contest.py:577 judge/models/problem.py:457 -#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/contest.py:578 judge/models/contest.py:602 +#: judge/models/contest.py:642 judge/models/problem.py:466 +#: judge/models/problem.py:471 judge/models/problem.py:490 #: judge/models/problem_data.py:35 msgid "problem" msgstr "题目" -#: judge/models/contest.py:515 judge/models/contest.py:541 -#: judge/models/problem.py:151 +#: judge/models/contest.py:580 judge/models/contest.py:606 +#: judge/models/problem.py:152 msgid "points" msgstr "分" -#: judge/models/contest.py:516 +#: judge/models/contest.py:581 msgid "partial" msgstr "部分" -#: judge/models/contest.py:517 judge/models/contest.py:542 +#: judge/models/contest.py:582 judge/models/contest.py:607 msgid "is pretested" msgstr "仅通过预测试" -#: judge/models/contest.py:518 judge/models/interface.py:43 +#: judge/models/contest.py:583 judge/models/interface.py:43 msgid "order" msgstr "顺序" -#: judge/models/contest.py:519 +#: judge/models/contest.py:584 msgid "output prefix length override" msgstr "输出前缀替换" -#: judge/models/contest.py:521 +#: judge/models/contest.py:586 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "此问题的最大提交数量,或留空白而表示无限制" -#: judge/models/contest.py:524 +#: judge/models/contest.py:589 msgid "Why include a problem you can't submit to?" msgstr "为什么包括一个你不能提交的问题?" -#: judge/models/contest.py:529 +#: judge/models/contest.py:594 msgid "contest problem" msgstr "竞赛题目" -#: judge/models/contest.py:530 +#: judge/models/contest.py:595 msgid "contest problems" msgstr "竞赛题目" -#: judge/models/contest.py:535 judge/models/submission.py:218 +#: judge/models/contest.py:600 judge/models/submission.py:231 msgid "submission" msgstr "提交信息" -#: judge/models/contest.py:539 judge/models/contest.py:554 +#: judge/models/contest.py:604 judge/models/contest.py:619 msgid "participation" msgstr "参与" -#: judge/models/contest.py:543 +#: judge/models/contest.py:608 msgid "Whether this submission was ran only on pretests." msgstr "该程序是否只通过预测试。" -#: judge/models/contest.py:547 +#: judge/models/contest.py:612 msgid "contest submission" msgstr "竞赛提交信息" -#: judge/models/contest.py:548 +#: judge/models/contest.py:613 msgid "contest submissions" msgstr "竞赛提交历史" -#: judge/models/contest.py:556 +#: judge/models/contest.py:621 msgid "rank" msgstr "排名" -#: judge/models/contest.py:557 +#: judge/models/contest.py:622 msgid "rating" msgstr "评分" -#: judge/models/contest.py:558 +#: judge/models/contest.py:623 msgid "raw rating" -msgstr "" +msgstr "原始评分" -#: judge/models/contest.py:559 +#: judge/models/contest.py:624 msgid "contest performance" msgstr "" -#: judge/models/contest.py:560 +#: judge/models/contest.py:625 msgid "last rated" msgstr "上次评分" -#: judge/models/contest.py:564 +#: judge/models/contest.py:629 msgid "contest rating" msgstr "竞赛评分信息" -#: judge/models/contest.py:565 +#: judge/models/contest.py:630 msgid "contest ratings" msgstr "竞赛评分历史" -#: judge/models/contest.py:584 +#: judge/models/contest.py:649 msgid "contest moss result" msgstr "竞赛MOSS结果" -#: judge/models/contest.py:585 +#: judge/models/contest.py:650 msgid "contest moss results" msgstr "竞赛MOSS结果" @@ -1274,7 +1357,7 @@ msgstr "父项" msgid "post title" msgstr "文章标题" -#: judge/models/interface.py:67 judge/models/problem.py:500 +#: judge/models/interface.py:67 judge/models/problem.py:510 msgid "authors" msgstr "作者" @@ -1282,7 +1365,7 @@ msgstr "作者" msgid "slug" msgstr "网址标志" -#: judge/models/interface.py:69 judge/models/problem.py:498 +#: judge/models/interface.py:69 judge/models/problem.py:508 msgid "public visibility" msgstr "公共可见性" @@ -1310,11 +1393,15 @@ msgstr "openGraph 图像" msgid "Edit all posts" msgstr "编辑所有的帖子" -#: judge/models/interface.py:98 +#: judge/models/interface.py:97 +msgid "Edit post visibility" +msgstr "" + +#: judge/models/interface.py:99 msgid "blog post" msgstr "博客文章" -#: judge/models/interface.py:99 +#: judge/models/interface.py:100 msgid "blog posts" msgstr "博客文章" @@ -1335,7 +1422,7 @@ msgstr "题目类型名称" msgid "problem type" msgstr "题目类型" -#: judge/models/problem.py:44 judge/models/problem.py:135 +#: judge/models/problem.py:44 judge/models/problem.py:136 msgid "problem types" msgstr "题目类型" @@ -1347,7 +1434,7 @@ msgstr "题目组标识符" msgid "problem group name" msgstr "题目组名称" -#: judge/models/problem.py:56 judge/models/problem.py:138 +#: judge/models/problem.py:56 judge/models/problem.py:139 msgid "problem group" msgstr "题目组" @@ -1367,7 +1454,7 @@ msgstr "链接" msgid "full name" msgstr "全名字" -#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/problem.py:65 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" msgstr "简称" @@ -1396,252 +1483,252 @@ msgstr "许可证" msgid "licenses" msgstr "许可证" -#: judge/models/problem.py:112 +#: judge/models/problem.py:113 msgid "Follow global setting" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:114 msgid "Always visible" msgstr "始终可见" -#: judge/models/problem.py:114 +#: judge/models/problem.py:115 msgid "Visible if problem solved" msgstr "问题解决后可见" -#: judge/models/problem.py:115 +#: judge/models/problem.py:116 msgid "Only own submissions" msgstr "我提交的程序" -#: judge/models/problem.py:118 +#: judge/models/problem.py:119 msgid "problem code" msgstr "题目代码" -#: judge/models/problem.py:120 +#: judge/models/problem.py:121 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "一个简短,独特的问题代码,将在URL里/problem/之后显示" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem name" msgstr "题目名称" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "The full name of the problem, as shown in the problem list." msgstr "问题列表中显示的问题全名。" -#: judge/models/problem.py:125 +#: judge/models/problem.py:126 msgid "problem body" msgstr "题目正文" -#: judge/models/problem.py:126 +#: judge/models/problem.py:127 msgid "creators" msgstr "作者" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "这些用户将能够编辑问题并被列为提问者。" -#: judge/models/problem.py:129 +#: judge/models/problem.py:130 msgid "curators" msgstr "管理员" -#: judge/models/problem.py:130 +#: judge/models/problem.py:131 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "这些用户将可以编辑这个问题,但不会公开显示为提问者。" -#: judge/models/problem.py:132 +#: judge/models/problem.py:133 msgid "testers" msgstr "测试人员" -#: judge/models/problem.py:134 +#: judge/models/problem.py:135 msgid "These users will be able to view the private problem, but not edit it." msgstr "这些用户将能查看这个隐藏的问题,但无法编辑。" -#: judge/models/problem.py:136 +#: judge/models/problem.py:137 msgid "The type of problem, as shown on the problem's page." msgstr "在问题页面显示的问题类型。" -#: judge/models/problem.py:139 +#: judge/models/problem.py:140 msgid "The group of problem, shown under Category in the problem list." msgstr "在问题列表显示的问题组" -#: judge/models/problem.py:141 +#: judge/models/problem.py:142 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "这个问题的时间限制(以秒为单位。支持小数秒计时方式(例如1.5)。" -#: judge/models/problem.py:145 judge/models/problem.py:485 +#: judge/models/problem.py:146 judge/models/problem.py:495 msgid "memory limit" msgstr "内存限制" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "此问题的存储限制,以kb为单位(例如 64mb = 65536 kb)" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "完成问题得分的分数,如果有部分分数而显示'p'结尾。" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "allows partial points" msgstr "允许部分分数" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "allowed languages" msgstr "允许的语言" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "List of allowed submission languages." msgstr "允许提交语言。" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "manually managed" msgstr "手动管理" -#: judge/models/problem.py:160 +#: judge/models/problem.py:161 msgid "Whether judges should be allowed to manage data or not." msgstr "是否允许裁判管理数据" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "date of publishing" msgstr "公开日期" -#: judge/models/problem.py:162 +#: judge/models/problem.py:163 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "无法自动在时间后公开题目" -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "Bans the selected users from submitting to this problem." msgstr "禁止这些用户对该题目提交答案。" -#: judge/models/problem.py:166 +#: judge/models/problem.py:167 msgid "The license under which this problem is published." msgstr "此问题的許可證。" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "problem summary" msgstr "问题摘要" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "number of users" msgstr "用户数" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "The number of users who solved the problem." msgstr "解决这个问题的用户数量。" -#: judge/models/problem.py:172 +#: judge/models/problem.py:173 msgid "solve rate" msgstr "通过率" -#: judge/models/problem.py:173 +#: judge/models/problem.py:174 msgid "allow full markdown access" msgstr "允许使用所有markup" -#: judge/models/problem.py:174 +#: judge/models/problem.py:175 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:182 +#: judge/models/problem.py:183 msgid "If private, only these organizations may see the problem." msgstr "隐藏时,只对选择的组织才可见" -#: judge/models/problem.py:447 +#: judge/models/problem.py:456 msgid "See hidden problems" msgstr "查看隐藏问题" -#: judge/models/problem.py:448 +#: judge/models/problem.py:457 msgid "Edit own problems" msgstr "编辑自己的问题" -#: judge/models/problem.py:449 +#: judge/models/problem.py:458 msgid "Edit all problems" msgstr "编辑所有问题" -#: judge/models/problem.py:450 +#: judge/models/problem.py:459 msgid "Edit all public problems" msgstr "编辑所有公共问题" -#: judge/models/problem.py:451 +#: judge/models/problem.py:460 msgid "Edit problems with full markup" msgstr "使用所有markup来编辑问题" -#: judge/models/problem.py:452 templates/problem/problem.html:161 +#: judge/models/problem.py:461 templates/problem/problem.html:161 msgid "Clone problem" msgstr "复制题目" -#: judge/models/problem.py:453 +#: judge/models/problem.py:462 msgid "Change is_public field" msgstr "改变is_public领域" -#: judge/models/problem.py:454 +#: judge/models/problem.py:463 msgid "Change is_manually_managed field" msgstr "改变is_manually_managed领域" -#: judge/models/problem.py:455 +#: judge/models/problem.py:464 msgid "See organization-private problems" msgstr "查看对组织私有的问题" -#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/problem.py:472 judge/models/problem.py:491 #: judge/models/runtime.py:111 msgid "language" msgstr "语言" -#: judge/models/problem.py:464 +#: judge/models/problem.py:473 msgid "translated name" msgstr "翻译题目名" -#: judge/models/problem.py:465 +#: judge/models/problem.py:474 msgid "translated description" msgstr "翻译题目正文" -#: judge/models/problem.py:469 +#: judge/models/problem.py:479 msgid "problem translation" msgstr "题目翻译" -#: judge/models/problem.py:470 +#: judge/models/problem.py:480 msgid "problem translations" msgstr "题目翻译" -#: judge/models/problem.py:474 +#: judge/models/problem.py:484 msgid "clarified problem" msgstr "已澄清的问题" -#: judge/models/problem.py:475 +#: judge/models/problem.py:485 msgid "clarification body" msgstr "澄清的身体" -#: judge/models/problem.py:476 +#: judge/models/problem.py:486 msgid "clarification timestamp" msgstr "澄清时间戳" -#: judge/models/problem.py:491 +#: judge/models/problem.py:501 msgid "language-specific resource limit" msgstr "语言特定资源限制" -#: judge/models/problem.py:492 +#: judge/models/problem.py:502 msgid "language-specific resource limits" msgstr "语言特定资源限制" -#: judge/models/problem.py:496 +#: judge/models/problem.py:506 msgid "associated problem" msgstr "关联的题目" -#: judge/models/problem.py:499 +#: judge/models/problem.py:509 msgid "publish date" msgstr "发布日期" -#: judge/models/problem.py:501 +#: judge/models/problem.py:511 msgid "editorial content" msgstr "可编辑的内容" -#: judge/models/problem.py:524 +#: judge/models/problem.py:534 msgid "See hidden solutions" msgstr "查看隐藏的解答" -#: judge/models/problem.py:526 +#: judge/models/problem.py:536 msgid "solution" msgstr "题目讲解" -#: judge/models/problem.py:527 +#: judge/models/problem.py:537 msgid "solutions" msgstr "题目讲解" @@ -1753,289 +1840,342 @@ msgstr "分数" msgid "case is pretest?" msgstr "是否为预测试?" -#: judge/models/profile.py:41 +#: judge/models/profile.py:42 msgid "organization title" msgstr "组织名称" -#: judge/models/profile.py:42 +#: judge/models/profile.py:43 msgid "organization slug" msgstr "组织代码" -#: judge/models/profile.py:43 +#: judge/models/profile.py:44 msgid "Organization name shown in URL" msgstr "组织名称在 URL 中显示" -#: judge/models/profile.py:45 +#: judge/models/profile.py:46 msgid "Displayed beside user name during contests" msgstr "竞赛时显示在用户名旁边" -#: judge/models/profile.py:46 +#: judge/models/profile.py:47 msgid "organization description" msgstr "组织描述" -#: judge/models/profile.py:47 +#: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" msgstr "管理员" -#: judge/models/profile.py:48 +#: judge/models/profile.py:49 msgid "Those who can edit this organization" msgstr "这些用户可以编辑此组织" -#: judge/models/profile.py:49 +#: judge/models/profile.py:50 msgid "creation date" msgstr "创建日期" -#: judge/models/profile.py:50 +#: judge/models/profile.py:51 msgid "is open organization?" msgstr "是开放的组织吗?" -#: judge/models/profile.py:51 +#: judge/models/profile.py:52 msgid "Allow joining organization" msgstr "允许加入组织" -#: judge/models/profile.py:52 +#: judge/models/profile.py:53 msgid "maximum size" msgstr "最大大小" -#: judge/models/profile.py:53 +#: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "这个组织用户最大数量,只适用于私人组织" -#: judge/models/profile.py:55 +#: judge/models/profile.py:56 msgid "Student access code" msgstr "学生访问码" -#: judge/models/profile.py:59 +#: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." msgstr "此图片将替换访问该组织的用户的默认网站标识。" -#: judge/models/profile.py:82 +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "" + +#: judge/models/profile.py:63 +msgid "whether members are compelled to select a class when joining" +msgstr "" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment" +msgstr "" + +#: judge/models/profile.py:95 msgid "Administer organizations" msgstr "管理组织" -#: judge/models/profile.py:83 +#: judge/models/profile.py:96 msgid "Edit all organizations" msgstr "编辑所有组织" -#: judge/models/profile.py:85 judge/models/profile.py:102 -#: judge/models/profile.py:299 +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:160 judge/models/profile.py:357 msgid "organization" msgstr "组织" -#: judge/models/profile.py:90 +#: judge/models/profile.py:104 +msgid "the organization that this class belongs to" +msgstr "" + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "类名" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "" + +#: judge/models/profile.py:107 +msgid "class name shown in URLs" +msgstr "" + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "" + +#: judge/models/profile.py:111 +msgid "student access code" +msgstr "" + +#: judge/models/profile.py:113 +msgid "those who can approve membership to this class" +msgstr "" + +#: judge/models/profile.py:114 +msgid "members" +msgstr "成员" + +#: judge/models/profile.py:142 judge/models/profile.py:365 +msgid "class" +msgstr "类" + +#: judge/models/profile.py:148 msgid "user associated" msgstr "关联的用户" -#: judge/models/profile.py:91 +#: judge/models/profile.py:149 msgid "self-description" msgstr "自我描述" -#: judge/models/profile.py:92 +#: judge/models/profile.py:150 msgid "location" msgstr "位置" -#: judge/models/profile.py:94 +#: judge/models/profile.py:152 msgid "preferred language" msgstr "首选语言" -#: judge/models/profile.py:100 +#: judge/models/profile.py:158 msgid "last access time" msgstr "上次访问时间" -#: judge/models/profile.py:101 +#: judge/models/profile.py:159 msgid "last IP" msgstr "上次访问 IP" -#: judge/models/profile.py:104 +#: judge/models/profile.py:162 msgid "display rank" msgstr "显示排名" -#: judge/models/profile.py:106 +#: judge/models/profile.py:164 msgid "Normal User" msgstr "普通用户" -#: judge/models/profile.py:107 +#: judge/models/profile.py:165 msgid "Problem Setter" msgstr "问题作家" -#: judge/models/profile.py:108 templates/base.html:220 -#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 +#: judge/models/profile.py:166 templates/base.html:218 +#: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:26 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:13 #: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:14 msgid "Admin" msgstr "管理" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "comment mute" msgstr "禁止评论" -#: judge/models/profile.py:109 +#: judge/models/profile.py:167 msgid "Some users are at their best when silent." msgstr "某些用户在沉默时表现最佳。" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "unlisted user" msgstr "未列出用户" -#: judge/models/profile.py:111 +#: judge/models/profile.py:169 msgid "User will not be ranked." msgstr "用户将不被排名。" -#: judge/models/profile.py:114 +#: judge/models/profile.py:172 msgid "user script" msgstr "用户脚本" -#: judge/models/profile.py:115 +#: judge/models/profile.py:173 msgid "User-defined JavaScript for site customization." msgstr "用户自定义 JavaScript。" -#: judge/models/profile.py:116 +#: judge/models/profile.py:174 msgid "current contest" msgstr "当前竞赛" -#: judge/models/profile.py:118 +#: judge/models/profile.py:176 msgid "math engine" msgstr "数学引擎" -#: judge/models/profile.py:120 +#: judge/models/profile.py:178 msgid "the rendering engine used to render math" msgstr "数学渲染使用的引擎" -#: judge/models/profile.py:121 +#: judge/models/profile.py:179 msgid "TOTP 2FA enabled" msgstr "TOTP 2FA 已启用" -#: judge/models/profile.py:122 +#: judge/models/profile.py:180 msgid "check to enable TOTP-based two-factor authentication" msgstr "打钩以启用TOTP双重验证" -#: judge/models/profile.py:123 +#: judge/models/profile.py:181 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn 2FA 已启用" -#: judge/models/profile.py:124 +#: judge/models/profile.py:182 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "打钩以启用WebAuthn双重验证" -#: judge/models/profile.py:125 +#: judge/models/profile.py:183 msgid "TOTP key" msgstr "TOTP 密钥" -#: judge/models/profile.py:126 +#: judge/models/profile.py:184 msgid "32 character base32-encoded key for TOTP" msgstr "TOTP的32字符,32进制密钥" -#: judge/models/profile.py:128 +#: judge/models/profile.py:186 msgid "TOTP key must be empty or base32" msgstr "TOTP 密钥必须为空或三十二进制" -#: judge/models/profile.py:129 +#: judge/models/profile.py:187 msgid "scratch codes" msgstr "一次性代码:" -#: judge/models/profile.py:130 +#: judge/models/profile.py:188 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "含有16字符的32进制代码的JSON数组" -#: judge/models/profile.py:134 +#: judge/models/profile.py:192 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "一次性代码必须是空的或者是一个含有32进制代码的JSON数组" -#: judge/models/profile.py:136 +#: judge/models/profile.py:194 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:195 msgid "API token" msgstr "API令牌" -#: judge/models/profile.py:138 +#: judge/models/profile.py:196 msgid "64 character hex-encoded API access token" msgstr "64 个字符hex编码的API访问令牌" -#: judge/models/profile.py:140 +#: judge/models/profile.py:198 msgid "API token must be None or hexadecimal" msgstr "API 令牌必须是莫或十六进制的" -#: judge/models/profile.py:141 +#: judge/models/profile.py:199 msgid "internal notes" msgstr "内部备注" -#: judge/models/profile.py:142 +#: judge/models/profile.py:200 msgid "Notes for administrators regarding this user." msgstr "此用户的管理员备注。" -#: judge/models/profile.py:143 +#: judge/models/profile.py:201 msgid "last data download time" msgstr "上次数据下载时间" -#: judge/models/profile.py:144 +#: judge/models/profile.py:202 msgid "display name override" msgstr "" -#: judge/models/profile.py:145 +#: judge/models/profile.py:203 msgid "name displayed in place of username" msgstr "" -#: judge/models/profile.py:259 +#: judge/models/profile.py:317 msgid "Shows in-progress development stuff" msgstr "显示正在开发的内容" -#: judge/models/profile.py:260 +#: judge/models/profile.py:318 msgid "Edit TOTP settings" msgstr "编辑 TOTP 设置" -#: judge/models/profile.py:262 +#: judge/models/profile.py:320 msgid "user profile" msgstr "用户信息" -#: judge/models/profile.py:263 +#: judge/models/profile.py:321 msgid "user profiles" msgstr "用户信息" -#: judge/models/profile.py:269 +#: judge/models/profile.py:327 msgid "device name" msgstr "设备名称" -#: judge/models/profile.py:270 +#: judge/models/profile.py:328 msgid "credential ID" msgstr "凭据ID" -#: judge/models/profile.py:271 +#: judge/models/profile.py:329 msgid "public key" msgstr "公钥" -#: judge/models/profile.py:272 +#: judge/models/profile.py:330 msgid "sign counter" msgstr "签名数量" -#: judge/models/profile.py:293 +#: judge/models/profile.py:351 msgid "WebAuthn credential" msgstr "WebAuthn凭据" -#: judge/models/profile.py:294 +#: judge/models/profile.py:352 msgid "WebAuthn credentials" msgstr "WebAuthn 凭据" -#: judge/models/profile.py:301 +#: judge/models/profile.py:359 msgid "request time" msgstr "请求时间" -#: judge/models/profile.py:302 +#: judge/models/profile.py:360 msgid "state" msgstr "状态" -#: judge/models/profile.py:307 +#: judge/models/profile.py:366 msgid "reason" msgstr "原因" -#: judge/models/profile.py:310 +#: judge/models/profile.py:375 msgid "organization join request" msgstr "组织加入请求" -#: judge/models/profile.py:311 +#: judge/models/profile.py:376 msgid "organization join requests" msgstr "组织加入请求" @@ -2183,6 +2323,10 @@ msgstr "系统负载" msgid "Load for the last minute, divided by processors to be fair." msgstr "最后一分钟的系统负载(每处理器平均值)" +#: judge/models/runtime.py:137 +msgid "last connected IP" +msgstr "" + #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "裁判服务器" @@ -2191,210 +2335,210 @@ msgstr "裁判服务器" msgid "judge" msgstr "裁判服务器" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "接受" -#: judge/models/submission.py:22 judge/models/submission.py:49 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" msgstr "答案错误" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" msgstr "超出时间限制" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" msgstr "超出内存限制" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" msgstr "超出输出限制" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" msgstr "错误退出代码" -#: judge/models/submission.py:27 judge/models/submission.py:55 +#: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" msgstr "运行错误" -#: judge/models/submission.py:28 judge/models/submission.py:42 -#: judge/models/submission.py:56 judge/utils/problems.py:76 +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:76 msgid "Compile Error" msgstr "编译错误" -#: judge/models/submission.py:29 judge/models/submission.py:41 +#: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" msgstr "内部错误" -#: judge/models/submission.py:30 +#: judge/models/submission.py:31 msgid "Short circuit" msgstr "跳过" -#: judge/models/submission.py:31 judge/models/submission.py:43 -#: judge/models/submission.py:62 +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 msgid "Aborted" msgstr "中止" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" msgstr "等待中" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" msgstr "处理中" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" msgstr "评分中" -#: judge/models/submission.py:40 judge/models/submission.py:61 +#: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" msgstr "完成" -#: judge/models/submission.py:57 +#: judge/models/submission.py:59 msgid "Internal Error (judging server error)" msgstr "内部错误 (裁判服务器错误)" -#: judge/models/submission.py:67 +#: judge/models/submission.py:69 msgid "submission time" msgstr "提交时间" -#: judge/models/submission.py:68 judge/models/submission.py:238 +#: judge/models/submission.py:70 judge/models/submission.py:252 msgid "execution time" msgstr "执行时间" -#: judge/models/submission.py:69 judge/models/submission.py:239 +#: judge/models/submission.py:71 judge/models/submission.py:253 msgid "memory usage" msgstr "内存使用" -#: judge/models/submission.py:70 judge/models/submission.py:240 +#: judge/models/submission.py:72 judge/models/submission.py:254 msgid "points granted" msgstr "获得分数" -#: judge/models/submission.py:71 +#: judge/models/submission.py:73 msgid "submission language" msgstr "提交语言" -#: judge/models/submission.py:72 +#: judge/models/submission.py:74 msgid "status" msgstr "状态" -#: judge/models/submission.py:73 +#: judge/models/submission.py:75 msgid "result" msgstr "结果" -#: judge/models/submission.py:75 +#: judge/models/submission.py:77 msgid "compile errors" msgstr "编译错误" -#: judge/models/submission.py:77 +#: judge/models/submission.py:79 msgid "batched cases" msgstr "测试组" -#: judge/models/submission.py:78 +#: judge/models/submission.py:80 msgid "test case points" msgstr "测试点分值" -#: judge/models/submission.py:79 +#: judge/models/submission.py:81 msgid "test case total points" msgstr "测试用例总分" -#: judge/models/submission.py:80 +#: judge/models/submission.py:82 msgid "judged on" msgstr "裁判服务器" -#: judge/models/submission.py:82 +#: judge/models/submission.py:84 msgid "submission judge time" msgstr "提交评论时间" -#: judge/models/submission.py:83 +#: judge/models/submission.py:85 msgid "last rejudge date by admin" msgstr "管理员最后一次的重新判断日期" -#: judge/models/submission.py:84 +#: judge/models/submission.py:86 msgid "was ran on pretests only" msgstr "只进行过预测试" -#: judge/models/submission.py:87 +#: judge/models/submission.py:89 msgid "submission lock" msgstr "提交锁定" -#: judge/models/submission.py:210 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "中止任何提交" -#: judge/models/submission.py:211 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "重新评分提交" -#: judge/models/submission.py:212 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "重新评分很多提交" -#: judge/models/submission.py:213 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "不受限制提交" -#: judge/models/submission.py:214 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "查看所有提交" -#: judge/models/submission.py:215 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "重新提交他人的提交" -#: judge/models/submission.py:216 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "更改提交锁定状态" -#: judge/models/submission.py:219 templates/contest/moss.html:58 +#: judge/models/submission.py:232 templates/contest/moss.html:58 msgid "submissions" msgstr "提交历史" -#: judge/models/submission.py:223 judge/models/submission.py:234 +#: judge/models/submission.py:236 judge/models/submission.py:248 msgid "associated submission" msgstr "相关提交" -#: judge/models/submission.py:225 +#: judge/models/submission.py:238 msgid "source code" msgstr "源码" -#: judge/models/submission.py:236 +#: judge/models/submission.py:250 msgid "test case ID" msgstr "测试编号" -#: judge/models/submission.py:237 +#: judge/models/submission.py:251 msgid "status flag" msgstr "状态标志" -#: judge/models/submission.py:241 +#: judge/models/submission.py:255 msgid "points possible" msgstr "满分" -#: judge/models/submission.py:242 +#: judge/models/submission.py:256 msgid "batch number" msgstr "批号" -#: judge/models/submission.py:243 +#: judge/models/submission.py:257 msgid "judging feedback" msgstr "评测反馈" -#: judge/models/submission.py:244 +#: judge/models/submission.py:258 msgid "extended judging feedback" msgstr "延长的裁判反馈" -#: judge/models/submission.py:245 +#: judge/models/submission.py:259 msgid "program output" msgstr "程序输出" -#: judge/models/submission.py:253 +#: judge/models/submission.py:267 msgid "submission test case" msgstr "程序测试" -#: judge/models/submission.py:254 +#: judge/models/submission.py:268 msgid "submission test cases" msgstr "程序测试" @@ -2450,16 +2594,44 @@ msgstr "消息正文" msgid "message time" msgstr "消息时间" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 -#: judge/pdf_problems.py:260 +#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 +#: judge/pdf_problems.py:266 msgid "Page [page] of [topage]" msgstr "第[page]页,共[topage]页" -#: judge/pdf_problems.py:282 +#: judge/pdf_problems.py:288 #, python-format msgid "Page %s of %s" msgstr "第%s页/共%s 页" +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "新手" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "刚入门" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "专家" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "高手" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "宗师" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "目标" + #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" msgstr "正在重新计算比赛分数" @@ -2468,17 +2640,17 @@ msgstr "正在重新计算比赛分数" msgid "Running MOSS" msgstr "正在运行 MOSS。" -#: judge/tasks/submission.py:45 +#: judge/tasks/submission.py:47 msgid "Modifying submissions" msgstr "正在改变提交" -#: judge/tasks/submission.py:58 +#: judge/tasks/submission.py:60 msgid "Recalculating user points" msgstr "正在重新计算用户分数" #: judge/tasks/user.py:49 msgid "Applying filters" -msgstr "" +msgstr "筛选" #: judge/tasks/user.py:64 msgid "Preparing your submission data" @@ -2541,14 +2713,14 @@ msgstr "出错" msgid "Can't pass both queryset and keyword filters" msgstr "无法同时使用 queryset 和关键字筛选" -#: judge/utils/pwned.py:101 -msgid "Your password can't be a commonly used password." -msgstr "您的密码不能是常见的密码。" - -#: judge/utils/pwned.py:102 +#: judge/utils/pwned.py:109 msgid "This password is too common." msgstr "这个密码太常见了。" +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." +msgstr "您的密码不能是常见的密码。" + #: judge/utils/timedelta.py:49 msgctxt "time format with day" msgid "%d day %h:%m:%s" @@ -2590,11 +2762,15 @@ msgstr "请别捣乱。" msgid "You must solve at least one problem before you can vote." msgstr "您投票前必须解决至少一个问题。" +#: judge/views/comment.py:48 +msgid "Comment not found." +msgstr "找不到评论。" + #: judge/views/comment.py:66 msgid "You already voted." msgstr "你已经投了票。" -#: judge/views/comment.py:129 judge/views/organization.py:297 +#: judge/views/comment.py:129 judge/views/organization.py:350 msgid "Edited from site" msgstr "从网站中上编辑" @@ -2602,130 +2778,129 @@ msgstr "从网站中上编辑" msgid "Editing comment" msgstr "编辑评论" -#: judge/views/contests.py:57 judge/views/contests.py:210 -#: judge/views/contests.py:213 judge/views/contests.py:410 +#: judge/views/contests.py:58 judge/views/contests.py:231 +#: judge/views/contests.py:234 judge/views/contests.py:439 msgid "No such contest" msgstr "该竞赛不存在" -#: judge/views/contests.py:58 judge/views/contests.py:211 +#: judge/views/contests.py:59 judge/views/contests.py:232 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "找不到标识符为“%s“的竞赛。" -#: judge/views/contests.py:71 +#: judge/views/contests.py:72 msgid "Contests" msgstr "竞赛" -#: judge/views/contests.py:214 +#: judge/views/contests.py:235 msgid "Could not find such contest." msgstr "找不到该竞赛。" -#: judge/views/contests.py:217 +#: judge/views/contests.py:238 #, python-format msgid "Access to contest \"%s\" denied" msgstr "对竞赛”%s“的访问被拒绝" -#: judge/views/contests.py:259 +#: judge/views/contests.py:283 msgid "Clone Contest" msgstr "复制竞赛" -#: judge/views/contests.py:293 +#: judge/views/contests.py:317 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:329 +#: judge/views/contests.py:353 msgid "Contest not ongoing" msgstr "竞赛不在进行" -#: judge/views/contests.py:330 +#: judge/views/contests.py:354 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "“%s“不在进行。" -#: judge/views/contests.py:334 -msgid "Already in contest" -msgstr "已经参与了竞赛" - -#: judge/views/contests.py:335 -#, python-format -msgid "You are already in a contest: \"%s\"." -msgstr "您已经参与了竞赛:”%s“。" - -#: judge/views/contests.py:338 +#: judge/views/contests.py:359 msgid "Banned from joining" msgstr "禁止加入" -#: judge/views/contests.py:339 +#: judge/views/contests.py:360 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "您在该竞赛不受欢迎。您被永久禁止参加该竞赛。" -#: judge/views/contests.py:400 +#: judge/views/contests.py:390 +msgid "Cannot enter" +msgstr "" + +#: judge/views/contests.py:391 +msgid "You are not able to join this contest." +msgstr "" + +#: judge/views/contests.py:429 #, python-format msgid "Enter access code for \"%s\"" msgstr "输入”%s“的访问码" -#: judge/views/contests.py:411 +#: judge/views/contests.py:440 #, python-format msgid "You are not in contest \"%s\"." msgstr "你不是在竞赛\"%s\"中。" -#: judge/views/contests.py:430 +#: judge/views/contests.py:459 msgid "ContestCalendar requires integer year and month" msgstr "ContestCalender 需要整数年份和月份" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 #, python-format msgid "Contests in %(month)s" msgstr "%(month)s的竞赛" -#: judge/views/contests.py:470 +#: judge/views/contests.py:499 msgid "F Y" msgstr "Y年n月" -#: judge/views/contests.py:517 +#: judge/views/contests.py:557 #, python-format msgid "%s Statistics" msgstr "%s 数据" -#: judge/views/contests.py:691 +#: judge/views/contests.py:731 #, python-format msgid "%s Rankings" msgstr "%s 排行榜" -#: judge/views/contests.py:699 +#: judge/views/contests.py:739 msgid "???" msgstr "???" -#: judge/views/contests.py:715 +#: judge/views/contests.py:755 #, python-format msgid "Your participation in %s" msgstr "你在%s中的参与历史" -#: judge/views/contests.py:716 +#: judge/views/contests.py:756 #, python-format msgid "%s's participation in %s" msgstr "%s在%s中的参与历史" -#: judge/views/contests.py:723 +#: judge/views/contests.py:763 msgid "Live" msgstr "实时" -#: judge/views/contests.py:735 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "参与历史" -#: judge/views/contests.py:779 +#: judge/views/contests.py:819 #, python-format msgid "%s MOSS Results" msgstr "%s MOSS 结果" -#: judge/views/contests.py:806 +#: judge/views/contests.py:846 #, python-format msgid "Running MOSS for %s..." msgstr "正在为 %s 运行 MOSS..." -#: judge/views/contests.py:829 +#: judge/views/contests.py:869 #, python-format msgid "Contest tag: %s" msgstr "竞赛标签:%s" @@ -2754,171 +2929,191 @@ msgstr "页面错误 %s" msgid "Runtimes" msgstr "语言" -#: judge/views/organization.py:43 judge/views/organization.py:46 +#: judge/views/organization.py:52 judge/views/organization.py:55 msgid "No such organization" msgstr "无该组织" -#: judge/views/organization.py:44 +#: judge/views/organization.py:53 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "找不到标识符为”%s“的组织。" -#: judge/views/organization.py:47 +#: judge/views/organization.py:56 msgid "Could not find such organization." msgstr "找不到该组织。" -#: judge/views/organization.py:71 judge/views/register.py:33 +#: judge/views/organization.py:81 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "组织" -#: judge/views/organization.py:92 +#: judge/views/organization.py:115 #, python-format msgid "%s Members" msgstr "%s 成员列表" -#: judge/views/organization.py:117 judge/views/organization.py:120 -#: judge/views/organization.py:125 +#: judge/views/organization.py:138 judge/views/organization.py:141 +#: judge/views/organization.py:146 msgid "Joining organization" msgstr "加入组织" -#: judge/views/organization.py:117 +#: judge/views/organization.py:138 msgid "You are already in the organization." msgstr "你已经是该组织的成员。" -#: judge/views/organization.py:120 +#: judge/views/organization.py:141 msgid "This organization is not open." msgstr "该组织不开放。" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 msgid "Leaving organization" msgstr "离开组织" -#: judge/views/organization.py:137 +#: judge/views/organization.py:158 #, python-format msgid "You are not in \"%s\"." msgstr "你不是是“%s”的成员。" -#: judge/views/organization.py:161 +#: judge/views/organization.py:185 judge/views/organization.py:438 +#, python-format +msgid "Can't request to join %s" +msgstr "无法申请加入 %s" + +#: judge/views/organization.py:186 judge/views/organization.py:439 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "您的加入请求待定" + +#: judge/views/organization.py:199 #, python-format msgid "Request to join %s" msgstr "请求加入 %s" -#: judge/views/organization.py:179 +#: judge/views/organization.py:218 msgid "Join request detail" msgstr "组织加入请求详细信息" -#: judge/views/organization.py:207 +#: judge/views/organization.py:257 #, python-format msgid "Managing join requests for %s" msgstr "管理 %s 的加入请求" -#: judge/views/organization.py:238 +#: judge/views/organization.py:289 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "你的组织只能再接受%d个用户,无法接受%d个。" -#: judge/views/organization.py:250 +#: judge/views/organization.py:303 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "批准了%d个用户。" -#: judge/views/organization.py:251 +#: judge/views/organization.py:304 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "拒绝了%d个用户。" -#: judge/views/organization.py:281 +#: judge/views/organization.py:334 #, python-format msgid "Editing %s" msgstr "编辑 %s" -#: judge/views/organization.py:305 judge/views/organization.py:313 +#: judge/views/organization.py:358 judge/views/organization.py:366 msgid "Can't edit organization" msgstr "无法编辑组织" -#: judge/views/organization.py:306 +#: judge/views/organization.py:359 msgid "You are not allowed to edit this organization." msgstr "您没有编辑该组织的权利。" -#: judge/views/organization.py:314 +#: judge/views/organization.py:367 msgid "You are not allowed to kick people from this organization." msgstr "你没有踢组织成员的权利。" -#: judge/views/organization.py:319 judge/views/organization.py:323 +#: judge/views/organization.py:372 judge/views/organization.py:376 msgid "Can't kick user" msgstr "无法踢用户" -#: judge/views/organization.py:320 +#: judge/views/organization.py:373 msgid "The user you are trying to kick does not exist!" msgstr "你想踢的用户不存在!" -#: judge/views/organization.py:324 +#: judge/views/organization.py:377 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "你想踢的用户不是组织成员:%s" -#: judge/views/problem.py:68 +#: judge/views/organization.py:410 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "" + +#: judge/views/organization.py:416 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "" + +#: judge/views/organization.py:444 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "" + +#: judge/views/problem.py:71 msgid "No such problem" msgstr "无该题目" -#: judge/views/problem.py:69 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "找不到代码为“%s”的题目。" -#: judge/views/problem.py:111 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} 的题解" -#: judge/views/problem.py:114 -#, python-brace-format -msgid "Editorial for {0}" -msgstr "{0}的题解" - -#: judge/views/problem.py:133 +#: judge/views/problem.py:137 msgid "No such editorial" -msgstr "" +msgstr "没有这种编辑" -#: judge/views/problem.py:134 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:289 templates/contest/contest.html:188 +#: judge/views/problem.py:271 templates/contest/contest.html:191 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "题目" -#: judge/views/problem.py:562 judge/views/problem.py:570 +#: judge/views/problem.py:568 judge/views/problem.py:576 #, python-format msgid "Submit to %s" msgstr "提交给 %s" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "Banned from submitting" msgstr "禁止提交" -#: judge/views/problem.py:620 +#: judge/views/problem.py:626 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "您在该题目不受欢迎。您被永久禁止为该题目提交解决程序。" -#: judge/views/problem.py:624 +#: judge/views/problem.py:630 msgid "Too many submissions" msgstr "提交太多了" -#: judge/views/problem.py:625 +#: judge/views/problem.py:631 msgid "You have exceeded the submission limit for this problem." msgstr "您已超出此问题的提交限制。" -#: judge/views/problem.py:693 +#: judge/views/problem.py:699 msgid "Clone Problem" msgstr "复制问题" -#: judge/views/problem.py:720 +#: judge/views/problem.py:726 #, python-format msgid "Cloned problem from %s" msgstr "" @@ -2935,27 +3130,22 @@ msgstr "检查参数是无效的 JSON" msgid "Your zip file is invalid!" msgstr "您的 zip 文件是无效的 !" -#: judge/views/problem_data.py:104 +#: judge/views/problem_data.py:104 judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "比较 {0} 的提交" -#: judge/views/problem_data.py:107 -#, python-brace-format -msgid "Comparing submissions for {0}" -msgstr "正在比较 {0} 的提交情况" - -#: judge/views/problem_data.py:142 +#: judge/views/problem_data.py:143 #, python-brace-format msgid "Editing data for {0}" msgstr "正在编辑 {0} 的数据" -#: judge/views/problem_data.py:145 +#: judge/views/problem_data.py:146 #, python-format msgid "Editing data for %s" msgstr "编辑%s的测试数据" -#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 +#: judge/views/problem_data.py:244 judge/views/problem_data.py:245 #, python-format msgid "Generated init.yml for %s" msgstr "为%s生成的init.yml" @@ -2965,52 +3155,37 @@ msgstr "为%s生成的init.yml" msgid "Managing submissions for %s" msgstr "管理 %s的提交" -#: judge/views/problem_manage.py:95 +#: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "正在为%s重新评分选定的提交..." -#: judge/views/problem_manage.py:110 +#: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." msgstr "正在重新评分%s的所有提交" -#: judge/views/problem_manage.py:119 +#: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "成功预定重新评分%d个提交。" -#: judge/views/ranked_submission.py:67 +#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 #, python-format msgid "Best solutions for %s" msgstr "%s 排行榜" -#: judge/views/ranked_submission.py:70 -#, python-brace-format -msgid "Best solutions for {0}" -msgstr "{0} 排行榜" - -#: judge/views/ranked_submission.py:82 +#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "竞赛 %(contest)s 中 %(problem)s 排行榜" -#: judge/views/ranked_submission.py:85 +#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "%(contest)s 第 %(number)s 题的最佳解决方案" -#: judge/views/ranked_submission.py:91 -#, python-brace-format -msgid "Best solutions for {0} in {2}" -msgstr "竞赛 {2}{0} 排行榜" - -#: judge/views/ranked_submission.py:94 -#, python-brace-format -msgid "Best solutions for problem {0} in {1}" -msgstr "{1} 第 {0} 题的最佳解决方案" - #: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "用户名只能包含字母、 数字或下划线。" @@ -3044,85 +3219,88 @@ msgstr "身份验证失败" msgid "Language statistics" msgstr "语言统计信息" -#: judge/views/status.py:24 templates/submission/list.html:310 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "状态" -#: judge/views/status.py:109 +#: judge/views/status.py:108 msgid "Version matrix" msgstr "版本矩阵" -#: judge/views/submission.py:55 judge/views/submission.py:62 +#: judge/views/submission.py:70 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "" + +#: judge/views/submission.py:75 judge/views/submission.py:77 +msgid "Can't access submission" +msgstr "" + +#: judge/views/submission.py:77 +msgid "Permission denied." +msgstr "" + +#: judge/views/submission.py:81 judge/views/submission.py:88 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "%(user)s 在 %(problem)s 的提交结果" -#: judge/views/submission.py:205 judge/views/submission.py:206 +#: judge/views/submission.py:231 judge/views/submission.py:232 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "所有提交历史" -#: judge/views/submission.py:355 +#: judge/views/submission.py:391 msgid "All my submissions" msgstr "我提交的程序" -#: judge/views/submission.py:356 +#: judge/views/submission.py:392 #, python-format msgid "All submissions by %s" msgstr "%s 的提交历史" -#: judge/views/submission.py:387 +#: judge/views/submission.py:423 #, python-format msgid "All submissions for %s" msgstr "%s 的提交历史" -#: judge/views/submission.py:410 +#: judge/views/submission.py:446 msgid "Must pass a problem" msgstr "必须给予题目" -#: judge/views/submission.py:449 +#: judge/views/submission.py:485 #, python-format msgid "My submissions for %(problem)s" msgstr "我对 %(problem)s 提交的程序" -#: judge/views/submission.py:450 +#: judge/views/submission.py:486 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(user)s 在 %(problem)s 的提交历史" -#: judge/views/submission.py:548 +#: judge/views/submission.py:584 msgid "Must pass a contest" msgstr "必须给予竞赛" -#: judge/views/submission.py:556 +#: judge/views/submission.py:592 judge/views/submission.py:607 #, python-format msgid "My submissions in %(contest)s" msgstr "我在 %(contest)s 的提交" -#: judge/views/submission.py:557 +#: judge/views/submission.py:593 judge/views/submission.py:611 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "%(user)s 在 %(contest)s 的提交历史" -#: judge/views/submission.py:571 -#, python-brace-format -msgid "My submissions in {0}" -msgstr "我在 {0}的提交" - -#: judge/views/submission.py:573 -#, python-brace-format -msgid "{0}'s submissions in {2}" -msgstr "{0}{2}的提交" - -#: judge/views/submission.py:599 +#: judge/views/submission.py:629 judge/views/submission.py:647 #, python-brace-format -msgid "{0}'s submissions for {2} in {4}" -msgstr "{4}{0}{2} 的提交历史" +msgid "{user}'s submissions for {problem} in {contest}" +msgstr "{contest} 中 {user} 在 {problem} 的提交历史" -#: judge/views/submission.py:604 +#: judge/views/submission.py:634 judge/views/submission.py:655 #, python-brace-format -msgid "{0}'s submissions for problem {2} in {3}" -msgstr "{0}{3} 第 {2} 题提交的程序" +msgid "{user}'s submissions for problem {number} in {contest}" +msgstr "{user} 对 {contest} 第 {number} 题提交的程序" #: judge/views/ticket.py:33 judge/views/ticket.py:39 msgid "Ticket title" @@ -3146,30 +3324,30 @@ msgstr "新工单:%s" msgid "%(title)s - Ticket %(id)d" msgstr "%(title)s -工单 %(id)d" -#: judge/views/ticket.py:253 +#: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "工单 - 第 %(number)d 页,共 %(total)d 页" -#: judge/views/ticket.py:302 +#: judge/views/ticket.py:307 #, python-format msgid "New Ticket: %s" msgstr "新工单:%s" -#: judge/views/ticket.py:303 +#: judge/views/ticket.py:308 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "#%(id)d, 分配给: %(users)s" -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid ", " msgstr ", " -#: judge/views/ticket.py:305 +#: judge/views/ticket.py:310 msgid "no one" msgstr "没人" -#: judge/views/ticket.py:325 +#: judge/views/ticket.py:330 #, python-format msgid "New Ticket Message For: %s" msgstr "%s的新工单消息" @@ -3178,27 +3356,27 @@ msgstr "%s的新工单消息" msgid "Enable Two-factor Authentication" msgstr "启用双因素身份认证" -#: judge/views/two_factor.py:108 +#: judge/views/two_factor.py:109 msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:116 +#: judge/views/two_factor.py:117 msgid "Disable Two-factor Authentication" msgstr "禁用双因素身份认证" -#: judge/views/two_factor.py:165 +#: judge/views/two_factor.py:166 msgid "Invalid WebAuthn response" msgstr "WebAuthn回复无效" -#: judge/views/two_factor.py:168 +#: judge/views/two_factor.py:169 msgid "Invalid name" msgstr "名称无效" -#: judge/views/two_factor.py:221 +#: judge/views/two_factor.py:222 msgid "Staff may not disable 2FA" msgstr "员工不能禁用 2FA" -#: judge/views/two_factor.py:229 +#: judge/views/two_factor.py:230 msgid "Perform Two-factor Authentication" msgstr "执行双因素身份认证" @@ -3220,51 +3398,51 @@ msgstr "我的帐户" msgid "User %s" msgstr "用户 %s" -#: judge/views/user.py:131 +#: judge/views/user.py:130 msgid "Login" msgstr "登录" -#: judge/views/user.py:172 +#: judge/views/user.py:171 msgid "M j, Y, G:i" msgstr "Y年n月j日 G:i" -#: judge/views/user.py:306 +#: judge/views/user.py:305 msgid "Preparing your data..." msgstr "正在准备您的数据..." -#: judge/views/user.py:310 templates/user/edit-profile.html:352 +#: judge/views/user.py:309 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "下载您的数据" -#: judge/views/user.py:366 +#: judge/views/user.py:365 msgid "Updated on site" msgstr "在网站上更新" -#: judge/views/user.py:399 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:222 +#: judge/views/user.py:398 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:220 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "编辑个人资料" -#: judge/views/user.py:414 +#: judge/views/user.py:413 msgid "Generated API token for user" msgstr "为用户生成 API 令牌" -#: judge/views/user.py:426 +#: judge/views/user.py:425 msgid "Removed API token for user" msgstr "为用户清除API令牌" -#: judge/views/user.py:436 +#: judge/views/user.py:435 msgid "Generated scratch codes for user" msgstr "为用户生成一次性代码" -#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:441 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "排行榜" -#: judge/views/user.py:503 +#: judge/views/user.py:502 msgid "You have been successfully logged out." -msgstr "" +msgstr "您已成功注销。" #: judge/views/widgets.py:52 judge/views/widgets.py:62 #, python-format @@ -3318,36 +3496,39 @@ msgstr "编辑用户" msgid "Rejudge" msgstr "重新评分" -#: templates/base.html:214 -#, python-format -msgid "Hello, %(username)s." -msgstr "你好,%(username)s。" +#: templates/base.html:222 +msgid "Stop impersonating" +msgstr "" -#: templates/base.html:229 +#: templates/base.html:227 msgid "Log out" msgstr "登出" -#: templates/base.html:238 +#: templates/base.html:236 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "登录" -#: templates/base.html:239 templates/registration/registration_form.html:175 +#: templates/base.html:237 templates/registration/registration_form.html:175 msgid "or" msgstr "或" -#: templates/base.html:240 +#: templates/base.html:238 msgid "Sign up" msgstr "注册" -#: templates/base.html:252 +#: templates/base.html:250 msgid "spectating" msgstr "旁观中" -#: templates/base.html:265 +#: templates/base.html:263 msgid "This site works best with JavaScript enabled." msgstr "本网站启用 JavaScript 效果最好。" +#: templates/base.html:290 +msgid "proudly powered by **DMOJ**" +msgstr "" + #: templates/blog/content.html:13 templates/comments/list.html:75 #: templates/comments/list.html:90 templates/contest/contest-tabs.html:23 #: templates/contest/tag-title.html:9 templates/flatpages/admin_link.html:3 @@ -3428,7 +3609,7 @@ msgid "Comments" msgstr "评论" #: templates/comments/list.html:18 templates/comments/list.html:27 -msgid "Please login to vote" +msgid "Please log in to vote" msgstr "登录后才可投票" #: templates/comments/list.html:47 @@ -3441,7 +3622,7 @@ msgstr "于 {time} 时评论" msgid "edit %(edits)s" msgstr "编辑 %(edits)s" -#: templates/comments/list.html:58 templates/comments/media-js.html:96 +#: templates/comments/list.html:58 templates/comments/media-js.html:69 msgid "edited" msgstr "已编辑" @@ -3462,46 +3643,43 @@ msgid "Hide" msgstr "隐藏" #: templates/comments/list.html:111 -#, python-format -msgid "\n" -" This comment is hidden due to too much negative feedback.\n" -" Click here to view it.\n" -" " -msgstr "\n" -" 由于过多的负面反馈,该评论被隐藏。\n" -" 点击 这里查看\n" -" " +msgid "This comment is hidden due to too much negative feedback." +msgstr "由于过多的负面反馈,该评论被隐藏。" -#: templates/comments/list.html:131 +#: templates/comments/list.html:112 +msgid "Show it anyway." +msgstr "" + +#: templates/comments/list.html:129 msgid "There are no comments at the moment." msgstr "目前没有评论。" -#: templates/comments/list.html:137 +#: templates/comments/list.html:135 msgid "New comment" msgstr "新评论" -#: templates/comments/list.html:151 +#: templates/comments/list.html:149 msgid "Invalid comment body." msgstr "无效的评论内容。" -#: templates/comments/list.html:159 +#: templates/comments/list.html:157 msgid "Post!" msgstr "发布" -#: templates/comments/list.html:167 +#: templates/comments/list.html:165 msgid "Comments are disabled on this page." msgstr "这页面被禁用评论" -#: templates/comments/media-js.html:38 +#: templates/comments/media-js.html:11 msgid "Replying to comment" msgstr "正在回复评论" -#: templates/comments/media-js.html:91 +#: templates/comments/media-js.html:64 #, python-brace-format msgid "edit {edits}" msgstr "编辑 {edits}" -#: templates/comments/media-js.html:94 +#: templates/comments/media-js.html:67 msgid "original" msgstr "源语言" @@ -3577,12 +3755,16 @@ msgstr "今天" msgid "Next" msgstr "下个月" -#: templates/contest/contest-list-tabs.html:21 +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "导出" + +#: templates/contest/contest-list-tabs.html:23 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "清单" -#: templates/contest/contest-list-tabs.html:22 +#: templates/contest/contest-list-tabs.html:24 msgid "Calendar" msgstr "日历" @@ -3590,8 +3772,7 @@ msgstr "日历" msgid "Info" msgstr "资料和信息" -#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:336 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "统计数据" @@ -3616,7 +3797,7 @@ msgstr "复制" msgid "Leave contest" msgstr "离开竞赛" -#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:307 msgid "Virtual join" msgstr "参加虚拟竞赛" @@ -3624,15 +3805,20 @@ msgstr "参加虚拟竞赛" msgid "Stop spectating" msgstr "停止旁观" -#: templates/contest/contest-tabs.html:65 +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "参加竞赛" + +#: templates/contest/contest-tabs.html:73 msgid "Spectate contest" msgstr "旁观竞赛" -#: templates/contest/contest-tabs.html:72 -msgid "Join contest" -msgstr "参加竞赛" +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:150 +msgid "You cannot join this contest." +msgstr "" -#: templates/contest/contest-tabs.html:81 +#: templates/contest/contest-tabs.html:90 msgid "Log in to participate" msgstr "登录即可进入" @@ -3644,144 +3830,135 @@ msgstr "虚拟参与中。" msgid "Contest is over." msgstr "竞赛已结束。" -#: templates/contest/contest.html:59 templates/contest/contest.html:63 -msgid "F j, Y, G:i T" -msgstr "Y年n月j日 G:i T" - -#: templates/contest/contest.html:59 -#, python-format -msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "%(start_time)s%(end_time)s中的%(time_limit)s小时窗口" - -#: templates/contest/contest.html:63 -#, python-format -msgid "%(length)s long starting on %(start_time)s" -msgstr "从 %(start_time)s 开始的 %(length)s 时间段" - -#: templates/contest/contest.html:74 +#: templates/contest/contest.html:75 #, python-format msgid "The author of this contest is %(link_authors)s." msgid_plural "The authors of this contest are %(link_authors)s." msgstr[0] "" -#: templates/contest/contest.html:85 +#: templates/contest/contest.html:86 #, python-format msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." msgstr[0] "" -#: templates/contest/contest.html:97 +#: templates/contest/contest.html:98 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:99 +#: templates/contest/contest.html:100 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." msgstr "" -#: templates/contest/contest.html:101 +#: templates/contest/contest.html:102 #, python-format msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." msgstr "" -#: templates/contest/contest.html:103 +#: templates/contest/contest.html:104 msgid "This contest will be **rated** for **all** participants." msgstr "" -#: templates/contest/contest.html:107 +#: templates/contest/contest.html:108 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." msgstr "" -#: templates/contest/contest.html:109 +#: templates/contest/contest.html:110 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." -msgstr "" +msgstr "这场比赛将给至少提交一次并且评分超过 **%(rating_floor)d**的参与者**评分**。" -#: templates/contest/contest.html:111 +#: templates/contest/contest.html:112 #, python-format msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." -msgstr "" +msgstr "这场比赛将给至少提交一次并且评分最多为 **%(rating_ceiling)d **的参与者**评分**。" -#: templates/contest/contest.html:113 +#: templates/contest/contest.html:114 msgid "This contest will be **rated** for participants who submit at least once." -msgstr "" +msgstr "这个比赛将对至少提交一次的参赛者**评分** 。" -#: templates/contest/contest.html:117 +#: templates/contest/contest.html:118 msgid "This contest will **not** be rated." -msgstr "" +msgstr "这场比赛将**不**评分。" -#: templates/contest/contest.html:122 +#: templates/contest/contest.html:123 #, python-format msgid "There is **%(count)s** problem in this contest." msgid_plural "There are **%(count)s** problems in this contest." msgstr[0] "" -#: templates/contest/contest.html:131 +#: templates/contest/contest.html:132 msgid "**Partial scoring is enabled** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:133 +#: templates/contest/contest.html:134 msgid "This contest **will not use partial scoring**." msgstr "" -#: templates/contest/contest.html:138 +#: templates/contest/contest.html:139 msgid "The pretest system **will be used** for some or all of these problems." msgstr "" -#: templates/contest/contest.html:140 +#: templates/contest/contest.html:141 msgid "The pretest system **will not be used** for this contest." msgstr "" -#: templates/contest/contest.html:145 +#: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." msgstr "" -#: templates/contest/contest.html:147 +#: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." msgstr "" -#: templates/contest/contest.html:153 +#: templates/contest/contest.html:154 #, python-format msgid "The contest format is **%(format)s**." msgstr "" -#: templates/contest/contest.html:162 +#: templates/contest/contest.html:163 msgid "The scoreboard will be **visible** for the duration of the contest." msgstr "" -#: templates/contest/contest.html:164 +#: templates/contest/contest.html:165 msgid "The scoreboard will be **hidden** until your window is over." msgstr "" -#: templates/contest/contest.html:166 +#: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." msgstr "" -#: templates/contest/contest.html:171 +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "" + +#: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." msgstr "" -#: templates/contest/contest.html:194 +#: templates/contest/contest.html:197 msgid "AC Rate" msgstr "AC率" -#: templates/contest/contest.html:195 templates/contest/list.html:152 -#: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:210 templates/problem/list.html:236 +#: templates/contest/contest.html:198 templates/contest/list.html:165 +#: templates/contest/list.html:207 templates/contest/list.html:284 +#: templates/problem/list.html:210 templates/problem/list.html:242 msgid "Users" msgstr "用户" -#: templates/contest/contest.html:197 +#: templates/contest/contest.html:200 msgid "Editorials" msgstr "题目讲解" -#: templates/contest/contest.html:223 +#: templates/contest/contest.html:226 templates/problem/list.html:236 msgid "Editorial" msgstr "编辑" #: templates/contest/list.html:31 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" msgstr "你确定你想要加入吗?" @@ -3793,44 +3970,44 @@ msgstr "计时器在你第一次参加比赛的时候就会启动,比赛开始 msgid "hidden" msgstr "隐藏" -#: templates/contest/list.html:78 +#: templates/contest/list.html:85 msgid "private" msgstr "私有" -#: templates/contest/list.html:83 +#: templates/contest/list.html:90 msgid "rated" msgstr "被评分" -#: templates/contest/list.html:131 -msgid "Spectate" -msgstr "旁观" - -#: templates/contest/list.html:137 +#: templates/contest/list.html:138 templates/contest/list.html:150 msgid "Join" msgstr "加入!" -#: templates/contest/list.html:147 +#: templates/contest/list.html:144 +msgid "Spectate" +msgstr "旁观" + +#: templates/contest/list.html:160 msgid "Active Contests" msgstr "正在进行的比赛" -#: templates/contest/list.html:151 templates/contest/list.html:193 -#: templates/contest/list.html:231 templates/contest/list.html:268 +#: templates/contest/list.html:164 templates/contest/list.html:206 +#: templates/contest/list.html:244 templates/contest/list.html:281 msgid "Contest" msgstr "竞赛" -#: templates/contest/list.html:189 +#: templates/contest/list.html:202 msgid "Ongoing Contests" msgstr "进行中的竞赛" -#: templates/contest/list.html:226 +#: templates/contest/list.html:239 msgid "Upcoming Contests" msgstr "未来的竞赛" -#: templates/contest/list.html:254 +#: templates/contest/list.html:267 msgid "There are no scheduled contests at this time." msgstr "现在没有预定的竞赛。" -#: templates/contest/list.html:260 +#: templates/contest/list.html:273 msgid "Past Contests" msgstr "过去的竞赛" @@ -3846,6 +4023,11 @@ msgstr "离开虚拟竞赛后将无法再次返回,必须重新开始虚拟竞 msgid "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "计时器在你第一次参加比赛的时候就会启动,比赛开始后将不会停止" +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "" + #: templates/contest/moss.html:28 msgid "Are you sure you want MOSS the contest?" msgstr "您确定您要MOSS这个竞赛?" @@ -3870,14 +4052,26 @@ msgstr "删除MOSS结果" msgid "This contest is private to specific users." msgstr "这个比赛是对特定用户私密。" -#: templates/contest/private.html:10 +#: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" msgstr "只有下列组织可能访问此竞赛:" -#: templates/contest/private.html:12 +#: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" msgstr "只有下列组织可能访问此竞赛:" +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "" + #: templates/contest/ranking-table.html:7 msgid "Organization" msgstr "组织" @@ -4003,46 +4197,58 @@ msgstr "您的更新请求成功已被成功接收。我们已经发送了激活 msgid "Update" msgstr "升级" -#: templates/organization/home.html:7 +#: templates/organization/home.html:28 msgid "Are you sure you want to leave this organization?" msgstr "您确定要推出此组织吗?" -#: templates/organization/home.html:9 +#: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." msgstr "您必须重新加入才能显示在组织排行榜上。" -#: templates/organization/home.html:11 +#: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." msgstr "您必须申请会员资格才能再次加入。" -#: templates/organization/home.html:24 +#: templates/organization/home.html:45 msgid "Leave organization" msgstr "离开组织" -#: templates/organization/home.html:29 +#: templates/organization/home.html:50 msgid "Join organization" msgstr "加入组织" -#: templates/organization/home.html:33 +#: templates/organization/home.html:54 msgid "Request membership" msgstr "申请加入" -#: templates/organization/home.html:39 +#: templates/organization/home.html:60 msgid "Edit organization" msgstr "编辑组织" -#: templates/organization/home.html:43 +#: templates/organization/home.html:65 msgid "View requests" msgstr "查看请求" -#: templates/organization/home.html:50 +#: templates/organization/home.html:71 msgid "Admin organization" msgstr "管理组织" -#: templates/organization/home.html:55 +#: templates/organization/home.html:76 msgid "View members" msgstr "查看成员" +#: templates/organization/home.html:88 +msgid "Class" +msgstr "" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "" + #: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "名称" @@ -4091,11 +4297,15 @@ msgstr "没有请求批准。" msgid "Delete?" msgstr "删除?" -#: templates/organization/requests/request.html:18 +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "" + +#: templates/organization/requests/request.html:27 msgid "Your reason for joining:" msgstr "你加入的理由:" -#: templates/organization/requests/request.html:20 +#: templates/organization/requests/request.html:29 msgid "Request" msgstr "请求" @@ -4171,7 +4381,7 @@ msgstr "输出文件" msgid "Pretest?" msgstr "预测试?" -#: templates/problem/data.html:438 templates/problem/submit.html:258 +#: templates/problem/data.html:438 templates/problem/submit.html:257 msgid "Submit!" msgstr "提交!" @@ -4183,11 +4393,15 @@ msgstr "添加新的用例" msgid "Save" msgstr "保存" -#: templates/problem/editorial.html:22 -msgid "Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.

Submitting an official solution before solving the problem yourself is a bannable offence." -msgstr "记住在没有思路时使用题解,不要从它复制粘贴代码。请尊重题目和题解的作者。

在解题之前提交题解的代码会导致封禁。" +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." +msgstr "记住**只**在没有思路时使用题解,**不要从它复制粘贴代码**。请尊重题目和题解的作者。" -#: templates/problem/editorial.html:27 templates/problem/problem.html:210 +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "在解题之前提交题解的代码会导致封禁。" + +#: templates/problem/editorial.html:30 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "作者:" @@ -4200,16 +4414,16 @@ msgstr "根据类型过滤" msgid "Hot problems" msgstr "热门问题" -#: templates/problem/list.html:205 templates/problem/list.html:222 -#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 +#: templates/problem/list.html:205 templates/problem/list.html:223 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "分类" -#: templates/problem/list.html:207 templates/problem/list.html:226 +#: templates/problem/list.html:207 templates/problem/list.html:227 msgid "Types" msgstr "类型" -#: templates/problem/list.html:233 +#: templates/problem/list.html:234 #, python-format msgid "AC %%" msgstr "AC%%" @@ -4408,28 +4622,32 @@ msgid "Hide solved problems" msgstr "隐藏已解决的题目" #: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "" + +#: templates/problem/search-form.html:32 msgid "Show problem types" msgstr "显示题目类型" -#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "所有" -#: templates/problem/search-form.html:46 +#: templates/problem/search-form.html:51 msgid "Problem types" msgstr "题目类型" -#: templates/problem/search-form.html:57 +#: templates/problem/search-form.html:62 msgid "Point range" msgstr "分数范围" -#: templates/problem/search-form.html:63 templates/submission/list.html:328 -#: templates/ticket/list.html:248 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:253 msgid "Go" msgstr "搜索" -#: templates/problem/search-form.html:64 +#: templates/problem/search-form.html:69 msgid "Random" msgstr "随机" @@ -4438,21 +4656,20 @@ msgid "Your source code must contain at most 65536 characters." msgstr "您的程序必须最多包含 65536 个字符。" #: templates/problem/submit.html:204 -#, python-format -msgid "Warning! Your default language, %(default_language)s, is unavailable for this problem and has been deselected." -msgstr "警告! 您的默认编程语言, %(default_language)s, 在此问题不可用,且已取消选择。" +msgid "Warning!" +msgstr "警告!​​​​​" -#: templates/problem/submit.html:215 +#: templates/problem/submit.html:214 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" -#: templates/problem/submit.html:220 +#: templates/problem/submit.html:219 msgid "You have 0 submissions left" msgstr "你還可以提交0次" -#: templates/problem/submit.html:254 +#: templates/problem/submit.html:253 msgid "No judge is available for this problem." msgstr "此题目没有可用的裁判服务器。" @@ -4487,7 +4704,7 @@ msgid "See you later!" msgstr "再见!" #: templates/registration/password_change_done.html:3 -msgid "Your password was sucessfully changed." +msgid "Your password was successfully changed." msgstr "您的密码已成功更改。" #: templates/registration/password_change_form.html:13 @@ -4673,6 +4890,15 @@ msgstr "" msgid "These codes will never be shown again after you enable two-factor authentication." msgstr "" +#: templates/registration/totp_enable.html:108 +msgid "Important" +msgstr "" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "" + #: templates/registration/two_factor_auth.html:33 #: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." @@ -4699,7 +4925,7 @@ msgstr "使用安全密钥" msgid "Use scratch code" msgstr "使用验证码" -#: templates/registration/two_factor_auth.html:97 +#: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "如果您丢失了您的身份验证设备且无法使用您的验证码,请联系我们 %(email)s。" @@ -4743,7 +4969,7 @@ msgstr "N/A" msgid "There are no judges available at this time." msgstr "本语言没有可用的裁判服务器。" -#: templates/status/language-list.html:34 templates/ticket/list.html:259 +#: templates/status/language-list.html:34 templates/ticket/list.html:264 msgid "ID" msgstr "ID" @@ -4882,8 +5108,8 @@ msgid "Resources:" msgstr "资源:" #: templates/submission/status-testcases.html:138 -msgid "Maximum runtime on single test case:" -msgstr "最慢一次测试的运行时间" +msgid "Maximum single-case runtime:" +msgstr "" #: templates/submission/status-testcases.html:143 msgid "Final pretest score:" @@ -4926,11 +5152,11 @@ msgstr "最佳" msgid "%(user)s's" msgstr "%(user)s 的" -#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:270 msgid "Reopened: " msgstr "重新打开状态: " -#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:271 msgid "Closed: " msgstr "已关闭: " @@ -4939,26 +5165,35 @@ msgid "Use desktop notification" msgstr "使用桌面通知" #: templates/ticket/list.html:227 +msgid "Hide closed tickets" +msgstr "" + +#: templates/ticket/list.html:232 msgid "Show my tickets only" msgstr "只显示我的工单" -#: templates/ticket/list.html:231 +#: templates/ticket/list.html:236 msgid "Filing user" msgstr "归档用户" -#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 +#: templates/ticket/list.html:245 templates/ticket/ticket.html:371 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "处理人" -#: templates/ticket/list.html:260 +#: templates/ticket/list.html:265 msgid "Title" msgstr "标题" -#: templates/ticket/list.html:262 +#: templates/ticket/list.html:267 msgid "Assignees" msgstr "被分配的人" +#: templates/ticket/message.html:10 +#, python-brace-format +msgid "messaged on {time}" +msgstr "" + #: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "感谢您提交工单!" @@ -4967,31 +5202,31 @@ msgstr "感谢您提交工单!" msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." msgstr "请注意, 此表单用于报告题目描述中的问题, 而不是寻求帮助。如果您需要询问解题方法, 请在评论中进行提问。" -#: templates/ticket/ticket.html:345 +#: templates/ticket/ticket.html:356 msgid "Post" msgstr "帖子" -#: templates/ticket/ticket.html:353 +#: templates/ticket/ticket.html:364 msgid "Associated object" msgstr "相关的项目" -#: templates/ticket/ticket.html:370 +#: templates/ticket/ticket.html:381 msgid "No one is assigned." msgstr "没有人被分配到这个工单。" -#: templates/ticket/ticket.html:376 +#: templates/ticket/ticket.html:387 msgid "Close ticket" msgstr "关闭工单" -#: templates/ticket/ticket.html:378 +#: templates/ticket/ticket.html:389 msgid "Reopen ticket" msgstr "重开工单" -#: templates/ticket/ticket.html:382 +#: templates/ticket/ticket.html:393 msgid "Assignee notes" msgstr "受让人说明" -#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 +#: templates/ticket/ticket.html:400 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "暂无内容!" @@ -5125,21 +5360,12 @@ msgstr "用户脚本" msgid "Update profile" msgstr "更新资料" -#: templates/user/pp-row.html:24 -#, python-format -msgid "\n" -" weighted %(weight)s%%\n" -" " -msgstr "\n" -" 比重 %(weight)s%%\n" -" " - -#: templates/user/pp-row.html:29 +#: templates/user/pp-row.html:26 #, python-format msgid "%(pp).1fpp" msgstr "%(pp).1fpp" -#: templates/user/pp-row.html:31 +#: templates/user/pp-row.html:28 #, python-format msgid "%(pp).0fpp" msgstr "%(pp).0fpp"