diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index e55af33069..50f320186b 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "الألمانية" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "الانجليزية" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "الإسبانية" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "الفرنسية" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "الكرواتية" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "الهنغارية" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "يابانية" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "الكورية" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "" @@ -123,46 +123,46 @@ msgstr "" msgid "Associated page" msgstr "" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, 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:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, 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:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, 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:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -268,9 +268,9 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "" @@ -278,8 +278,8 @@ msgstr "" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -287,40 +287,40 @@ msgstr "" msgid "Describe the changes you made (optional)" msgstr "" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "" -#: judge/admin/problem.py:191 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -331,11 +331,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -346,11 +346,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -361,7 +361,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" @@ -369,28 +369,28 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." @@ -401,7 +401,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" @@ -558,115 +558,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -746,7 +747,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -787,7 +788,7 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -812,410 +813,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." +msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1255,7 +1272,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1263,7 +1280,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1299,34 +1316,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1344,7 +1333,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1356,7 +1345,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1376,7 +1365,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1405,232 +1394,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1742,112 +1751,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1856,155 +1865,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2160,210 +2181,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2411,6 +2432,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2433,19 +2458,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2570,7 +2599,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2578,125 +2607,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2725,71 +2759,71 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2800,7 +2834,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2811,85 +2845,99 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2963,52 +3011,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -3016,7 +3064,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -3024,74 +3072,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3108,40 +3156,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3150,87 +3198,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3355,11 +3407,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3552,7 +3604,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3755,19 +3807,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -4042,7 +4094,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4217,7 +4269,7 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" @@ -4227,16 +4279,16 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" @@ -4246,15 +4298,15 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4299,7 +4351,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4350,7 +4402,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4470,12 +4522,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4491,57 +4543,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4622,15 +4710,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4850,121 +4938,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/ar/LC_MESSAGES/djangojs.po b/locale/ar/LC_MESSAGES/djangojs.po index 6925d45a7b..23b14b3b1a 100644 --- a/locale/ar/LC_MESSAGES/djangojs.po +++ b/locale/ar/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Arabic, Saudi Arabia\n" "Language: ar_SA\n" diff --git a/locale/ca/LC_MESSAGES/django.po b/locale/ca/LC_MESSAGES/django.po index 217ca6a981..efad070aae 100644 --- a/locale/ca/LC_MESSAGES/django.po +++ b/locale/ca/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Catalan\n" "Language: ca_ES\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Alemany" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Anglès" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Castellà" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Francès" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Croat" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Hongarès" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "Japonès" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Coreà" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "Portuguès (Brasil)" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Romanès" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Rus" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Serbi (llatí)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Turc" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Vietnamita" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Xinès simplificat" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "Xinès tradicional" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Inici" @@ -115,112 +115,112 @@ msgstr "Deixa d'amagar els comentaris" msgid "Associated page" msgstr "Pàgina associada" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Concursos inclosos" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Problema" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "Ajustaments" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Planificador" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Detalls" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "Format" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Puntuació" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "Accés" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Justícia" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "Concurs %d marcat com a visible amb èxit" msgstr[1] "Concursos %d marcats com a visibles amb èxit" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "Fer els concursos visibles" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "Concurs %d marcat com a ocult amb èxit" msgstr[1] "Concursos %d marcats com a ocults amb èxit" -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "Fer els concursos invisibles" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "Concurs %d bloquejat amb èxit" msgstr[1] "Concursos %d bloquejats amb èxit" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "Bloqueja els envíaments al concurs" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "Concurs %d desbloquejat amb èxit" msgstr[1] "Concursos %d desbloquejats amb èxit" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "Desbloqueja els envíaments al concurs" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "enviament %d s'ha planificat per a ser rejutjat amb èxit." msgstr[1] "enviaments %d s'han planificat per a ser rejutjats amb èxit." -#: judge/admin/contest.py:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "Participació %d recalculada" msgstr[1] "Participacions %d recalculades" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "Recalcular els resultats" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "nom d'usuari" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "Virtual" @@ -236,9 +236,9 @@ msgstr "Contingut" msgid "Summary" msgstr "Resum" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "usuari" @@ -246,8 +246,8 @@ msgstr "usuari" msgid "object" msgstr "objecte" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Veure-ho al lloc web" @@ -255,69 +255,69 @@ msgstr "Veure-ho al lloc web" msgid "Describe the changes you made (optional)" msgstr "Descriu els canvis que has fet (opcional)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Xarxes Socials" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Taxonomia" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Punts" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Límits" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Llenguatge" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Historial" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Autors/es" -#: judge/admin/problem.py:191 +#: 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] "La data de publicació del problema %d ha estat actualitzada correctament" msgstr[1] "La data de publicació dels problemes %d ha estat actualitzada correctament" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "Posa la data de publicació a ara" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "problema %d marcat com a públic amb èxit." msgstr[1] "problemes %d marcats com a públic amb èxit." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Marca els problemes com a públics" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "problema %d marcat com a privat amb èxit." msgstr[1] "problemes %d marcats com a privats amb èxit." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Marca els problemes com a privats" @@ -325,35 +325,35 @@ msgstr "Marca els problemes com a privats" msgid "timezone" msgstr "zona horària" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Usuari" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Correu electrònic" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Zona Horària" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "Data quan es va unir" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "s'ha recalculat la puntuació de l'usuari %d" msgstr[1] "s'ha recalculat la puntuació dels usuaris %d" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Recalcular els resultats" @@ -506,115 +506,116 @@ msgstr "IOI" msgid "IOI (pre-2016)" msgstr "IOI (abans del 2016)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "els tokens de la l'autenticació en dos passos han de ser de 6 dígits decimals" +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "token d'autenticació en dos passos invàlid." -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "Els codis Scratch han de ser de 16 caràcters en base32" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "El codi Scratch no és vàlid" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "Subscriure's als canvis en els concursos" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Activa les actualitzacions experimentals" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "No pots formar part de més de {count} organitzacions públiques" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "Baixar-se els comentaris?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "Descarregar enviaments?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "Filtrar per el glob del codi de problema" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "Deixar-ho buit per a incluir tots els enviaments" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "Filtra per resultats:" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "Siusplau, seleccioneu com a mínim una cosa a descarregar." -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "Qualsevol jutge" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Nom d'usuari" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Contrasenya" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "Longitud del codi invàlida" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "Resposta WebAuthn invàlida" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "No hi ha hagut resposta WebAuthn" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "Credencial WebAuthn invàlida" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "token d'autenticació en dos passos invàlid." -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "S'ha d'especificar un totp_token o una webauthn_response." -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "El codi del problema ha de ser ^[a-z0-9]+$" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "Ja existeix un problema amb aquest codi." -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "la id del concurs ha de ser ^[a-z0-9]+$" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "Ja existeix un concurs amb aquesta clau." @@ -694,7 +695,7 @@ msgid "comments" msgstr "comentaris" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "Editorial de %s" @@ -735,7 +736,7 @@ msgstr "Descripció d'etiqueta" msgid "contest tag" msgstr "Etiqueta de concurs" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "Etiquetes de concurs" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "Nom del concurs" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Aquestes persones podran editar el concurs" +msgid "These users will be able to edit the contest." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "Descripció" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "Problemes" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "Hora d'inici" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "Hora de finalització" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "Límit de temps" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "visible públicament" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "Ha de posar-se fins i tot per a concursos privats per a organitzacions, ja que determina si el concurs és visible als membres de les organitzacions específiques" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "concurs qualificat" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Si aquest concurs es pot qualificar" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "veure la taula de puntuacions del concurs" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "Aquests usuaris podran veure la taula de puntuacions" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "sense comentaris" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "Fes servir un sistema de clarificacions en comptes de comentaris" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "Qualificació mínima per al concurs" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "Qualificació màxima per al concurs" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "qualificar tots" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "Qualificar tots els usuaris que s'han unit" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "Exclou de les qualificacions" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "privat per a usuaris específics" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "concursants privats" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "Si està en privat, només aquests usuaris podran veure el concurs" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "amagar etiquets dels problemes" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "Si les etiquetes dels problemes han d'estar amagades per defecte" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "executa només els casos de prova preliminars" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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 els jutges han de jutjar només els casos de prova preliminars o tots els casos de prova. Generalment es posa en un concurs online, i després es treu per a jutjar tots els enviaments a l'acabament del concurs" -#: judge/models/contest.py:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "privat per a organitzacions" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "Organitzacions" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "Si està en privat, només aquestes organitzacions podran veure el concurs" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "imatge OpenGraph" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "imatge que sobrescriu el Logo" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "Aquesta imatge reemplaçarà el logo per defecte a tots els usuaris en el concurs" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "La quantitat de participans en viu" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "Resum del concurs" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "Text pla, que surt en l'etiqueta de meta descripció, per exemple per Xarxes Socials" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "Codi d'accés" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "Un codi opcional que se li demana als concursants abans de que se'ls permeti participar. Deixa-ho buit per a desactivar-ho." -#: judge/models/contest.py:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "Persones non grates" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "Baneja als usuaris per a unir-se al concurs" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "Format del concurs" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "el Modul de format del concurs que es farà servir" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "Configuració del format del concurs" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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 objecte JSON que es fa servir com la configuració per al mòdul de format del concurs seleccionat. Deixa-ho buit per fer servir None. El format exacte depèn del format del concurs seleccionat." -#: judge/models/contest.py:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "bloqueig del concurs" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." -msgstr "Evita que els enviaments en aquest concurs siguin rejutjats" +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." +msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "Veure concursos privats" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "Editar els concursos propis" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "Editar tots els concursos" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "Clonar concurs" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "Passar el MOSS al concurs" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "Puntuar concursos" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "Codi d'accès al concurs" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "Crear concursos privats" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "Canviar la visibilitat d'un concurs" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "Editar el script d'etiquetat del problema d'un concurs" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "Canviar el estatus de bloqueig del concurs" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "concurs" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "concursos" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "concurs associat" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "puntuació" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "temps acumulat" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "està desqualificat" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "Si aquest participant ha estat desqualificat." -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "camp de desempat" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "id de participació virtual" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 significa no virtual. En cas contrari la n-èssima participació virtual" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "dades específiques del format del concurs" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "%s espectant en %s" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "%s en %s, v%d" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s en %s" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "participació al concurs" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "participacions al concurs" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "problema" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "punts" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "parcial" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "s'han passat els casos de prova preliminars" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "ordre" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "Sobreescriptura de la longitud de prefix de sortida" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Nombre màxim d'enviaments per a aquest problema, o deixa-ho en blanc per a no posar límit." -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "Per què incloure un problema al que no pots fer enviaments?" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "problema del concurs" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "problemes del concurs" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "enviament" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "participació" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "Si aquest enviament ha estat provat només en casos preliminars" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "enviament de concurs" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "enviaments de concurs" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "classificació" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "puntuació" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "volatilitat" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "última puntuació" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "puntuació del concurs" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "puntuacions del concurs" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "resultat del MOSS del concurs" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "resultats del MOSS del concurs" @@ -1203,7 +1220,7 @@ msgstr "Ítem pare" msgid "post title" msgstr "Títol de l'entrada" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "Autors/es" @@ -1211,7 +1228,7 @@ msgstr "Autors/es" msgid "slug" msgstr "Identificador únic" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "visibilitat pública" @@ -1247,34 +1264,6 @@ msgstr "Entrada del Blog" msgid "blog posts" msgstr "Entrades del Blog" -#: judge/models/message.py:11 -msgid "message title" -msgstr "Títol del missatge" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "Cos del missatge" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "Remitent" - -#: judge/models/message.py:14 -msgid "target" -msgstr "Objectiu" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "Data i hora del missatge" - -#: judge/models/message.py:16 -msgid "read" -msgstr "Llegeix" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "missatges en el fil" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "nom de la categoria del problema" msgid "problem type" msgstr "tipus del problema" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "tipus del problema" @@ -1304,7 +1293,7 @@ msgstr "ID del grup del problema" msgid "problem group name" msgstr "nom del grup del problema" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "grup del problema" @@ -1324,7 +1313,7 @@ msgstr "Enllaç" msgid "full name" msgstr "Nom complet" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "Nom curt" @@ -1353,232 +1342,252 @@ msgstr "Llicècia" msgid "licenses" msgstr "Llicències" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "Codi del problema" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "Un codi únic i curt per al problema, usat en la url després de /problem/" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "Nom del problema" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "El nom complet del problema, tal i com es mostra en la llista de problemes" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "Cos del problema" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "Creadors/es" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Aquests usuaris seran capaços d'editar el problema i seran mostrats com els seus autors" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "Conservadors/es" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Aquests usuaris seran capaços d'editar el problema però no seran mostrats com els seus autors" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "Testers" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "Aquests usuaris podran veure el problema privat, però no editar-lo" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "El tipus del problema, tal i com es mostra en la llista de problemes" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "El grup del problema, tal i com es mostra en la llista de problemes com a Categoria" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "El temps límit per aquest problema, en segons. Les fraccions (1.5) estan permeses." -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "Límit de memòria" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "El límit de memòria per aquest problema, en kilobytes (p.e. 64mb = 65536 kilobytes)." -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Punts otorgats per completar el problema. Els punts es mostren amb un sufix 'p' si son parcials (és a dir, cada cas completat otorga punts tot i que no es completin tots els casos)" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "permetre punts parcials" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "Llenguatges permesos" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "Llista de llenguatges d'enviament permesos" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "operat manualment" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "Si els jutges poden modificar les dades manualment o no" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "Data de publicació" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "No té l'habilitat màgica d'autopublicar per a preservar la compatibilitat amb versions anteriors" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "Baneja als usuaris seleccionats de fer enviaments per aquest problema" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "La llicència sota la qual aquest problema ha estat publicat" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "Resum del problema" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "Nombre d'usuaris" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "El nombre d'usuaris que ha resolt aquest problema" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "Percetatge d'usuaris que han resolt el problema" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "Permet fer servir la llibreria sencera de Markdown" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "Si està en privat, només aquestes organitzacions podran veure el problema" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "Veure problemes ocults" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "Editar problemes propis" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "Editar tots els problemes" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "Editar tots els problemes públics" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "Editar problemes amb accés total a Markup" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "Clonar problema" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "Cambiar camp is_public " -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "Cambiar camp is_manually_managed" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "Veure els problemes privats per a organitzacions" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "Llenguatge" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "Nom traduït" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "Descripció traduïda" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "Traducció del problema" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "Traduccions del problema" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "Problema aclarit" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "Cos de l'aclariment" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "Marca de temps de l'aclariment" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "Límit de Recursos Específics per Llenguatge" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "Límits de Recursos Específics per Llenguatge" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "Problema associat" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "Data de publicació" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "Contingut de l'editorial" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "Veure solucions ocultes" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "solució" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "solucions" @@ -1690,112 +1699,112 @@ msgstr "nombre de punts" msgid "case is pretest?" msgstr "és un cas preliminar?" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "títol de l'organització" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "identificador únic de l'organització" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "Nom de l'organització tal i com es mostra en l'URL" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "Mostrat al costat del nom de l'usuari durant els concursos" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "Descripció de l'organització" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "Administradors" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "Aquells qui poden editar aquesta organització" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "Data de creació" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "És una organització oberta?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "Permet unir-se a l'organització" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "Mida màxima" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "Màxima quantitat d'usuaris en aquesta organiztació, només aplicable per a organitzacions privades" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "Codi d'accès de l'estudiant" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "Aquesta imatge reemplaçarà el logo per defecte a tots els usuaris mirant aquesta organització" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "Administrar organitzacions" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "Edita totes les organitzacions" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "organització" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "usuari associat" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "auto-descripció" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "Localització" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "Llenguatge preferit" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "Data últim accés" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "Última IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "mostrar rang" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "Usuari normal" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "Creador de Problemes" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "Creador de Problemes" msgid "Admin" msgstr "Administrador" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "silenciar el comentari" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "Alguns usuaris son més macos callats." -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "usuari desllistat" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "Aquest usuari no serà classificat" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "script d'usuari" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "JavaScript definit per l'usuari per a la personalització del lloc." -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "concurs actual" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "motor matemàtic" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "el motor fet servir per a representar les matemàtiques" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "TOTP 2FA activat" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "fes click per a activar l'Autenticació de dos passos basada en TOTP" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn 2FA activat" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "fes click per a activar l'Autenticació de dos passos basada en WebAuthn" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "clau TOTP" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "clau de 32 caràcters en base32 per a TOTP" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "la clau TOTP ha d'estar buida o ser base32" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "codis Scratch" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "Array JSON de codis de 16 caràcters en base32" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "Els codis Scratch han de estar buits o ser un Array JSON de codis de 16 caràcters en base32" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "Token de l'API" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "token d'accès a l'API de 64 caràcters hexadecimals" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "el token de l'API ha d'estar buit o ser hexadecimal" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "notes internes" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "Notes dels administradors sobre aquest usuari." -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "última data de descàrrega de dades" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "Mostra coses de desenvolupament en progrès" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "Editar ajustos de TOTP" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "perfil d'usuari" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "perfils d'usuaris" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "nom de dispositiu" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "ID de la credencial" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "clau pública" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "comptador de firmes" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "data de solicitud" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "estat" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "motiu" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "petició d'unir-se a organització" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "peticions d'unir-se a organització" @@ -2108,210 +2129,210 @@ msgstr "jutges" msgid "judge" msgstr "jutge" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Acceptat" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "Resposta errònia" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "Temps Límit excedit" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "Límit de memòria excedit" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "Límit de dades de sortida excedit" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "Retorn invàlid (El programa ha tingut un retorn no-estàndard. Això sol implicar una excepció en llenguatges interpretats)" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "Errors en temps d'execució" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Error de compilació" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "Error intern" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "Curt Circuit" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "Avortat" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "En cua" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "Processant" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "Avaluant" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "Completat" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "Error Intern (error en el servidor del jutge)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "Temps d'enviament" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "Temps d'execució" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "Ús de memòria" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "Punts atorgats" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "llenguatge de l'enviament" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "estat" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "resultat" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "errors de compilació" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "casos en lot (batch)" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "punts del cas de proves" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "punts totals del cas de proves" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "jutjat en:" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "temps per a jutjar l'enviament" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" -msgstr "ha estat rejutjat per un administrador" - #: judge/models/submission.py:83 +msgid "last rejudge date by admin" +msgstr "" + +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "només s'han passat casos de proves preliminars" -#: judge/models/submission.py:86 -msgid "lock submission" -msgstr "bloquejar enviament" +#: judge/models/submission.py:87 +msgid "submission lock" +msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "Avortar qualsevol enviament" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "Rejutjar l'enviament" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "Rejutjar molts enviaments" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "Enviar sense límit" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "Veure tots els enviaments" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "Reenviar l'enviament d'un altre" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "Canviar l'estat de bloqueig d'un enviament" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "enviaments" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "enviament associat" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "Codi font" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "Id del cas de proves" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "flag d'estat" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "punts possibles" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "nombre de lot (batch)" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "resultat del jutge" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "resultat extés del jutge" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "sortida del programa" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "cas de prova de l'enviament" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "casos de prova de l'enviament" @@ -2359,6 +2380,10 @@ msgstr "ticket" msgid "poster" msgstr "publicador" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "Cos del missatge" + #: judge/models/ticket.py:31 msgid "message time" msgstr "data del missatge" @@ -2381,19 +2406,23 @@ msgstr "Recalculant puntuacions del concurs" msgid "Running MOSS" msgstr "Executant sistema anticòpia MOSS" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "Modificant enviaments" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "Recalculant punts d'usuari" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "Preparant les dades del teu enviament" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "Preparant les dades del teu comentari" @@ -2506,7 +2535,7 @@ msgstr "Has de resoldre com a mínim un problema abans de poder votar" msgid "You already voted." msgstr "Ja has votat" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "Editat des de'l lloc web" @@ -2514,125 +2543,130 @@ msgstr "Editat des de'l lloc web" msgid "Editing comment" msgstr "Editant comentari" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "No es troba aquest concurs" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "No s'ha pogut trobar un concurs amb la clau \"%s\"." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "Concursos" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "No es troba aquest concurs" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "S'ha denegat l'accés al concurs %s" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "Clonar concurs" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "El concurs no està en curs" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" no està en curs actualment" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "Ja està en el concurs" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "Ja estàs en el concurs \"%s\"." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "BANEJAT" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "Has estat declarat persona non grata per aquest concurs. Estas vetat permanentment." -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "Entra el codi d'accés per a \"%s\"" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "No estas en el concurs \"%s\"." -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "ContestCalendar necessita un any i mes enters" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "Concursos en %(month)s" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "Estadístiques de %s " -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "Classificacions de %s" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "La teva participació en %s" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "participació de %s en %s" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "En directe" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Participació" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "Resultats del MOSS per a %s" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "Executant sistema anticòpia MOSS per a %s..." -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "etiqueta de Concurs: %s" @@ -2661,163 +2695,177 @@ msgstr "pàgina corrupta %s" msgid "Runtimes" msgstr "Execucions" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "No s'ha trobat aquesta organització" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "No s'ha pogut trobar una organització amb la clau \"%s\"." -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "No s'ha trobat aquesta organització" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organitzacions" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "Membres de %s" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "Unint-se a l'organització" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "Ja estàs en l'organització" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "Aquesta organització no està oberta." -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "Abandonant l'organització" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "No estas en \"%s\"." -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "Sol·licitud d'unir-se a %s" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "Detall de la sol·licitud" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "Administrants sol·licituds per a %s" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "La teva organització només por tenir %d membres més. No pots aprovar %d usuaris." -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d usuari aprovat" msgstr[1] "%d usuaris aprovats" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d usuari denegat," msgstr[1] "%d usuaris denegats." -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "Editant %s" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "No es pot editar l'organització" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "No tens permisos per editar aquesta organització" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "No tens permisos per fer fora a gent d'aquesta organització" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "No pots fer fora a aquest usuari" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "L'usuari que estas intentant expulsar no existeix!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "L'usuari que estas intentant expulsar no està en l'organització: %s." -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "No existeix aquest problema" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "No s'ha pogut trobar un problema amb la clau \"%s\"." -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "Editorial per a {0}" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "Editorial per a {0}" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Problemes" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "Enviar a %s" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "Banejat de fer enviaments" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "Has estat declarat persona non grata per aquest problema. Estas vetat permanentment de fer enviaments." -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "Masses enviaments" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "Has superat el límit d'enviaments per a aquest problema" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "Clonar problema" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "els arguments del verificador han de ser un objecte JSON" @@ -2887,52 +2935,52 @@ msgstr "Millor solucions per a %s" msgid "Best solutions for {0}" msgstr "Millor solucions per a {0}" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Millor solucions per a %(problem)s en %(contest)s" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "Millor solucions per al problema %(number)s en %(contest)s" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "Millor solucions per a {0} en {2}" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "Millor solucions per al problema {0} en {1}" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "El nom d'usuàri només pot contenir lletres, números i guions baixos" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Llenguatge preferit" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "Subscriu-te al nostre butlletí?" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "El correu electrònic \"%s\" ja existeix. Només es permet un registre per correu" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "El teu proveïdor de correu electrònic no està permés degut a un historial d'abús. Siusplau fes servir un proveïdor fiable." -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Registre" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "Error d'autenticació" @@ -2940,7 +2988,7 @@ msgstr "Error d'autenticació" msgid "Language statistics" msgstr "Estadístiques de Llenguatge" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Estat" @@ -2948,74 +2996,74 @@ msgstr "Estat" msgid "Version matrix" msgstr "Matriu de versions" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Enviament de %(problem)s per %(user)s" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Tots els enviaments" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "Tots els meus enviaments" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "Tots els enviaments per %s" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "Tots els enviaments per a %s" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "Ha de passar un problema" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "Els meus enviaments per a %(problem)s" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Els enviaments de %(user)s per a %(problem)s" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "Ha de passar un concurs" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "Els meus enviaments per a %(contest)s" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "Els enviaments de %(user)s per a %(contest)s" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "Els meus enviaments en {0}" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "Els enviaments de {0} en {2}" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "Els enviaments de {0} per {2} en {4}" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "Els enviaments de {0} per al problema {2} en {3}" @@ -3032,40 +3080,40 @@ msgstr "Descripció del problema" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "Nou ticket per a %s" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "%(title)s - Ticket %(id)d" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "Tickets - Pàgina %(number)d de %(total)d" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "Nou Ticket: %s" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "#%(id)d, assignat a: %(users)s" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr ", " -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "Ningú" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "Nou missatge de Ticket per a: %s" @@ -3074,87 +3122,91 @@ msgstr "Nou missatge de Ticket per a: %s" msgid "Enable Two-factor Authentication" msgstr "Activar autenticació en dos passos" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "Deshabilitar l'autenticació en dos passos" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "Resposta WebAuthn invàlida" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "Nom invàlid" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "Els usuaris amb permisos elevats no poden desactivar l'autenticació en dos passos" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "Activar autenticació en dos passos" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "No hi ha tal usuari" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "No hi ha cap usuari amb la id \"%s\"." -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "El meu compte" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "Usuari %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Iniciar sessió" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "M j, Y, G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "Preparant les teves dates..." -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "Descarrega les teves dades" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "Actualitzat al lloc web" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Edita el perfil" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "token API de l'usuari generat" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "token API de l'usuari esborrat" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "codis Scratch de l'usuari generat" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Taula de classificació" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3283,11 +3335,11 @@ msgstr "Notícies" msgid "posted on {time}" msgstr "publicat a les {time}" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "Aclariments" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "No s'han fet aclariments de moment." @@ -3483,7 +3535,7 @@ msgid "Info" msgstr "Informació" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "Estadístiques" @@ -3686,19 +3738,19 @@ msgstr "Eliminar la Descalificació" msgid "Disqualify" msgstr "Descalificar" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "Estàs segur que vols descalificar aquesta participació?" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "Estàs segur que vols eliminar la descalificació d'aquesta participació?" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "Veure la participació de l'usuari" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "Mostrar organitzacions" @@ -3973,7 +4025,7 @@ msgstr "" 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 "Recorda: fes servir aquesta editorial només si estàs encallat, i no facis un còpia-enganxa del codi. Siusplau, sigues respectuós amb l'autor/a del problema i l'editorialista.

Enviar una solució oficial abans de resoldre el problema per un mateix és motiu de Baneig." -#: templates/problem/editorial.html:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Autor/a:" @@ -4140,36 +4192,36 @@ msgstr "Temps Límit:" msgid "Memory limit:" msgstr "Límit de memòria:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "tipus del problema" msgstr[1] "tipus del problema" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "Llenguatges permesos" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "No hi ha cap jutge per a %(lang)s" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "Jutge:" msgstr[1] "Jutges:" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "cap disponible" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "Demanar aclariment" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "Notifica un problema" @@ -4214,7 +4266,7 @@ msgstr "Tipus de problemes" msgid "Point range" msgstr "Rang de punts" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "Vés" @@ -4261,7 +4313,7 @@ msgid "Invalid username or password." msgstr "Nom d'usurari o contrasenya incorrecte." #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "Iniciar sessió!" @@ -4381,12 +4433,12 @@ msgid "Default language" msgstr "Llenguatge per defecte" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "Organitzacions afiliades" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "Avisa'm sobre concursos vinents" @@ -4402,57 +4454,93 @@ msgstr "Termes i condicions" msgid "Register!" msgstr "Registra't!" -#: templates/registration/totp_disable.html:38 +#: templates/registration/totp_disable.html:31 msgid "To protect your account, you must first authenticate before you can disable Two Factor Authentication." msgstr "Per protegir la teva compta, t'has d'autenticar abans de poder desactivar l'Autenticació en dos passos" -#: templates/registration/totp_disable.html:45 +#: 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 "Entra el codi de 6 dígits generat per la teva app o un dels teus codis scratch de 16 dígits" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "Deshabilitar l'autenticació en dos passos" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "Escanegeu aquest codi QR amb l'aplicació autenticadora" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "Codi QR" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "O entra aquest codi a ma:" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "Entra el codi de 6 dígits generat per la teva app:" -#: templates/registration/totp_enable.html:91 +#: templates/registration/totp_enable.html:90 +msgid "Refresh Two Factor Authentication" +msgstr "" + +#: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" msgstr "Activar autenticació en dos passos" +#: templates/registration/totp_enable.html:98 +msgid "Below is a list of one-time use scratch codes." +msgstr "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "WebAuthn no és suportat pel teu navegador." #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "No s'ha pogut connectar amb el servidor." -#: templates/registration/two_factor_auth.html:77 +#: 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 "Entra el codi de 6 dígits generat per la teva app o un dels teus codis scratch de 16 dígits:" -#: templates/registration/two_factor_auth.html:83 +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" +msgstr "" + +#: templates/registration/two_factor_auth.html:89 msgid "Use security key" msgstr "Fes servir la clau de seguretat" -#: templates/registration/two_factor_auth.html:89 +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "Si has perdut el teu dispositiu d'autenticació i no pots fer servir els teus codis scratch, contacta'ns a %(email)s" @@ -4533,15 +4621,15 @@ msgstr "Filtra per estat..." msgid "Filter by language..." msgstr "Filtra per llenguatge..." -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Filtra enviaments" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Total:" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Has estat desconnectat. Actualitza la pàgina per mostrar les últimes actualitzacions." @@ -4757,121 +4845,125 @@ msgstr "Classificació" msgid "Search by handle..." msgstr "Cerca per l'adreça..." -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "Esteu segur que voleu generar o regenerar el token API?" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "Això invalidarà qualsevol token API anterior." -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "També permet accés a la compta sense l'Autenticació de dos passos." -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "No podràs veure el teu token API després de que deixis aquesta pàgina!" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "Generant..." -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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 "Regenera" -#: templates/user/edit-profile.html:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "Elimina" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "Estàs segur que vols suprimir el teu token API?" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: templates/user/edit-profile.html:148 templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:401 msgid "Generate" msgstr "Generar" -#: templates/user/edit-profile.html:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "Segur que vols suprimir aquesta clau de seguretat?" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "Auto-descripció" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "Tria la ciutat més propera" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "Tema de l'editor" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "Motor matemàtic" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "Canviar avatar" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "Canvia la teva contrasenya" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "S'ha activat l'autenticació de dos passos" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" -msgstr "S'ha desactivat l'autenticació de dos passos" - -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 msgid "Disable" msgstr "Inhabilita" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:367 +msgid "Refresh" +msgstr "" + +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "Codis Scratch:" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "Ocult" -#: templates/user/edit-profile.html:381 +#: templates/user/edit-profile.html:384 +msgid "Two-factor Authentication is disabled" +msgstr "S'ha desactivat l'autenticació de dos passos" + +#: templates/user/edit-profile.html:385 msgid "Enable" msgstr "Habilita" -#: templates/user/edit-profile.html:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "Token de l'API" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "Claus de seguretat" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "Eliminar" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "Entreu un nom per a aquesta clau" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "Afegir" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "Script d'usuari" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "Actualitzar perfil" diff --git a/locale/ca/LC_MESSAGES/djangojs.po b/locale/ca/LC_MESSAGES/djangojs.po index fc9b1f2c52..8b482486c6 100644 --- a/locale/ca/LC_MESSAGES/djangojs.po +++ b/locale/ca/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Catalan\n" "Language: ca_ES\n" diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index c6235c7e02..657420acce 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Deutsch" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Englisch" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Französisch" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Rumänisch" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Russisch" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Chinesisch (vereinfacht)" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "" @@ -115,112 +115,112 @@ msgstr "" msgid "Associated page" msgstr "" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -236,9 +236,9 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "" @@ -246,8 +246,8 @@ msgstr "" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -255,69 +255,69 @@ msgstr "" msgid "Describe the changes you made (optional)" msgstr "" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Systematik" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Grenzen" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Programmiersprache" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Autoren" -#: judge/admin/problem.py:191 +#: 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] "" msgstr[1] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" @@ -325,35 +325,35 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" @@ -506,115 +506,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -694,7 +695,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -735,7 +736,7 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." +msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1203,7 +1220,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1211,7 +1228,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1247,34 +1264,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1304,7 +1293,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1324,7 +1313,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1353,232 +1342,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1690,112 +1699,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2108,210 +2129,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2359,6 +2380,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2381,19 +2406,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2506,7 +2535,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2514,125 +2543,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2661,163 +2695,177 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2887,52 +2935,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2940,7 +2988,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -2948,74 +2996,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3032,40 +3080,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3074,87 +3122,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3279,11 +3331,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3476,7 +3528,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3679,19 +3731,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3966,7 +4018,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4133,36 +4185,36 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4207,7 +4259,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4254,7 +4306,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4374,12 +4426,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4395,57 +4447,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4526,15 +4614,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4750,121 +4838,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/de/LC_MESSAGES/djangojs.po b/locale/de/LC_MESSAGES/djangojs.po index 9b32690e02..a6d2980402 100644 --- a/locale/de/LC_MESSAGES/djangojs.po +++ b/locale/de/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index ff237480c3..86d709fc3c 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: 2018-08-21 17:54-0400\n" +"POT-Creation-Date: 2021-07-23 00:28+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,2543 +18,3352 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\dmoj\settings.py:247 +#: dmoj/settings.py:365 +msgid "Catalan" +msgstr "" + +#: dmoj/settings.py:366 msgid "German" msgstr "" -#: .\dmoj\settings.py:248 +#: dmoj/settings.py:367 msgid "English" msgstr "" -#: .\dmoj\settings.py:249 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "" -#: .\dmoj\settings.py:250 +#: dmoj/settings.py:369 msgid "French" msgstr "" -#: .\dmoj\settings.py:251 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "" -#: .\dmoj\settings.py:252 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: .\dmoj\settings.py:253 +#: dmoj/settings.py:372 +msgid "Japanese" +msgstr "" + +#: dmoj/settings.py:373 msgid "Korean" msgstr "" -#: .\dmoj\settings.py:254 +#: dmoj/settings.py:374 +msgid "Brazilian Portuguese" +msgstr "" + +#: dmoj/settings.py:375 msgid "Romanian" msgstr "" -#: .\dmoj\settings.py:255 +#: dmoj/settings.py:376 msgid "Russian" msgstr "" -#: .\dmoj\settings.py:256 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: .\dmoj\settings.py:257 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: .\dmoj\settings.py:258 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: .\dmoj\settings.py:259 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "" -#: .\dmoj\urls.py:51 .\templates\base.html:234 -msgid "Login" +#: dmoj/settings.py:381 +msgid "Traditional Chinese" msgstr "" -#: .\dmoj\urls.py:92 .\templates\base.html:185 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "" -#: .\judge\admin\comments.py:40 +#: judge/admin/comments.py:40 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\comments.py:43 +#: judge/admin/comments.py:43 msgid "Hide comments" msgstr "" -#: .\judge\admin\comments.py:47 +#: judge/admin/comments.py:47 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\comments.py:50 +#: judge/admin/comments.py:50 msgid "Unhide comments" msgstr "" -#: .\judge\admin\comments.py:58 +#: judge/admin/comments.py:58 msgid "Associated page" msgstr "" -#: .\judge\admin\contest.py:27 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "" -#: .\judge\admin\contest.py:63 .\templates\contest\contest.html:83 -#: .\templates\problem\list.html:206 .\templates\problem\list.html:221 -#: .\templates\user\user-problems.html:61 -#: .\templates\user\user-problems.html:103 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 +#: templates/contest/moss.html:43 templates/problem/list.html:204 +#: templates/problem/list.html:219 templates/user/user-problems.html:58 +#: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: .\judge\admin\contest.py:91 +#: judge/admin/contest.py:117 +msgid "Settings" +msgstr "" + +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "" -#: .\judge\admin\contest.py:92 +#: judge/admin/contest.py:121 msgid "Details" msgstr "" -#: .\judge\admin\contest.py:93 .\templates\contest\ranking-table.html:5 +#: judge/admin/contest.py:122 +msgid "Format" +msgstr "" + +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: .\judge\admin\contest.py:94 .\templates\contest\ranking-table.html:7 -msgid "Organization" +#: judge/admin/contest.py:124 +msgid "Access" msgstr "" -#: .\judge\admin\contest.py:130 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 +msgid "Justice" +msgstr "" + +#: judge/admin/contest.py:215 #, python-format -msgid "%d contest successfully marked as public." -msgid_plural "%d contests successfully marked as public." +msgid "%d contest successfully marked as visible." +msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\contest.py:133 -msgid "Mark contests as public" +#: judge/admin/contest.py:218 +msgid "Mark contests as visible" msgstr "" -#: .\judge\admin\contest.py:137 +#: judge/admin/contest.py:224 #, python-format -msgid "%d contest successfully marked as private." -msgid_plural "%d contests successfully marked as private." +msgid "%d contest successfully marked as hidden." +msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\contest.py:140 -msgid "Mark contests as private" +#: judge/admin/contest.py:227 +msgid "Mark contests as hidden" msgstr "" -#: .\judge\admin\contest.py:211 +#: judge/admin/contest.py:233 #, python-format -msgid "%d participation have scores recalculated." -msgid_plural "%d participations have scores recalculated." +msgid "%d contest successfully locked." +msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\contest.py:214 .\judge\admin\profile.py:90 -msgid "Recalculate scores" +#: judge/admin/contest.py:236 +msgid "Lock contest submissions" msgstr "" -#: .\judge\admin\contest.py:221 +#: judge/admin/contest.py:242 #, python-format -msgid "%d participation have times recalculated." -msgid_plural "%d participations have times recalculated." +msgid "%d contest successfully unlocked." +msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\contest.py:224 -msgid "Recalculate cumulative time" +#: judge/admin/contest.py:245 +msgid "Unlock contest submissions" msgstr "" -#: .\judge\admin\contest.py:228 .\judge\admin\organization.py:63 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 +#, 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 +#, python-format +msgid "%d participation recalculated." +msgid_plural "%d participations recalculated." +msgstr[0] "" +msgstr[1] "" + +#: judge/admin/contest.py:344 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: .\judge\admin\contest.py:233 .\templates\base.html:253 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" -#: .\judge\admin\interface.py:27 .\judge\models\interface.py:46 +#: judge/admin/interface.py:29 judge/models/interface.py:46 msgid "link path" msgstr "" -#: .\judge\admin\interface.py:61 +#: judge/admin/interface.py:72 msgid "Content" msgstr "" -#: .\judge\admin\interface.py:62 +#: judge/admin/interface.py:73 msgid "Summary" msgstr "" -#: .\judge\admin\organization.py:32 .\judge\admin\problem.py:168 -#: .\judge\admin\profile.py:59 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 +msgid "user" +msgstr "" + +#: judge/admin/interface.py:154 +msgid "object" +msgstr "" + +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" -#: .\judge\admin\problem.py:28 +#: judge/admin/problem.py:29 msgid "Describe the changes you made (optional)" msgstr "" -#: .\judge\admin\problem.py:123 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: .\judge\admin\problem.py:124 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: .\judge\admin\problem.py:125 .\templates\contest\contest.html:84 -#: .\templates\problem\data.html:394 .\templates\problem\list.html:211 -#: .\templates\problem\list.html:232 .\templates\user\base-users-table.html:10 -#: .\templates\user\user-problems.html:63 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 +#: templates/problem/data.html:385 templates/problem/list.html:209 +#: templates/problem/list.html:230 templates/user/base-users-table.html:10 +#: templates/user/user-problems.html:60 msgid "Points" msgstr "" -#: .\judge\admin\problem.py:126 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "" -#: .\judge\admin\problem.py:127 .\templates\stats\base.html:16 -#: .\templates\submission\list.html:231 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "" -#: .\judge\admin\problem.py:128 -msgid "Justice" -msgstr "" - -#: .\judge\admin\problem.py:129 +#: judge/admin/problem.py:136 msgid "History" msgstr "" -#: .\judge\admin\problem.py:165 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "" -#: .\judge\admin\problem.py:203 +#: 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] "" +msgstr[1] "" + +#: 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] "" msgstr[1] "" -#: .\judge\admin\problem.py:207 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: .\judge\admin\problem.py:212 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\problem.py:216 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" -#: .\judge\admin\profile.py:32 +#: judge/admin/profile.py:35 msgid "timezone" msgstr "" -#: .\judge\admin\profile.py:65 .\judge\admin\submission.py:197 -#: .\templates\organization\requests\log.html:9 -#: .\templates\organization\requests\pending.html:19 -#: .\templates\ticket\list.html:247 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:261 msgid "User" msgstr "" -#: .\judge\admin\profile.py:70 -#: .\templates\registration\registration_form.html:141 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "" -#: .\judge\admin\profile.py:75 .\judge\views\register.py:30 -#: .\templates\registration\registration_form.html:169 -#: .\templates\user\edit-profile.html:104 +#: 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:80 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: .\judge\admin\profile.py:87 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\runtime.py:15 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "" + +#: judge/admin/runtime.py:19 msgid "Disallowed problems" msgstr "" -#: .\judge\admin\runtime.py:18 +#: judge/admin/runtime.py:22 msgid "These problems are NOT allowed to be submitted in this language" msgstr "" -#: .\judge\admin\runtime.py:81 +#: judge/admin/runtime.py:80 msgid "Description" msgstr "" -#: .\judge\admin\runtime.py:82 +#: judge/admin/runtime.py:81 msgid "Information" msgstr "" -#: .\judge\admin\runtime.py:83 +#: judge/admin/runtime.py:82 msgid "Capabilities" msgstr "" -#: .\judge\admin\submission.py:21 .\judge\admin\submission.py:40 -#: .\judge\admin\submission.py:207 +#: judge/admin/submission.py:23 judge/admin/submission.py:42 +#: judge/admin/submission.py:227 msgid "None" msgstr "" -#: .\judge\admin\submission.py:21 +#: judge/admin/submission.py:23 msgid "Not done" msgstr "" -#: .\judge\admin\submission.py:21 +#: judge/admin/submission.py:23 msgid "Exceptional" msgstr "" -#: .\judge\admin\submission.py:40 +#: judge/admin/submission.py:42 msgid "Unaccepted" msgstr "" -#: .\judge\admin\submission.py:83 +#: judge/admin/submission.py:89 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: .\judge\admin\submission.py:127 .\judge\admin\submission.py:148 +#: judge/admin/submission.py:155 judge/admin/submission.py:177 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: .\judge\admin\submission.py:132 +#: judge/admin/submission.py:161 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: .\judge\admin\submission.py:141 -#, python-format -msgid "%d submission were successfully scheduled for rejudging." -msgid_plural "%d submissions were successfully scheduled for rejudging." -msgstr[0] "" -msgstr[1] "" - -#: .\judge\admin\submission.py:144 +#: judge/admin/submission.py:173 msgid "Rejudge the selected submissions" msgstr "" -#: .\judge\admin\submission.py:177 +#: judge/admin/submission.py:199 judge/views/problem_manage.py:128 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: .\judge\admin\submission.py:180 +#: judge/admin/submission.py:202 msgid "Rescore the selected submissions" msgstr "" -#: .\judge\admin\submission.py:184 +#: judge/admin/submission.py:206 msgid "Problem code" msgstr "" -#: .\judge\admin\submission.py:189 +#: judge/admin/submission.py:211 msgid "Problem name" msgstr "" -#: .\judge\admin\submission.py:201 -#: .\templates\organization\requests\log.html:10 -#: .\templates\organization\requests\pending.html:20 +#: judge/admin/submission.py:221 templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 msgid "Time" msgstr "" -#: .\judge\admin\submission.py:209 +#: judge/admin/submission.py:229 #, python-format msgid "%d KB" msgstr "" -#: .\judge\admin\submission.py:211 +#: judge/admin/submission.py:231 #, python-format msgid "%.2f MB" msgstr "" -#: .\judge\admin\submission.py:213 +#: judge/admin/submission.py:233 msgid "Memory" msgstr "" -#: .\judge\admin\taxon.py:11 .\judge\admin\taxon.py:34 +#: judge/admin/taxon.py:11 judge/admin/taxon.py:34 msgid "Included problems" msgstr "" -#: .\judge\admin\taxon.py:14 +#: judge/admin/taxon.py:14 msgid "These problems are included in this group of problems" msgstr "" -#: .\judge\admin\taxon.py:37 +#: judge/admin/taxon.py:37 msgid "These problems are included in this type of problems" msgstr "" -#: .\judge\apps.py:8 +#: judge/apps.py:8 msgid "Online Judge" msgstr "" -#: .\judge\comments.py:40 -msgid "Comment title" -msgstr "" - -#: .\judge\comments.py:41 +#: judge/comments.py:41 msgid "Comment body" msgstr "" -#: .\judge\comments.py:47 .\judge\views\ticket.py:50 +#: 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:50 .\templates\comments\list.html:122 +#: judge/comments.py:49 templates/comments/list.html:142 msgid "" "You need to have solved at least one problem before your voice can be heard." msgstr "" -#: .\judge\comments.py:75 +#: judge/comments.py:93 msgid "Posted comment" msgstr "" -#: .\judge\forms.py:25 +#: judge/contest_format/atcoder.py:19 +msgid "AtCoder" +msgstr "" + +#: judge/contest_format/default.py:18 +msgid "Default" +msgstr "" + +#: judge/contest_format/ecoo.py:18 +msgid "ECOO" +msgstr "" + +#: judge/contest_format/icpc.py:19 +msgid "ICPC" +msgstr "" + +#: judge/contest_format/ioi.py:11 +msgid "IOI" +msgstr "" + +#: judge/contest_format/legacy_ioi.py:18 +msgid "IOI (pre-2016)" +msgstr "" + +#: judge/forms.py:27 +#, python-brace-format +msgid "" +"Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" + +#: judge/forms.py:30 +msgid "Invalid two-factor authentication token." +msgstr "" + +#: judge/forms.py:33 +msgid "Scratch codes must be 16 base32 characters." +msgstr "" + +#: judge/forms.py:35 judge/forms.py:264 +msgid "Invalid scratch code." +msgstr "" + +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: .\judge\forms.py:26 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: .\judge\forms.py:51 +#: 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:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: .\judge\forms.py:109 .\judge\views\register.py:26 -#: .\templates\registration\registration_form.html:135 -#: .\templates\user\base-users-table.html:5 +#: 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 "" + +#: 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:110 .\templates\registration\registration_form.html:147 -#: .\templates\registration\registration_form.html:161 +#: judge/forms.py:160 templates/registration/registration_form.html:149 +#: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: .\judge\jinja2\datetime.py:26 .\templates\blog\content.html:27 -#: .\templates\blog\dashboard.html:21 -msgid "N j, Y, g:i a" +#: judge/forms.py:192 +msgid "Invalid code length." msgstr "" -#: .\judge\jinja2\datetime.py:26 -#, python-brace-format -msgid "{time}" +#: judge/forms.py:223 +msgid "Invalid WebAuthn response." msgstr "" -#: .\judge\jinja2\datetime.py:26 -#, python-brace-format -msgid "on {time}" +#: judge/forms.py:226 +msgid "No WebAuthn challenge issued." msgstr "" -#: .\judge\jinja2\timedelta.py:52 -msgctxt "time format with day" -msgid "%d day %h:%m:%s" -msgid_plural "%d days %h:%m:%s" -msgstr[0] "" -msgstr[1] "" +#: judge/forms.py:232 +msgid "Invalid WebAuthn credential ID." +msgstr "" -#: .\judge\jinja2\timedelta.py:56 -msgctxt "time format without day" -msgid "%h:%m:%s" +#: judge/forms.py:262 +msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: .\judge\jinja2\timedelta.py:62 -msgctxt "time format no seconds with day" -msgid "%d day %h:%m" -msgid_plural "%d days %h:%m" -msgstr[0] "" -msgstr[1] "" +#: judge/forms.py:266 +msgid "Must specify either totp_token or webauthn_response." +msgstr "" -#: .\judge\jinja2\timedelta.py:64 -#, python-format -msgid "%d day" -msgid_plural "%d days" -msgstr[0] "" -msgstr[1] "" +#: judge/forms.py:270 judge/models/problem.py:119 +msgid "Problem code must be ^[a-z0-9]+$" +msgstr "" -#: .\judge\jinja2\timedelta.py:66 -msgctxt "hours and minutes" -msgid "%h:%m" +#: judge/forms.py:275 +msgid "Problem with code already exists." +msgstr "" + +#: judge/forms.py:280 judge/models/contest.py:66 +msgid "Contest id must be ^[a-z0-9]+$" +msgstr "" + +#: 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 "" + +#: judge/jinja2/datetime.py:26 +#, python-brace-format +msgid "{time}" +msgstr "" + +#: judge/jinja2/datetime.py:26 +#, python-brace-format +msgid "on {time}" msgstr "" -#: .\judge\models\choices.py:60 +#: judge/models/choices.py:59 msgid "Leave as LaTeX" msgstr "" -#: .\judge\models\choices.py:61 +#: judge/models/choices.py:60 msgid "SVG with PNG fallback" msgstr "" -#: .\judge\models\choices.py:62 +#: judge/models/choices.py:61 msgid "MathML only" msgstr "" -#: .\judge\models\choices.py:63 +#: judge/models/choices.py:62 msgid "MathJax with SVG/PNG fallback" msgstr "" -#: .\judge\models\choices.py:64 +#: judge/models/choices.py:63 msgid "Detect best quality" msgstr "" -#: .\judge\models\comment.py:36 -msgid "commenter" +#: judge/models/comment.py:25 +msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: .\judge\models\comment.py:37 -msgid "posted time" +#: judge/models/comment.py:41 +msgid "commenter" msgstr "" -#: .\judge\models\comment.py:38 -msgid "associated Page" +#: judge/models/comment.py:42 +msgid "posted time" msgstr "" -#: .\judge\models\comment.py:40 -msgid "Page code must be ^[pc]:[a-z0-9]+$|^b:\\d+$" +#: judge/models/comment.py:43 judge/models/comment.py:196 +msgid "associated page" msgstr "" -#: .\judge\models\comment.py:41 +#: judge/models/comment.py:45 msgid "votes" msgstr "" -#: .\judge\models\comment.py:42 -msgid "title of comment" -msgstr "" - -#: .\judge\models\comment.py:43 +#: judge/models/comment.py:46 msgid "body of comment" msgstr "" -#: .\judge\models\comment.py:44 +#: judge/models/comment.py:47 msgid "hide the comment" msgstr "" -#: .\judge\models\comment.py:45 +#: judge/models/comment.py:48 msgid "parent" msgstr "" -#: .\judge\models\comment.py:49 +#: judge/models/comment.py:53 msgid "comment" msgstr "" -#: .\judge\models\comment.py:50 +#: judge/models/comment.py:54 msgid "comments" msgstr "" -#: .\judge\models\comment.py:115 .\judge\models\problem.py:353 +#: judge/models/comment.py:89 judge/models/comment.py:141 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" -#: .\judge\models\comment.py:146 +#: judge/models/comment.py:191 msgid "comment vote" msgstr "" -#: .\judge\models\comment.py:147 +#: judge/models/comment.py:192 msgid "comment votes" msgstr "" -#: .\judge\models\contest.py:20 +#: judge/models/comment.py:201 +msgid "Override comment lock" +msgstr "" + +#: judge/models/contest.py:28 msgid "Invalid colour." msgstr "" -#: .\judge\models\contest.py:22 +#: judge/models/contest.py:30 msgid "tag name" msgstr "" -#: .\judge\models\contest.py:23 +#: judge/models/contest.py:31 msgid "Lowercase letters and hyphens only." msgstr "" -#: .\judge\models\contest.py:24 +#: judge/models/contest.py:32 msgid "tag colour" msgstr "" -#: .\judge\models\contest.py:25 +#: judge/models/contest.py:33 msgid "tag description" msgstr "" -#: .\judge\models\contest.py:44 +#: judge/models/contest.py:52 msgid "contest tag" msgstr "" -#: .\judge\models\contest.py:45 .\judge\models\contest.py:87 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" -#: .\judge\models\contest.py:49 -msgid "contest id" +#: judge/models/contest.py:61 +msgid "Visible" msgstr "" -#: .\judge\models\contest.py:50 -msgid "Contest id must be ^[a-z0-9]+$" +#: judge/models/contest.py:62 +msgid "Hidden for duration of contest" +msgstr "" + +#: judge/models/contest.py:63 +msgid "Hidden for duration of participation" +msgstr "" + +#: judge/models/contest.py:65 +msgid "contest id" msgstr "" -#: .\judge\models\contest.py:51 +#: judge/models/contest.py:67 msgid "contest name" msgstr "" -#: .\judge\models\contest.py:52 -msgid "These people will be able to edit the contest." +#: judge/models/contest.py:68 +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "" +"These users will be able to edit the contest, but will not be listed as " +"authors." +msgstr "" + +#: judge/models/contest.py:73 +msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: .\judge\models\contest.py:54 .\judge\models\runtime.py:118 +#: judge/models/contest.py:76 judge/models/runtime.py:136 msgid "description" msgstr "" -#: .\judge\models\contest.py:55 .\judge\models\problem.py:304 -#: .\judge\models\runtime.py:120 +#: judge/models/contest.py:77 judge/models/problem.py:458 +#: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: .\judge\models\contest.py:56 .\judge\models\contest.py:182 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: .\judge\models\contest.py:57 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: .\judge\models\contest.py:58 .\judge\models\problem.py:109 -#: .\judge\models\problem.py:328 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: .\judge\models\contest.py:59 .\judge\models\problem.py:115 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: .\judge\models\contest.py:60 +#: judge/models/contest.py:82 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:63 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: .\judge\models\contest.py:63 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: .\judge\models\contest.py:65 -msgid "hide scoreboard" +#: judge/models/contest.py:87 +msgid "view contest scoreboard" msgstr "" -#: .\judge\models\contest.py:66 -msgid "" -"Whether the scoreboard should remain hidden for the duration of the contest." +#: judge/models/contest.py:89 +msgid "These users will be able to view the scoreboard." +msgstr "" + +#: judge/models/contest.py:90 +msgid "scoreboard visibility" msgstr "" -#: .\judge\models\contest.py:69 +#: judge/models/contest.py:91 +msgid "Scoreboard visibility through the duration of the contest" +msgstr "" + +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: .\judge\models\contest.py:70 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: .\judge\models\contest.py:72 +#: judge/models/contest.py:96 +msgid "Rating floor for contest" +msgstr "" + +#: judge/models/contest.py:98 +msgid "Rating ceiling for contest" +msgstr "" + +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: .\judge\models\contest.py:72 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: .\judge\models\contest.py:73 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: .\judge\models\contest.py:75 -msgid "private to organizations" +#: judge/models/contest.py:103 +msgid "private to specific users" +msgstr "" + +#: judge/models/contest.py:104 +msgid "private contestants" +msgstr "" + +#: judge/models/contest.py:105 +msgid "If private, only these users may see the contest" msgstr "" -#: .\judge\models\contest.py:76 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: .\judge\models\contest.py:77 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: .\judge\models\contest.py:79 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: .\judge\models\contest.py:80 +#: judge/models/contest.py:114 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:84 .\judge\models\profile.py:64 +#: judge/models/contest.py:118 judge/models/problem.py:183 +msgid "private to organizations" +msgstr "" + +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: .\judge\models\contest.py:85 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: .\judge\models\contest.py:86 .\judge\models\problem.py:123 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: .\judge\models\contest.py:88 +#: judge/models/contest.py:122 judge/models/profile.py:57 +msgid "Logo override image" +msgstr "" + +#: judge/models/contest.py:124 +msgid "" +"This image will replace the default site logo for users inside the contest." +msgstr "" + +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: .\judge\models\contest.py:89 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: .\judge\models\contest.py:90 .\judge\models\problem.py:125 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: .\judge\models\contest.py:91 .\judge\models\profile.py:41 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: .\judge\models\contest.py:92 +#: judge/models/contest.py:131 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:169 +#: judge/models/contest.py:133 judge/models/problem.py:163 +msgid "personae non gratae" +msgstr "" + +#: judge/models/contest.py:134 +msgid "Bans the selected users from joining this contest." +msgstr "" + +#: judge/models/contest.py:135 +msgid "contest format" +msgstr "" + +#: judge/models/contest.py:136 +msgid "The contest format module to use." +msgstr "" + +#: judge/models/contest.py:137 +msgid "contest format configuration" +msgstr "" + +#: judge/models/contest.py:138 +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:145 +msgid "contest lock" +msgstr "" + +#: judge/models/contest.py:146 +msgid "" +"Prevent submissions from this contest from being rejudged after this date." +msgstr "" + +#: judge/models/contest.py:148 +msgid "precision points" +msgstr "" + +#: judge/models/contest.py:150 +msgid "Number of digits to round points to." +msgstr "" + +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: .\judge\models\contest.py:170 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: .\judge\models\contest.py:171 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: .\judge\models\contest.py:172 +#: judge/models/contest.py:401 +msgid "Clone contest" +msgstr "" + +#: judge/models/contest.py:402 templates/contest/moss.html:74 +msgid "MOSS contest" +msgstr "" + +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: .\judge\models\contest.py:173 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: .\judge\models\contest.py:175 .\judge\models\contest.py:263 -#: .\judge\models\contest.py:298 +#: judge/models/contest.py:405 +msgid "Create private contests" +msgstr "" + +#: judge/models/contest.py:406 +msgid "Change contest visibility" +msgstr "" + +#: judge/models/contest.py:407 +msgid "Edit contest problem label script" +msgstr "" + +#: judge/models/contest.py:408 +msgid "Change lock status of contest" +msgstr "" + +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "" -#: .\judge\models\contest.py:176 +#: judge/models/contest.py:411 msgid "contests" msgstr "" -#: .\judge\models\contest.py:180 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: .\judge\models\contest.py:181 .\judge\models\contest.py:297 -#: .\judge\models\profile.py:173 -msgid "user" -msgstr "" - -#: .\judge\models\contest.py:183 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: .\judge\models\contest.py:184 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: .\judge\models\contest.py:185 +#: judge/models/contest.py:423 +msgid "is disqualified" +msgstr "" + +#: judge/models/contest.py:424 +msgid "Whether this participation is disqualified." +msgstr "" + +#: judge/models/contest.py:425 +msgid "tie-breaking field" +msgstr "" + +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: .\judge\models\contest.py:186 -msgid "0 means non-virtual, otherwise the n-th virtual participation" +#: judge/models/contest.py:427 +msgid "0 means non-virtual, otherwise the n-th virtual participation." +msgstr "" + +#: judge/models/contest.py:428 +msgid "contest format specific data" msgstr "" -#: .\judge\models\contest.py:249 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: .\judge\models\contest.py:251 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: .\judge\models\contest.py:252 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: .\judge\models\contest.py:255 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: .\judge\models\contest.py:256 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: .\judge\models\contest.py:262 .\judge\models\contest.py:282 -#: .\judge\models\problem.py:303 .\judge\models\problem.py:308 -#: .\judge\models\problem.py:326 .\judge\models\problem_data.py:34 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 +#: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: .\judge\models\contest.py:264 .\judge\models\contest.py:286 -#: .\judge\models\problem.py:112 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: .\judge\models\contest.py:265 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: .\judge\models\contest.py:266 .\judge\models\contest.py:287 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: .\judge\models\contest.py:267 .\judge\models\interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: .\judge\models\contest.py:268 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: .\judge\models\contest.py:269 -msgid "Maximum number of submissions for this problem, or 0 for no limit." +#: judge/models/contest.py:515 +msgid "" +"Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: .\judge\models\contest.py:271 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: .\judge\models\contest.py:276 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: .\judge\models\contest.py:277 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: .\judge\models\contest.py:281 .\judge\models\submission.py:149 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "" -#: .\judge\models\contest.py:284 .\judge\models\contest.py:299 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: .\judge\models\contest.py:288 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: .\judge\models\contest.py:292 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: .\judge\models\contest.py:293 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: .\judge\models\contest.py:300 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: .\judge\models\contest.py:301 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: .\judge\models\contest.py:302 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: .\judge\models\contest.py:303 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: .\judge\models\contest.py:307 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: .\judge\models\contest.py:308 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: .\judge\models\interface.py:24 +#: judge/models/contest.py:577 +msgid "contest moss result" +msgstr "" + +#: judge/models/contest.py:578 +msgid "contest moss results" +msgstr "" + +#: judge/models/interface.py:24 msgid "configuration item" msgstr "" -#: .\judge\models\interface.py:25 +#: judge/models/interface.py:25 msgid "miscellaneous configuration" msgstr "" -#: .\judge\models\interface.py:37 +#: judge/models/interface.py:37 msgid "navigation item" msgstr "" -#: .\judge\models\interface.py:38 +#: judge/models/interface.py:38 msgid "navigation bar" msgstr "" -#: .\judge\models\interface.py:44 .\judge\models\profile.py:22 +#: judge/models/interface.py:44 msgid "identifier" msgstr "" -#: .\judge\models\interface.py:45 +#: judge/models/interface.py:45 msgid "label" msgstr "" -#: .\judge\models\interface.py:47 +#: judge/models/interface.py:47 msgid "highlight regex" msgstr "" -#: .\judge\models\interface.py:48 +#: judge/models/interface.py:48 msgid "parent item" msgstr "" -#: .\judge\models\interface.py:65 +#: judge/models/interface.py:66 msgid "post title" msgstr "" -#: .\judge\models\interface.py:66 .\judge\models\problem.py:342 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" -#: .\judge\models\interface.py:67 +#: judge/models/interface.py:68 msgid "slug" msgstr "" -#: .\judge\models\interface.py:68 .\judge\models\problem.py:340 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" -#: .\judge\models\interface.py:69 +#: judge/models/interface.py:70 msgid "sticky" msgstr "" -#: .\judge\models\interface.py:70 +#: judge/models/interface.py:71 msgid "publish after" msgstr "" -#: .\judge\models\interface.py:71 +#: judge/models/interface.py:72 msgid "post content" msgstr "" -#: .\judge\models\interface.py:72 +#: judge/models/interface.py:73 msgid "post summary" msgstr "" -#: .\judge\models\interface.py:73 +#: judge/models/interface.py:74 msgid "openGraph image" msgstr "" -#: .\judge\models\interface.py:90 +#: judge/models/interface.py:96 msgid "Edit all posts" msgstr "" -#: .\judge\models\interface.py:92 +#: judge/models/interface.py:98 msgid "blog post" msgstr "" -#: .\judge\models\interface.py:93 +#: judge/models/interface.py:99 msgid "blog posts" msgstr "" -#: .\judge\models\message.py:10 -msgid "message title" -msgstr "" - -#: .\judge\models\message.py:11 .\judge\models\ticket.py:27 -msgid "message body" -msgstr "" - -#: .\judge\models\message.py:12 -msgid "sender" -msgstr "" - -#: .\judge\models\message.py:13 -msgid "target" -msgstr "" - -#: .\judge\models\message.py:14 -msgid "message timestamp" -msgstr "" - -#: .\judge\models\message.py:15 -msgid "read" -msgstr "" - -#: .\judge\models\message.py:19 -msgid "messages in the thread" +#: judge/models/problem.py:30 +#, python-format +msgid "Disallowed characters: %(value)s" msgstr "" -#: .\judge\models\problem.py:26 +#: judge/models/problem.py:35 msgid "problem category ID" msgstr "" -#: .\judge\models\problem.py:27 +#: judge/models/problem.py:36 msgid "problem category name" msgstr "" -#: .\judge\models\problem.py:34 +#: judge/models/problem.py:43 msgid "problem type" msgstr "" -#: .\judge\models\problem.py:35 .\judge\models\problem.py:107 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" -#: .\judge\models\problem.py:39 +#: judge/models/problem.py:48 msgid "problem group ID" msgstr "" -#: .\judge\models\problem.py:40 +#: judge/models/problem.py:49 msgid "problem group name" msgstr "" -#: .\judge\models\problem.py:47 .\judge\models\problem.py:108 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" -#: .\judge\models\problem.py:48 +#: judge/models/problem.py:57 msgid "problem groups" msgstr "" -#: .\judge\models\problem.py:52 +#: judge/models/problem.py:61 msgid "key" msgstr "" -#: .\judge\models\problem.py:54 +#: judge/models/problem.py:63 msgid "link" msgstr "" -#: .\judge\models\problem.py:55 +#: judge/models/problem.py:64 msgid "full name" msgstr "" -#: .\judge\models\problem.py:56 .\judge\models\profile.py:26 -#: .\judge\models\runtime.py:20 +#: judge/models/problem.py:65 judge/models/profile.py:44 +#: judge/models/runtime.py:24 msgid "short name" msgstr "" -#: .\judge\models\problem.py:57 +#: judge/models/problem.py:66 msgid "Displayed on pages under this license" msgstr "" -#: .\judge\models\problem.py:58 +#: judge/models/problem.py:67 msgid "icon" msgstr "" -#: .\judge\models\problem.py:58 +#: judge/models/problem.py:67 msgid "URL to the icon" msgstr "" -#: .\judge\models\problem.py:59 +#: judge/models/problem.py:68 msgid "license text" msgstr "" -#: .\judge\models\problem.py:68 +#: judge/models/problem.py:77 msgid "license" msgstr "" -#: .\judge\models\problem.py:69 +#: judge/models/problem.py:78 msgid "licenses" msgstr "" -#: .\judge\models\problem.py:96 -msgid "problem code" +#: judge/models/problem.py:112 +msgid "Follow global setting" msgstr "" -#: .\judge\models\problem.py:97 -msgid "Problem code must be ^[a-z0-9]+$" +#: judge/models/problem.py:113 +msgid "Always visible" msgstr "" -#: .\judge\models\problem.py:98 -msgid "problem name" +#: judge/models/problem.py:114 +msgid "Visible if problem solved" msgstr "" -#: .\judge\models\problem.py:99 -msgid "problem body" +#: judge/models/problem.py:115 +msgid "Only own submissions" msgstr "" -#: .\judge\models\problem.py:100 -msgid "creators" +#: judge/models/problem.py:118 +msgid "problem code" msgstr "" -#: .\judge\models\problem.py:101 -msgid "curators" +#: judge/models/problem.py:120 +msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: .\judge\models\problem.py:102 -msgid "" -"These users will be able to edit a problem, but not be publicly shown as an " -"author." +#: judge/models/problem.py:122 +msgid "problem name" msgstr "" -#: .\judge\models\problem.py:104 -msgid "testers" +#: judge/models/problem.py:123 +msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: .\judge\models\problem.py:106 -msgid "These users will be able to view a private problem, but not edit it." +#: judge/models/problem.py:125 +msgid "problem body" msgstr "" -#: .\judge\models\problem.py:109 -msgid "" +#: judge/models/problem.py:126 +msgid "creators" +msgstr "" + +#: judge/models/problem.py:127 +msgid "These users will be able to edit the problem, and be listed as authors." +msgstr "" + +#: judge/models/problem.py:129 +msgid "curators" +msgstr "" + +#: judge/models/problem.py:130 +msgid "" +"These users will be able to edit the problem, but not be listed as authors." +msgstr "" + +#: judge/models/problem.py:132 +msgid "testers" +msgstr "" + +#: judge/models/problem.py:134 +msgid "These users will be able to view the private problem, but not edit it." +msgstr "" + +#: judge/models/problem.py:136 +msgid "The type of problem, as shown on the problem's page." +msgstr "" + +#: judge/models/problem.py:139 +msgid "The group of problem, shown under Category in the problem list." +msgstr "" + +#: judge/models/problem.py:141 +msgid "" "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) " "are supported." msgstr "" -#: .\judge\models\problem.py:110 .\judge\models\problem.py:329 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: .\judge\models\problem.py:110 +#: judge/models/problem.py:146 msgid "" "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 " "kilobytes)." msgstr "" -#: .\judge\models\problem.py:113 +#: judge/models/problem.py:152 +msgid "" +"Points awarded for problem completion. Points are displayed with a 'p' " +"suffix if partial." +msgstr "" + +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: .\judge\models\problem.py:114 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: .\judge\models\problem.py:116 +#: judge/models/problem.py:157 +msgid "List of allowed submission languages." +msgstr "" + +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: .\judge\models\problem.py:117 -msgid "Whether judges should be allowed to manage data or not" +#: judge/models/problem.py:160 +msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: .\judge\models\problem.py:118 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: .\judge\models\problem.py:119 +#: judge/models/problem.py:162 msgid "" "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: .\judge\models\problem.py:120 -msgid "personae non gratae" +#: judge/models/problem.py:164 +msgid "Bans the selected users from submitting to this problem." msgstr "" -#: .\judge\models\problem.py:121 -msgid "Bans the selected users from submitting to this problem" +#: judge/models/problem.py:166 +msgid "The license under which this problem is published." msgstr "" -#: .\judge\models\problem.py:124 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: .\judge\models\problem.py:126 -msgid "amount of users" +#: judge/models/problem.py:170 +msgid "number of users" +msgstr "" + +#: judge/models/problem.py:171 +msgid "The number of users who solved the problem." +msgstr "" + +#: judge/models/problem.py:172 +msgid "solve rate" +msgstr "" + +#: judge/models/problem.py:173 +msgid "allow full markdown access" +msgstr "" + +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 +msgid "If private, only these organizations may see the problem." +msgstr "" + +#: judge/models/problem.py:447 +msgid "See hidden problems" +msgstr "" + +#: judge/models/problem.py:448 +msgid "Edit own problems" +msgstr "" + +#: judge/models/problem.py:449 +msgid "Edit all problems" +msgstr "" + +#: judge/models/problem.py:450 +msgid "Edit all public problems" +msgstr "" + +#: judge/models/problem.py:451 +msgid "Edit problems with full markup" +msgstr "" + +#: judge/models/problem.py:452 templates/problem/problem.html:161 +msgid "Clone problem" +msgstr "" + +#: judge/models/problem.py:453 +msgid "Change is_public field" msgstr "" -#: .\judge\models\problem.py:127 -msgid "The amount of users on the best solutions page." +#: judge/models/problem.py:454 +msgid "Change is_manually_managed field" msgstr "" -#: .\judge\models\problem.py:128 -msgid "rate of AC submissions" +#: judge/models/problem.py:455 +msgid "See organization-private problems" msgstr "" -#: .\judge\models\problem.py:309 .\judge\models\problem.py:327 -#: .\judge\models\runtime.py:96 +#: judge/models/problem.py:463 judge/models/problem.py:481 +#: judge/models/runtime.py:111 msgid "language" msgstr "" -#: .\judge\models\problem.py:310 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: .\judge\models\problem.py:311 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: .\judge\models\problem.py:315 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: .\judge\models\problem.py:316 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: .\judge\models\problem.py:320 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: .\judge\models\problem.py:321 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: .\judge\models\problem.py:322 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: .\judge\models\problem.py:333 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: .\judge\models\problem.py:334 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: .\judge\models\problem.py:338 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: .\judge\models\problem.py:341 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: .\judge\models\problem.py:343 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: .\judge\models\problem.py:359 +#: judge/models/problem.py:524 +msgid "See hidden solutions" +msgstr "" + +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: .\judge\models\problem.py:360 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" -#: .\judge\models\problem_data.py:23 +#: judge/models/problem_data.py:23 msgid "Standard" msgstr "" -#: .\judge\models\problem_data.py:24 +#: judge/models/problem_data.py:24 msgid "Floats" msgstr "" -#: .\judge\models\problem_data.py:25 +#: judge/models/problem_data.py:25 msgid "Floats (absolute)" msgstr "" -#: .\judge\models\problem_data.py:26 +#: judge/models/problem_data.py:26 msgid "Floats (relative)" msgstr "" -#: .\judge\models\problem_data.py:27 +#: judge/models/problem_data.py:27 msgid "Non-trailing spaces" msgstr "" -#: .\judge\models\problem_data.py:28 +#: judge/models/problem_data.py:28 msgid "Unordered" msgstr "" -#: .\judge\models\problem_data.py:29 +#: judge/models/problem_data.py:29 msgid "Byte identical" msgstr "" -#: .\judge\models\problem_data.py:35 +#: judge/models/problem_data.py:30 +msgid "Line-by-line" +msgstr "" + +#: judge/models/problem_data.py:37 msgid "data zip file" msgstr "" -#: .\judge\models\problem_data.py:37 +#: judge/models/problem_data.py:39 msgid "generator file" msgstr "" -#: .\judge\models\problem_data.py:39 .\judge\models\problem_data.py:87 +#: judge/models/problem_data.py:41 judge/models/problem_data.py:90 msgid "output prefix length" msgstr "" -#: .\judge\models\problem_data.py:40 .\judge\models\problem_data.py:88 +#: judge/models/problem_data.py:42 judge/models/problem_data.py:91 msgid "output limit length" msgstr "" -#: .\judge\models\problem_data.py:41 +#: judge/models/problem_data.py:43 msgid "init.yml generation feedback" msgstr "" -#: .\judge\models\problem_data.py:42 .\judge\models\problem_data.py:89 +#: judge/models/problem_data.py:44 judge/models/problem_data.py:92 msgid "checker" msgstr "" -#: .\judge\models\problem_data.py:43 .\judge\models\problem_data.py:90 +#: judge/models/problem_data.py:45 judge/models/problem_data.py:93 msgid "checker arguments" msgstr "" -#: .\judge\models\problem_data.py:44 .\judge\models\problem_data.py:91 +#: judge/models/problem_data.py:46 judge/models/problem_data.py:94 msgid "checker arguments as a JSON object" msgstr "" -#: .\judge\models\problem_data.py:75 +#: judge/models/problem_data.py:77 msgid "problem data set" msgstr "" -#: .\judge\models\problem_data.py:76 +#: judge/models/problem_data.py:79 msgid "case position" msgstr "" -#: .\judge\models\problem_data.py:77 +#: judge/models/problem_data.py:80 msgid "case type" msgstr "" -#: .\judge\models\problem_data.py:78 +#: judge/models/problem_data.py:81 msgid "Normal case" msgstr "" -#: .\judge\models\problem_data.py:79 +#: judge/models/problem_data.py:82 msgid "Batch start" msgstr "" -#: .\judge\models\problem_data.py:80 +#: judge/models/problem_data.py:83 msgid "Batch end" msgstr "" -#: .\judge\models\problem_data.py:82 +#: judge/models/problem_data.py:85 msgid "input file name" msgstr "" -#: .\judge\models\problem_data.py:83 +#: judge/models/problem_data.py:86 msgid "output file name" msgstr "" -#: .\judge\models\problem_data.py:84 +#: judge/models/problem_data.py:87 msgid "generator arguments" msgstr "" -#: .\judge\models\problem_data.py:85 +#: judge/models/problem_data.py:88 msgid "point value" msgstr "" -#: .\judge\models\problem_data.py:86 +#: judge/models/problem_data.py:89 msgid "case is pretest?" msgstr "" -#: .\judge\models\profile.py:21 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: .\judge\models\profile.py:23 -msgid "Organization name shows in URL" +#: judge/models/profile.py:42 +msgid "organization slug" msgstr "" -#: .\judge\models\profile.py:27 -msgid "Displayed beside user name during contests" -msgstr "" - -#: .\judge\models\profile.py:28 -msgid "organization description" +#: judge/models/profile.py:43 +msgid "Organization name shown in URL" msgstr "" -#: .\judge\models\profile.py:29 -msgid "registrant" +#: judge/models/profile.py:45 +msgid "Displayed beside user name during contests" msgstr "" -#: .\judge\models\profile.py:31 -msgid "User who registered this organization" +#: judge/models/profile.py:46 +msgid "organization description" msgstr "" -#: .\judge\models\profile.py:32 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: .\judge\models\profile.py:33 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: .\judge\models\profile.py:34 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: .\judge\models\profile.py:35 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: .\judge\models\profile.py:36 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: .\judge\models\profile.py:37 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: .\judge\models\profile.py:38 +#: judge/models/profile.py:53 msgid "" "Maximum amount of users in this organization, only applicable to private " "organizations" msgstr "" -#: .\judge\models\profile.py:40 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: .\judge\models\profile.py:63 .\judge\models\profile.py:80 -#: .\judge\models\profile.py:174 -msgid "organization" +#: judge/models/profile.py:59 +msgid "" +"This image will replace the default site logo for users viewing the " +"organization." msgstr "" -#: .\judge\models\profile.py:68 -msgid "user associated" +#: judge/models/profile.py:82 +msgid "Administer organizations" +msgstr "" + +#: judge/models/profile.py:83 +msgid "Edit all organizations" +msgstr "" + +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 +msgid "organization" msgstr "" -#: .\judge\models\profile.py:69 -msgid "display name" +#: judge/models/profile.py:90 +msgid "user associated" msgstr "" -#: .\judge\models\profile.py:70 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: .\judge\models\profile.py:71 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: .\judge\models\profile.py:73 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: .\judge\models\profile.py:78 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: .\judge\models\profile.py:79 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: .\judge\models\profile.py:82 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: .\judge\models\profile.py:84 +#: judge/models/profile.py:106 +msgid "Normal User" +msgstr "" + +#: judge/models/profile.py:107 +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 +#: 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 +msgid "Admin" +msgstr "" + +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: .\judge\models\profile.py:84 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: .\judge\models\profile.py:87 +#: judge/models/profile.py:111 +msgid "unlisted user" +msgstr "" + +#: judge/models/profile.py:111 +msgid "User will not be ranked." +msgstr "" + +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: .\judge\models\profile.py:88 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: .\judge\models\profile.py:89 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: .\judge\models\profile.py:91 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: .\judge\models\profile.py:93 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: .\judge\models\profile.py:130 -#, python-format -msgctxt "user display name" -msgid "%(username)s (%(display)s)" +#: judge/models/profile.py:121 +msgid "TOTP 2FA enabled" +msgstr "" + +#: judge/models/profile.py:122 +msgid "check to enable TOTP-based two-factor authentication" +msgstr "" + +#: judge/models/profile.py:123 +msgid "WebAuthn 2FA enabled" +msgstr "" + +#: judge/models/profile.py:124 +msgid "check to enable WebAuthn-based two-factor authentication" +msgstr "" + +#: judge/models/profile.py:125 +msgid "TOTP key" +msgstr "" + +#: judge/models/profile.py:126 +msgid "32 character base32-encoded key for TOTP" +msgstr "" + +#: judge/models/profile.py:128 +msgid "TOTP key must be empty or base32" +msgstr "" + +#: judge/models/profile.py:129 +msgid "scratch codes" +msgstr "" + +#: judge/models/profile.py:130 +msgid "" +"JSON array of 16 character base32-encoded " +"codes for scratch " +"codes" +msgstr "" + +#: judge/models/profile.py:134 +msgid "" +"Scratch codes must be empty or a JSON array " +"of 16-" +"character base32 codes" +msgstr "" + +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 +msgid "API token" +msgstr "" + +#: judge/models/profile.py:138 +msgid "64 character hex-encoded API access token" +msgstr "" + +#: judge/models/profile.py:140 +msgid "API token must be None or hexadecimal" +msgstr "" + +#: judge/models/profile.py:141 +msgid "internal notes" +msgstr "" + +#: judge/models/profile.py:142 +msgid "Notes for administrators regarding this user." +msgstr "" + +#: judge/models/profile.py:143 +msgid "last data download time" +msgstr "" + +#: judge/models/profile.py:253 +msgid "Shows in-progress development stuff" +msgstr "" + +#: judge/models/profile.py:254 +msgid "Edit TOTP settings" msgstr "" -#: .\judge\models\profile.py:168 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: .\judge\models\profile.py:169 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: .\judge\models\profile.py:175 +#: judge/models/profile.py:263 +msgid "device name" +msgstr "" + +#: judge/models/profile.py:264 +msgid "credential ID" +msgstr "" + +#: judge/models/profile.py:265 +msgid "public key" +msgstr "" + +#: judge/models/profile.py:266 +msgid "sign counter" +msgstr "" + +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: .\judge\models\profile.py:176 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: .\judge\models\profile.py:181 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: .\judge\models\profile.py:184 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: .\judge\models\profile.py:185 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" -#: .\judge\models\runtime.py:15 +#: judge/models/runtime.py:19 msgid "short identifier" msgstr "" -#: .\judge\models\runtime.py:16 +#: judge/models/runtime.py:20 msgid "" "The identifier for this language; the same as its executor id for judges." msgstr "" -#: .\judge\models\runtime.py:18 +#: judge/models/runtime.py:22 msgid "long name" msgstr "" -#: .\judge\models\runtime.py:19 +#: judge/models/runtime.py:23 msgid "Longer name for the language, e.g. \"Python 2\" or \"C++11\"." msgstr "" -#: .\judge\models\runtime.py:21 +#: 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 "" -#: .\judge\models\runtime.py:25 +#: judge/models/runtime.py:29 msgid "common name" msgstr "" -#: .\judge\models\runtime.py:26 +#: 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 "" -#: .\judge\models\runtime.py:28 +#: judge/models/runtime.py:32 msgid "ace mode name" msgstr "" -#: .\judge\models\runtime.py:29 +#: 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 "" -#: .\judge\models\runtime.py:31 +#: judge/models/runtime.py:35 msgid "pygments name" msgstr "" -#: .\judge\models\runtime.py:32 +#: judge/models/runtime.py:36 msgid "Language ID for Pygments highlighting in source windows." msgstr "" -#: .\judge\models\runtime.py:33 +#: judge/models/runtime.py:37 msgid "code template" msgstr "" -#: .\judge\models\runtime.py:34 +#: judge/models/runtime.py:38 msgid "Code template to display in submission editor." msgstr "" -#: .\judge\models\runtime.py:35 +#: judge/models/runtime.py:39 msgid "runtime info override" msgstr "" -#: .\judge\models\runtime.py:36 +#: 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:38 +#: judge/models/runtime.py:42 msgid "language description" msgstr "" -#: .\judge\models\runtime.py:39 +#: judge/models/runtime.py:43 msgid "" -"Use field this to inform users of quirks with your environment, additional " +"Use this field to inform users of quirks with your environment, additional " "restrictions, etc." msgstr "" -#: .\judge\models\runtime.py:41 +#: judge/models/runtime.py:45 msgid "extension" msgstr "" -#: .\judge\models\runtime.py:42 +#: judge/models/runtime.py:46 msgid "The extension of source files, e.g., \"py\" or \"cpp\"." msgstr "" -#: .\judge\models\runtime.py:97 +#: judge/models/runtime.py:112 msgid "languages" msgstr "" -#: .\judge\models\runtime.py:101 +#: judge/models/runtime.py:116 msgid "language to which this runtime belongs" msgstr "" -#: .\judge\models\runtime.py:102 +#: judge/models/runtime.py:117 msgid "judge on which this runtime exists" msgstr "" -#: .\judge\models\runtime.py:103 +#: judge/models/runtime.py:118 msgid "runtime name" msgstr "" -#: .\judge\models\runtime.py:104 +#: judge/models/runtime.py:119 msgid "runtime version" msgstr "" -#: .\judge\models\runtime.py:105 +#: judge/models/runtime.py:120 msgid "order in which to display this runtime" msgstr "" -#: .\judge\models\runtime.py:109 +#: judge/models/runtime.py:124 msgid "Server name, hostname-style" msgstr "" -#: .\judge\models\runtime.py:110 +#: judge/models/runtime.py:125 msgid "time of creation" msgstr "" -#: .\judge\models\runtime.py:111 -msgid "A key to authenticated this judge" +#: judge/models/runtime.py:126 +msgid "A key to authenticate this judge" msgstr "" -#: .\judge\models\runtime.py:112 +#: judge/models/runtime.py:127 msgid "authentication key" msgstr "" -#: .\judge\models\runtime.py:113 +#: 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:114 +#: judge/models/runtime.py:132 msgid "judge start time" msgstr "" -#: .\judge\models\runtime.py:115 +#: judge/models/runtime.py:133 msgid "response time" msgstr "" -#: .\judge\models\runtime.py:116 +#: judge/models/runtime.py:134 msgid "system load" msgstr "" -#: .\judge\models\runtime.py:117 +#: judge/models/runtime.py:135 msgid "Load for the last minute, divided by processors to be fair." msgstr "" -#: .\judge\models\runtime.py:121 .\judge\models\runtime.py:156 +#: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" msgstr "" -#: .\judge\models\runtime.py:155 +#: judge/models/runtime.py:180 msgid "judge" msgstr "" -#: .\judge\models\submission.py:15 .\judge\models\submission.py:41 -#: .\judge\utils\problems.py:81 +#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: .\judge\models\submission.py:16 .\judge\models\submission.py:42 -#: .\judge\utils\problems.py:82 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: .\judge\models\submission.py:17 .\judge\models\submission.py:44 -#: .\judge\utils\problems.py:84 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: .\judge\models\submission.py:18 .\judge\models\submission.py:45 -#: .\judge\utils\problems.py:85 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: .\judge\models\submission.py:19 .\judge\models\submission.py:46 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: .\judge\models\submission.py:20 .\judge\models\submission.py:47 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: .\judge\models\submission.py:21 .\judge\models\submission.py:48 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: .\judge\models\submission.py:22 .\judge\models\submission.py:36 -#: .\judge\models\submission.py:49 .\judge\utils\problems.py:83 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: .\judge\models\submission.py:23 .\judge\models\submission.py:35 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: .\judge\models\submission.py:24 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: .\judge\models\submission.py:25 .\judge\models\submission.py:37 -#: .\judge\models\submission.py:55 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: .\judge\models\submission.py:31 .\judge\models\submission.py:51 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: .\judge\models\submission.py:32 .\judge\models\submission.py:52 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: .\judge\models\submission.py:33 .\judge\models\submission.py:53 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: .\judge\models\submission.py:34 .\judge\models\submission.py:54 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: .\judge\models\submission.py:50 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: .\judge\models\submission.py:60 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: .\judge\models\submission.py:61 .\judge\models\submission.py:159 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: .\judge\models\submission.py:62 .\judge\models\submission.py:160 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: .\judge\models\submission.py:63 .\judge\models\submission.py:161 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: .\judge\models\submission.py:64 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: .\judge\models\submission.py:65 -msgid "source code" -msgstr "" - -#: .\judge\models\submission.py:66 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: .\judge\models\submission.py:67 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: .\judge\models\submission.py:69 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: .\judge\models\submission.py:71 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: .\judge\models\submission.py:72 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: .\judge\models\submission.py:73 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: .\judge\models\submission.py:74 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: .\judge\models\submission.py:76 -msgid "was rejudged by admin" +#: judge/models/submission.py:82 +msgid "submission judge time" +msgstr "" + +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: .\judge\models\submission.py:77 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: .\judge\models\submission.py:150 +#: judge/models/submission.py:87 +msgid "submission lock" +msgstr "" + +#: judge/models/submission.py:210 +msgid "Abort any submission" +msgstr "" + +#: judge/models/submission.py:211 +msgid "Rejudge the submission" +msgstr "" + +#: judge/models/submission.py:212 +msgid "Rejudge a lot of submissions" +msgstr "" + +#: judge/models/submission.py:213 +msgid "Submit without limit" +msgstr "" + +#: judge/models/submission.py:214 +msgid "View all submission" +msgstr "" + +#: judge/models/submission.py:215 +msgid "Resubmit others' submission" +msgstr "" + +#: judge/models/submission.py:216 +msgid "Change lock status of submission" +msgstr "" + +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: .\judge\models\submission.py:156 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: .\judge\models\submission.py:157 +#: judge/models/submission.py:225 +msgid "source code" +msgstr "" + +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: .\judge\models\submission.py:158 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: .\judge\models\submission.py:162 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: .\judge\models\submission.py:163 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: .\judge\models\submission.py:164 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: .\judge\models\submission.py:165 +#: judge/models/submission.py:244 +msgid "extended judging feedback" +msgstr "" + +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: .\judge\models\submission.py:172 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: .\judge\models\submission.py:173 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" -#: .\judge\models\ticket.py:10 +#: judge/models/ticket.py:10 msgid "ticket title" msgstr "" -#: .\judge\models\ticket.py:11 +#: judge/models/ticket.py:11 msgid "ticket creator" msgstr "" -#: .\judge\models\ticket.py:12 +#: judge/models/ticket.py:13 msgid "creation time" msgstr "" -#: .\judge\models\ticket.py:13 +#: judge/models/ticket.py:14 msgid "assignees" msgstr "" -#: .\judge\models\ticket.py:14 +#: judge/models/ticket.py:16 msgid "quick notes" msgstr "" -#: .\judge\models\ticket.py:15 +#: judge/models/ticket.py:17 msgid "Staff notes for this issue to aid in processing." msgstr "" -#: .\judge\models\ticket.py:16 +#: judge/models/ticket.py:18 msgid "linked item type" msgstr "" -#: .\judge\models\ticket.py:18 +#: judge/models/ticket.py:20 msgid "linked item ID" msgstr "" -#: .\judge\models\ticket.py:20 +#: judge/models/ticket.py:22 msgid "is ticket open?" msgstr "" -#: .\judge\models\ticket.py:24 +#: judge/models/ticket.py:26 msgid "ticket" msgstr "" -#: .\judge\models\ticket.py:26 +#: judge/models/ticket.py:28 msgid "poster" msgstr "" -#: .\judge\models\ticket.py:28 +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + +#: judge/models/ticket.py:31 msgid "message time" msgstr "" -#: .\judge\pdf_problems.py:111 +#: judge/pdf_problems.py:147 judge/pdf_problems.py:200 +#: judge/pdf_problems.py:260 msgid "Page [page] of [topage]" msgstr "" -#: .\judge\utils\problem_data.py:63 +#: judge/pdf_problems.py:282 +#, python-format +msgid "Page %s of %s" +msgstr "" + +#: judge/tasks/contest.py:19 +msgid "Recalculating contest scores" +msgstr "" + +#: judge/tasks/contest.py:40 +msgid "Running MOSS" +msgstr "" + +#: judge/tasks/submission.py:45 +msgid "Modifying submissions" +msgstr "" + +#: judge/tasks/submission.py:58 +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 +#: judge/utils/problem_data.py:82 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: .\judge\utils\problem_data.py:87 +#: judge/utils/problem_data.py:87 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: .\judge\utils\problem_data.py:90 +#: judge/utils/problem_data.py:90 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: .\judge\utils\problem_data.py:115 +#: judge/utils/problem_data.py:115 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: .\judge\utils\problem_data.py:136 +#: judge/utils/problem_data.py:136 #, python-format msgid "Attempt to end batch outside of one in case #%d" msgstr "" -#: .\judge\utils\problem_data.py:154 +#: judge/utils/problem_data.py:154 msgid "How did you corrupt the zip path?" msgstr "" -#: .\judge\utils\problem_data.py:160 +#: judge/utils/problem_data.py:160 msgid "How did you corrupt the generator path?" msgstr "" -#: .\judge\utils\problems.py:76 +#: 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 "" -#: .\judge\utils\problems.py:86 -msgid "Other" +#: judge/utils/pwned.py:101 +msgid "Your password can't be a commonly used password." +msgstr "" + +#: judge/utils/pwned.py:102 +msgid "This password is too common." msgstr "" -#: .\judge\utils\problems.py:87 -msgid "Total" +#: 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] "" +msgstr[1] "" + +#: judge/utils/timedelta.py:53 +msgctxt "time format without day" +msgid "%h:%m:%s" +msgstr "" + +#: 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] "" +msgstr[1] "" + +#: judge/utils/timedelta.py:61 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "" +msgstr[1] "" + +#: judge/utils/timedelta.py:63 +msgctxt "hours and minutes" +msgid "%h:%m" msgstr "" -#: .\judge\views\blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "" -#: .\judge\views\comment.py:27 +#: judge/views/comment.py:27 msgid "Messing around, are we?" msgstr "" -#: .\judge\views\comment.py:59 +#: judge/views/comment.py:36 +msgid "You must solve at least one problem before you can vote." +msgstr "" + +#: judge/views/comment.py:66 msgid "You already voted." msgstr "" -#: .\judge\views\comment.py:116 .\judge\views\organization.py:282 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" -#: .\judge\views\comment.py:137 +#: judge/views/comment.py:150 msgid "Editing comment" msgstr "" -#: .\judge\views\contests.py:48 .\judge\views\contests.py:178 -#: .\judge\views\contests.py:181 .\judge\views\contests.py:308 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: .\judge\views\contests.py:49 .\judge\views\contests.py:179 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: .\judge\views\contests.py:72 .\judge\views\contests.py:322 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: .\judge\views\contests.py:182 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: .\judge\views\contests.py:185 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: .\judge\views\contests.py:236 +#: judge/views/contests.py:244 +msgid "Clone Contest" +msgstr "" + +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: .\judge\views\contests.py:237 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: .\judge\views\contests.py:241 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: .\judge\views\contests.py:242 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: .\judge\views\contests.py:298 +#: judge/views/contests.py:323 +msgid "Banned from joining" +msgstr "" + +#: judge/views/contests.py:324 +msgid "" +"You have been declared persona non grata for this contest. You are " +"permanently barred from joining this contest." +msgstr "" + +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: .\judge\views\contests.py:309 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: .\judge\views\contests.py:329 -msgid "ContestCalender requires integer year and month" +#: judge/views/contests.py:415 +msgid "ContestCalendar requires integer year and month" msgstr "" -#: .\judge\views\contests.py:504 -msgid "???" +#: judge/views/contests.py:455 +#, python-format +msgid "Contests in %(month)s" +msgstr "" + +#: judge/views/contests.py:455 +msgid "F Y" +msgstr "" + +#: judge/views/contests.py:502 +#, python-format +msgid "%s Statistics" msgstr "" -#: .\judge\views\contests.py:540 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: .\judge\views\contests.py:592 -msgid "Live" +#: judge/views/contests.py:683 +msgid "???" msgstr "" -#: .\judge\views\contests.py:600 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: .\judge\views\contests.py:601 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: .\judge\views\contests.py:610 .\templates\contest\contest-tabs.html:13 +#: judge/views/contests.py:707 +msgid "Live" +msgstr "" + +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: .\judge\views\contests.py:635 +#: judge/views/contests.py:763 +#, python-format +msgid "%s MOSS Results" +msgstr "" + +#: judge/views/contests.py:790 +#, python-format +msgid "Running MOSS for %s..." +msgstr "" + +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" -#: .\judge\views\error.py:14 +#: judge/views/error.py:14 msgid "404 error" msgstr "" -#: .\judge\views\error.py:15 +#: judge/views/error.py:15 #, python-format msgid "Could not find page \"%s\"" msgstr "" -#: .\judge\views\error.py:21 +#: judge/views/error.py:22 #, python-format msgid "no permission for %s" msgstr "" -#: .\judge\views\error.py:27 +#: judge/views/error.py:30 #, python-format msgid "corrupt page %s" msgstr "" -#: .\judge\views\language.py:12 .\templates\status\judge-status-table.html:9 -#: .\templates\status\status-tabs.html:5 +#: 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:43 .\judge\views\organization.py:46 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: .\judge\views\organization.py:44 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: .\judge\views\organization.py:47 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: .\judge\views\organization.py:62 .\judge\views\register.py:35 -#: .\templates\organization\list.html:15 .\templates\user\user-list-tabs.html:5 +#: judge/views/organization.py:71 judge/views/register.py:33 +#: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: .\judge\views\organization.py:83 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: .\judge\views\organization.py:113 .\judge\views\organization.py:115 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: .\judge\views\organization.py:113 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: .\judge\views\organization.py:115 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: .\judge\views\organization.py:124 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: .\judge\views\organization.py:124 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: .\judge\views\organization.py:148 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: .\judge\views\organization.py:164 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: .\judge\views\organization.py:193 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: .\judge\views\organization.py:224 +#: judge/views/organization.py:238 #, python-format msgid "" "Your organization can only receive %d more members. You cannot approve %d " "users." msgstr "" -#: .\judge\views\organization.py:236 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: .\judge\views\organization.py:237 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: .\judge\views\organization.py:267 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: .\judge\views\organization.py:290 .\judge\views\organization.py:298 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: .\judge\views\organization.py:291 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: .\judge\views\organization.py:299 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: .\judge\views\organization.py:304 .\judge\views\organization.py:308 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: .\judge\views\organization.py:305 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: .\judge\views\organization.py:309 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: .\judge\views\problem.py:72 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: .\judge\views\problem.py:73 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: .\judge\views\problem.py:109 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: .\judge\views\problem.py:112 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: .\judge\views\problem.py:271 .\templates\contest\contest.html:79 -#: .\templates\user\user-tabs.html:5 .\templates\user\users-table.html:22 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 +#: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: .\judge\views\problem.py:527 +#: judge/views/problem.py:562 judge/views/problem.py:570 +#, python-format +msgid "Submit to %s" +msgstr "" + +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: .\judge\views\problem.py:528 +#: judge/views/problem.py:620 msgid "" "You have been declared persona non grata for this problem. You are " "permanently barred from submitting this problem." msgstr "" -#: .\judge\views\problem.py:539 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: .\judge\views\problem.py:540 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: .\judge\views\problem.py:595 .\judge\views\problem.py:598 -#, python-format -msgid "Submit to %(problem)s" +#: judge/views/problem.py:693 +msgid "Clone Problem" msgstr "" -#: .\judge\views\problem_data.py:36 +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + +#: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" -#: .\judge\views\problem_data.py:38 +#: judge/views/problem_data.py:39 msgid "Checker arguments is invalid JSON" msgstr "" -#: .\judge\views\problem_data.py:45 +#: judge/views/problem_data.py:46 msgid "Your zip file is invalid!" msgstr "" -#: .\judge\views\problem_data.py:102 +#: judge/views/problem_data.py:104 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: .\judge\views\problem_data.py:105 +#: judge/views/problem_data.py:107 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: .\judge\views\problem_data.py:140 +#: judge/views/problem_data.py:142 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: .\judge\views\problem_data.py:143 -#, python-brace-format -msgid "Editing data for {0}" -msgstr "" - -#: .\judge\views\problem_data.py:147 +#: judge/views/problem_data.py:145 #, python-format msgid "Editing data for %s" msgstr "" -#: .\judge\views\problem_data.py:242 .\judge\views\problem_data.py:243 +#: judge/views/problem_data.py:243 judge/views/problem_data.py:244 #, python-format msgid "Generated init.yml for %s" msgstr "" -#: .\judge\views\ranked_submission.py:59 +#: judge/views/problem_manage.py:50 judge/views/problem_manage.py:53 +#, python-format +msgid "Managing submissions for %s" +msgstr "" + +#: judge/views/problem_manage.py:95 +#, python-format +msgid "Rejudging selected submissions for %s..." +msgstr "" + +#: judge/views/problem_manage.py:110 +#, python-format +msgid "Rescoring all submissions for %s..." +msgstr "" + +#: judge/views/problem_manage.py:119 +#, 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 #, python-format msgid "Best solutions for %s" msgstr "" -#: .\judge\views\ranked_submission.py:62 +#: judge/views/ranked_submission.py:70 #, python-brace-format msgid "Best solutions for {0}" msgstr "" -#: .\judge\views\ranked_submission.py:72 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: .\judge\views\ranked_submission.py:74 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: .\judge\views\ranked_submission.py:79 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: .\judge\views\ranked_submission.py:82 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: .\judge\views\register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: .\judge\views\register.py:29 -msgid "Real name (optional)" -msgstr "" - -#: .\judge\views\register.py:32 .\templates\user\edit-profile.html:108 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: .\judge\views\register.py:39 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: .\judge\views\register.py:46 +#: judge/views/register.py:44 #, python-format msgid "" "The email address \"%s\" is already taken. Only one registration is allowed " "per address." msgstr "" -#: .\judge\views\register.py:52 +#: judge/views/register.py:50 msgid "" "Your email provider is not allowed due to history of abuse. Please use a " "reputable email provider." msgstr "" -#: .\judge\views\register.py:58 .\judge\views\register.py:97 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: .\judge\views\register.py:108 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" -#: .\judge\views\stats.py:94 +#: judge/views/stats.py:67 msgid "Language statistics" msgstr "" -#: .\judge\views\status.py:24 .\templates\submission\list.html:222 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" -#: .\judge\views\status.py:109 +#: judge/views/status.py:109 msgid "Version matrix" msgstr "" -#: .\judge\views\submission.py:56 .\judge\views\submission.py:63 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: .\judge\views\submission.py:155 .\judge\views\submission.py:156 -#: .\templates\problem\problem.html:111 +#: judge/views/submission.py:205 judge/views/submission.py:206 +#: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: .\judge\views\submission.py:287 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: .\judge\views\submission.py:288 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: .\judge\views\submission.py:318 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: .\judge\views\submission.py:339 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: .\judge\views\submission.py:370 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: .\judge\views\submission.py:371 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: .\judge\views\submission.py:445 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: .\judge\views\submission.py:464 +#: judge/views/submission.py:554 +#, python-format +msgid "My submissions in %(contest)s" +msgstr "" + +#: judge/views/submission.py:555 +#, python-format +msgid "%(user)s's submissions in %(contest)s" +msgstr "" + +#: judge/views/submission.py:569 +#, python-brace-format +msgid "My submissions in {0}" +msgstr "" + +#: judge/views/submission.py:571 +#, python-brace-format +msgid "{0}'s submissions in {2}" +msgstr "" + +#: judge/views/submission.py:597 #, python-brace-format msgid "" "{0}'s submissions for {2} in {4}" msgstr "" -#: .\judge\views\submission.py:469 +#: judge/views/submission.py:602 #, python-brace-format msgid "" "{0}'s submissions for problem {2} in {3}" "" msgstr "" -#: .\judge\views\ticket.py:37 .\judge\views\ticket.py:43 +#: judge/views/ticket.py:33 judge/views/ticket.py:39 msgid "Ticket title" msgstr "" -#: .\judge\views\ticket.py:44 +#: judge/views/ticket.py:40 msgid "Issue description" msgstr "" -#: .\judge\views\ticket.py:102 .\judge\views\ticket.py:105 +#: 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 "" -#: .\judge\views\ticket.py:151 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: .\judge\views\ticket.py:258 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: .\judge\views\ticket.py:307 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: .\judge\views\ticket.py:308 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: .\judge\views\ticket.py:309 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: .\judge\views\ticket.py:310 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: .\judge\views\user.py:70 +#: judge/views/ticket.py:325 +#, python-format +msgid "New Ticket Message For: %s" +msgstr "" + +#: judge/views/two_factor.py:49 +msgid "Enable Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 +msgid "Disable Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:165 +msgid "Invalid WebAuthn response" +msgstr "" + +#: judge/views/two_factor.py:168 +msgid "Invalid name" +msgstr "" + +#: judge/views/two_factor.py:221 +msgid "Staff may not disable 2FA" +msgstr "" + +#: judge/views/two_factor.py:229 +msgid "Perform Two-factor Authentication" +msgstr "" + +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: .\judge\views\user.py:70 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: .\judge\views\user.py:74 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: .\judge\views\user.py:75 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: .\judge\views\user.py:133 +#: judge/views/user.py:131 +msgid "Login" +msgstr "" + +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: .\judge\views\user.py:215 +#: judge/views/user.py:306 +msgid "Preparing your data..." +msgstr "" + +#: judge/views/user.py:310 templates/user/edit-profile.html:352 +msgid "Download your data" +msgstr "" + +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: .\judge\views\user.py:247 .\templates\admin\auth\user\change_form.html:14 -#: .\templates\admin\auth\user\change_form.html:17 .\templates\base.html:217 -#: .\templates\user\user-tabs.html:10 +#: 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 +#: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: .\judge\views\user.py:256 .\templates\user\user-list-tabs.html:4 +#: judge/views/user.py:414 +msgid "Generated API token for user" +msgstr "" + +#: judge/views/user.py:426 +msgid "Removed API token for user" +msgstr "" + +#: judge/views/user.py:436 +msgid "Generated scratch codes for user" +msgstr "" + +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: .\judge\views\widgets.py:53 .\judge\views\widgets.py:64 +#: judge/views/user.py:503 +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 "" -#: .\judge\views\widgets.py:74 +#: judge/views/widgets.py:72 msgid "Bad latitude or longitude" msgstr "" -#: .\templates\admin\judge\contest\change_form.html:14 -#: .\templates\admin\judge\contest\change_form.html:17 +#: 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 +#: templates/admin/judge/contest/change_list.html:9 msgid "Rate all ratable contests" msgstr "" -#: .\templates\admin\judge\profile\change_form.html:14 -#: .\templates\admin\judge\profile\change_form.html:17 +#: 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:67 +#: 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:209 +#: templates/base.html:214 #, python-format msgid "Hello, %(username)s." msgstr "" -#: .\templates\base.html:215 .\templates\comments\list.html:89 -#: .\templates\contest\contest-list-tabs.html:21 -#: .\templates\problem\problem-list-tabs.html:6 -#: .\templates\submission\info-base.html:12 -#: .\templates\submission\submission-list-tabs.html:15 -msgid "Admin" +#: templates/base.html:229 +msgid "Log out" msgstr "" -#: .\templates\base.html:224 -msgid "Log out" +#: templates/base.html:238 +#: templates/registration/password_reset_complete.html:4 +msgid "Log in" +msgstr "" + +#: templates/base.html:239 templates/registration/registration_form.html:175 +msgid "or" msgstr "" -#: .\templates\base.html:235 -msgid "Register" +#: templates/base.html:240 +msgid "Sign up" msgstr "" -#: .\templates\base.html:247 +#: templates/base.html:252 msgid "spectating" msgstr "" -#: .\templates\base.html:260 +#: templates/base.html:265 msgid "This site works best with JavaScript enabled." msgstr "" -#: .\templates\blog\content.html:13 .\templates\comments\list.html:68 -#: .\templates\comments\list.html:83 .\templates\contest\contest-tabs.html:17 -#: .\templates\contest\tag-title.html:9 .\templates\flatpages\admin_link.html:3 -#: .\templates\license.html:10 .\templates\problem\data.html:437 -#: .\templates\problem\editorial.html:14 +#: 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 +#: templates/blog/content.html:27 #, python-format msgid "" "\n" @@ -2562,7 +3371,7 @@ msgid "" " " msgstr "" -#: .\templates\blog\dashboard.html:21 +#: templates/blog/dashboard.html:21 #, python-format msgid "" "\n" @@ -2570,565 +3379,725 @@ msgid "" " " msgstr "" -#: .\templates\blog\list.html:85 +#: templates/blog/list.html:85 msgid "Blog" msgstr "" -#: .\templates\blog\list.html:87 +#: templates/blog/list.html:87 msgid "Events" msgstr "" -#: .\templates\blog\list.html:92 +#: templates/blog/list.html:92 msgid "News" msgstr "" -#: .\templates\blog\list.html:106 +#: templates/blog/list.html:106 #, python-brace-format msgid "posted on {time}" msgstr "" -#: .\templates\blog\list.html:130 .\templates\problem\problem.html:256 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: .\templates\blog\list.html:146 .\templates\problem\problem.html:267 +#: 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 +#: templates/blog/list.html:154 msgid "Ongoing contests" msgstr "" -#: .\templates\blog\list.html:172 +#: templates/blog/list.html:172 msgid "Upcoming contests" msgstr "" -#: .\templates\blog\list.html:189 +#: templates/blog/list.html:189 msgid "Comment stream" msgstr "" -#: .\templates\blog\list.html:208 +#: templates/blog/list.html:209 msgid "New problems" msgstr "" -#: .\templates\blog\list.html:225 +#: templates/blog/list.html:226 msgid "My open tickets" msgstr "" -#: .\templates\blog\list.html:246 +#: templates/blog/list.html:247 msgid "New tickets" msgstr "" -#: .\templates\comments\list.html:2 +#: templates/comments/list.html:2 templates/user/prepare-data.html:97 msgid "Comments" msgstr "" -#: .\templates\comments\list.html:18 .\templates\comments\list.html:27 +#: templates/comments/list.html:18 templates/comments/list.html:27 msgid "Please login to vote" msgstr "" -#: .\templates\comments\list.html:40 +#: templates/comments/list.html:47 #, python-brace-format msgid "commented on {time}" msgstr "" -#: .\templates\comments\list.html:49 +#: templates/comments/list.html:56 #, python-format msgid "edit %(edits)s" msgstr "" -#: .\templates\comments\list.html:51 .\templates\comments\media-js.html:71 +#: templates/comments/list.html:58 templates/comments/media-js.html:96 msgid "edited" msgstr "" -#: .\templates\comments\list.html:60 +#: templates/comments/list.html:67 msgid "Link" msgstr "" -#: .\templates\comments\list.html:73 .\templates\comments\list.html:80 +#: templates/comments/list.html:80 templates/comments/list.html:87 msgid "Reply" msgstr "" -#: .\templates\comments\list.html:86 +#: 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 +#: 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 "" + +#: templates/comments/list.html:131 msgid "There are no comments at the moment." msgstr "" -#: .\templates\comments\list.html:117 +#: templates/comments/list.html:137 msgid "New comment" msgstr "" -#: .\templates\comments\list.html:131 +#: templates/comments/list.html:151 msgid "Invalid comment body." msgstr "" -#: .\templates\comments\list.html:139 +#: templates/comments/list.html:159 msgid "Post!" msgstr "" -#: .\templates\comments\media-js.html:66 +#: templates/comments/list.html:167 +msgid "Comments are disabled on this page." +msgstr "" + +#: templates/comments/media-js.html:38 +msgid "Replying to comment" +msgstr "" + +#: templates/comments/media-js.html:91 #, python-brace-format msgid "edit {edits}" msgstr "" -#: .\templates\comments\media-js.html:69 +#: templates/comments/media-js.html:94 msgid "original" msgstr "" -#: .\templates\contest\access_code.html:26 +#: 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 +#: templates/contest/access_code.html:29 msgid "Please enter your access code:" msgstr "" -#: .\templates\contest\access_code.html:32 +#: templates/contest/access_code.html:32 msgid "Join Contest" msgstr "" -#: .\templates\contest\calendar.html:6 -#, python-format -msgid "Contests in %(month)s" -msgstr "" - -#: .\templates\contest\calendar.html:13 +#: templates/contest/calendar.html:12 msgid "Sunday" msgstr "" -#: .\templates\contest\calendar.html:14 +#: templates/contest/calendar.html:13 msgid "Monday" msgstr "" -#: .\templates\contest\calendar.html:15 +#: templates/contest/calendar.html:14 msgid "Tuesday" msgstr "" -#: .\templates\contest\calendar.html:16 +#: templates/contest/calendar.html:15 msgid "Wednesday" msgstr "" -#: .\templates\contest\calendar.html:17 +#: templates/contest/calendar.html:16 msgid "Thursday" msgstr "" -#: .\templates\contest\calendar.html:18 +#: templates/contest/calendar.html:17 msgid "Friday" msgstr "" -#: .\templates\contest\calendar.html:19 +#: templates/contest/calendar.html:18 msgid "Saturday" msgstr "" -#: .\templates\contest\contest-list-tabs.html:7 +#: 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 +#: 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:18 -#: .\templates\problem\problem-list-tabs.html:5 +#: templates/contest/contest-list-tabs.html:21 +#: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "" -#: .\templates\contest\contest-list-tabs.html:19 +#: templates/contest/contest-list-tabs.html:22 msgid "Calendar" msgstr "" -#: .\templates\contest\contest-tabs.html:4 +#: templates/contest/contest-tabs.html:4 msgid "Info" msgstr "" -#: .\templates\contest\contest-tabs.html:8 +#: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 +#: templates/submission/list.html:336 +msgid "Statistics" +msgstr "" + +#: templates/contest/contest-tabs.html:11 msgid "Rankings" msgstr "" -#: .\templates\contest\contest-tabs.html:10 +#: templates/contest/contest-tabs.html:16 msgid "Hidden Rankings" msgstr "" -#: .\templates\contest\contest-tabs.html:26 -#: .\templates\contest\contest-tabs.html:40 +#: templates/contest/contest-tabs.html:21 +msgid "MOSS" +msgstr "" + +#: 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:30 .\templates\contest\list.html:209 +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 msgid "Virtual join" msgstr "" -#: .\templates\contest\contest-tabs.html:38 +#: templates/contest/contest-tabs.html:56 msgid "Stop spectating" msgstr "" -#: .\templates\contest\contest-tabs.html:45 +#: templates/contest/contest-tabs.html:65 msgid "Spectate contest" msgstr "" -#: .\templates\contest\contest-tabs.html:48 -#: .\templates\contest\contest-tabs.html:51 +#: templates/contest/contest-tabs.html:72 msgid "Join contest" msgstr "" -#: .\templates\contest\contest-tabs.html:57 -msgid "Login to participate" +#: templates/contest/contest-tabs.html:81 +msgid "Log in to participate" msgstr "" -#: .\templates\contest\contest.html:37 +#: templates/contest/contest.html:37 msgid "Participating virtually." msgstr "" -#: .\templates\contest\contest.html:43 +#: templates/contest/contest.html:43 msgid "Contest is over." msgstr "" -#: .\templates\contest\contest.html:59 .\templates\contest\contest.html:63 +#: templates/contest/contest.html:59 templates/contest/contest.html:63 msgid "F j, Y, G:i T" msgstr "" -#: .\templates\contest\contest.html:59 +#: 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 +#: templates/contest/contest.html:63 #, python-format msgid "%(length)s long starting on %(start_time)s" msgstr "" -#: .\templates\contest\contest.html:85 +#: templates/contest/contest.html:85 msgid "AC Rate" msgstr "" -#: .\templates\contest\contest.html:86 .\templates\contest\list.html:98 -#: .\templates\contest\list.html:185 .\templates\problem\list.html:212 -#: .\templates\problem\list.html:238 +#: templates/contest/contest.html:86 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 msgid "Users" msgstr "" -#: .\templates\contest\contest.html:99 +#: templates/contest/contest.html:88 +msgid "Editorials" +msgstr "" + +#: templates/contest/contest.html:114 msgid "Editorial" msgstr "" -#: .\templates\contest\list.html:27 .\templates\contest\media-js.html:9 +#: templates/contest/list.html:31 templates/contest/media-js.html:9 msgid "Are you sure you want to join?" msgstr "" -#: .\templates\contest\list.html:28 +#: 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:93 -msgid "Ongoing Contests" +#: templates/contest/list.html:65 +msgid "hidden" msgstr "" -#: .\templates\contest\list.html:97 .\templates\contest\list.html:153 -#: .\templates\contest\list.html:184 -msgid "Contest" +#: templates/contest/list.html:78 +msgid "private" msgstr "" -#: .\templates\contest\list.html:132 +#: templates/contest/list.html:83 +msgid "rated" +msgstr "" + +#: templates/contest/list.html:131 msgid "Spectate" msgstr "" -#: .\templates\contest\list.html:136 +#: templates/contest/list.html:137 msgid "Join" msgstr "" -#: .\templates\contest\list.html:148 +#: templates/contest/list.html:147 +msgid "Active Contests" +msgstr "" + +#: templates/contest/list.html:151 templates/contest/list.html:193 +#: templates/contest/list.html:231 templates/contest/list.html:268 +msgid "Contest" +msgstr "" + +#: templates/contest/list.html:189 +msgid "Ongoing Contests" +msgstr "" + +#: templates/contest/list.html:226 msgid "Upcoming Contests" msgstr "" -#: .\templates\contest\list.html:175 +#: templates/contest/list.html:254 msgid "There are no scheduled contests at this time." msgstr "" -#: .\templates\contest\list.html:180 +#: templates/contest/list.html:260 msgid "Past Contests" msgstr "" -#: .\templates\contest\media-js.html:4 +#: templates/contest/media-js.html:4 msgid "Are you sure you want to leave?" msgstr "" -#: .\templates\contest\media-js.html:5 +#: 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 +#: templates/contest/media-js.html:10 msgid "" "Joining a contest starts your timer, after which it becomes unstoppable." msgstr "" -#: .\templates\contest\private.html:4 +#: templates/contest/moss.html:28 +msgid "Are you sure you want MOSS the contest?" +msgstr "" + +#: templates/contest/moss.html:33 +msgid "Are you sure you want to delete the MOSS results?" +msgstr "" + +#: templates/contest/moss.html:60 +msgid "No submissions" +msgstr "" + +#: templates/contest/moss.html:74 +msgid "Re-MOSS contest" +msgstr "" + +#: templates/contest/moss.html:82 +msgid "Delete MOSS results" +msgstr "" + +#: templates/contest/private.html:5 +msgid "This contest is private to specific users." +msgstr "" + +#: templates/contest/private.html:10 +msgid "Additionally, only the following organizations may access this contest:" +msgstr "" + +#: templates/contest/private.html:12 msgid "Only the following organizations may access this contest:" msgstr "" -#: .\templates\contest\ranking-table.html:27 +#: templates/contest/ranking-table.html:7 +msgid "Organization" +msgstr "" + +#: templates/contest/ranking-table.html:27 #, python-brace-format msgid "Started on {time}" msgstr "" -#: .\templates\contest\ranking-table.html:30 +#: templates/contest/ranking-table.html:30 msgid "Participation ended." msgstr "" -#: .\templates\contest\ranking.html:232 +#: 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:236 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" -#: .\templates\license.html:12 +#: templates/contest/stats.html:38 +msgid "Problem Status Distribution" +msgstr "" + +#: templates/contest/stats.html:43 +msgid "Problem AC Rate" +msgstr "" + +#: 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 "" + +#: 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 +#: 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 +#: 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 +#: 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 +#: 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 +#: 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 +#: templates/newsletter/subscription_unsubscribe_user.html:17 msgid "Do you want to unsubscribe from this newsletter?" msgstr "" -#: .\templates\newsletter\subscription_unsubscribe_user.html:21 +#: 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 +#: 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 +#: 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 "" -#: .\templates\newsletter\subscription_update.html:14 +#: templates/newsletter/subscription_update.html:14 msgid "Update subscription" msgstr "" -#: .\templates\newsletter\subscription_update_activated.html:8 +#: templates/newsletter/subscription_update_activated.html:8 msgid "Your subscription has successfully been updated." msgstr "" -#: .\templates\newsletter\subscription_update_email_sent.html:8 +#: 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 "" -#: .\templates\organization\edit.html:46 -#: .\templates\organization\requests\pending.html:41 -#: .\templates\ticket\edit-notes.html:4 +#: templates/organization/edit.html:47 +#: templates/organization/requests/pending.html:34 +#: templates/ticket/edit-notes.html:4 msgid "Update" msgstr "" -#: .\templates\organization\home.html:8 +#: templates/organization/home.html:7 +msgid "Are you sure you want to leave this organization?" +msgstr "" + +#: templates/organization/home.html:9 +msgid "You will have to rejoin to show up on the organization leaderboard." +msgstr "" + +#: templates/organization/home.html:11 +msgid "You will have to request membership in order to join again." +msgstr "" + +#: templates/organization/home.html:24 msgid "Leave organization" msgstr "" -#: .\templates\organization\home.html:11 +#: templates/organization/home.html:29 msgid "Join organization" msgstr "" -#: .\templates\organization\home.html:14 +#: templates/organization/home.html:33 msgid "Request membership" msgstr "" -#: .\templates\organization\home.html:21 +#: templates/organization/home.html:39 msgid "Edit organization" msgstr "" -#: .\templates\organization\home.html:25 +#: templates/organization/home.html:43 msgid "View requests" msgstr "" -#: .\templates\organization\home.html:32 +#: templates/organization/home.html:50 msgid "Admin organization" msgstr "" -#: .\templates\organization\home.html:37 +#: templates/organization/home.html:55 msgid "View members" msgstr "" -#: .\templates\organization\list.html:23 -#: .\templates\status\language-list.html:33 .\templates\ticket\list.html:245 -msgid "ID" -msgstr "" - -#: .\templates\organization\list.html:24 -#: .\templates\status\language-list.html:34 +#: templates/organization/list.html:23 templates/status/language-list.html:35 msgid "Name" msgstr "" -#: .\templates\organization\list.html:25 +#: templates/organization/list.html:24 msgid "Members" msgstr "" -#: .\templates\organization\new.html:10 .\templates\ticket\new.html:36 +#: templates/organization/new.html:10 templates/ticket/new.html:39 msgid "Create" msgstr "" -#: .\templates\organization\requests\detail.html:13 +#: templates/organization/requests/detail.html:13 msgid "User:" msgstr "" -#: .\templates\organization\requests\detail.html:17 +#: templates/organization/requests/detail.html:17 msgid "Organization:" msgstr "" -#: .\templates\organization\requests\detail.html:25 +#: templates/organization/requests/detail.html:25 msgid "Time:" msgstr "" -#: .\templates\organization\requests\detail.html:29 +#: templates/organization/requests/detail.html:29 msgid "Reason:" msgstr "" -#: .\templates\organization\requests\log.html:11 -#: .\templates\organization\requests\pending.html:21 +#: 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:22 +#: 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:44 +#: 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:24 -#: .\templates\problem\data.html:401 +#: templates/organization/requests/pending.html:17 +#: templates/problem/data.html:392 msgid "Delete?" msgstr "" -#: .\templates\organization\requests\request.html:18 +#: templates/organization/requests/request.html:18 msgid "Your reason for joining:" msgstr "" -#: .\templates\organization\requests\request.html:20 +#: templates/organization/requests/request.html:20 msgid "Request" msgstr "" -#: .\templates\organization\requests\tabs.html:4 +#: templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: .\templates\organization\requests\tabs.html:7 +#: templates/organization/requests/tabs.html:7 msgid "Log" msgstr "" -#: .\templates\organization\requests\tabs.html:10 +#: templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: .\templates\organization\requests\tabs.html:13 +#: templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: .\templates\organization\users-table.html:15 +#: templates/organization/users-table.html:15 msgid "Kick" msgstr "" -#: .\templates\problem\data.html:353 +#: 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 "" -#: .\templates\problem\data.html:369 +#: templates/problem/data.html:360 msgid "Show columns:" msgstr "" -#: .\templates\problem\data.html:372 .\templates\problem\data.html:396 +#: templates/problem/data.html:363 templates/problem/data.html:387 msgid "Output prefix" msgstr "" -#: .\templates\problem\data.html:376 .\templates\problem\data.html:397 +#: templates/problem/data.html:367 templates/problem/data.html:388 msgid "Output limit" msgstr "" -#: .\templates\problem\data.html:380 .\templates\problem\data.html:398 +#: templates/problem/data.html:371 templates/problem/data.html:389 msgid "Checker" msgstr "" -#: .\templates\problem\data.html:384 .\templates\problem\data.html:399 +#: templates/problem/data.html:375 templates/problem/data.html:390 msgid "Generator args" msgstr "" -#: .\templates\problem\data.html:391 +#: templates/problem/data.html:382 msgid "Type" msgstr "" -#: .\templates\problem\data.html:392 +#: templates/problem/data.html:383 msgid "Input file" msgstr "" -#: .\templates\problem\data.html:393 +#: templates/problem/data.html:384 msgid "Output file" msgstr "" -#: .\templates\problem\data.html:395 +#: templates/problem/data.html:386 msgid "Pretest?" msgstr "" -#: .\templates\problem\data.html:447 .\templates\problem\submit.html:253 +#: templates/problem/data.html:438 templates/problem/submit.html:258 msgid "Submit!" msgstr "" -#: .\templates\problem\data.html:448 +#: templates/problem/data.html:439 msgid "Add new case" msgstr "" -#: .\templates\problem\editorial.html:22 +#: 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 " @@ -3136,654 +4105,987 @@ msgid "" "problem yourself is a bannable offence." msgstr "" -#: .\templates\problem\list.html:62 +#: templates/problem/editorial.html:27 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:179 +#: templates/problem/list.html:183 msgid "Hot problems" msgstr "" -#: .\templates\problem\list.html:207 .\templates\problem\list.html:224 -#: .\templates\problem\search-form.html:30 -#: .\templates\user\user-problems.html:62 +#: templates/problem/list.html:205 templates/problem/list.html:222 +#: templates/problem/search-form.html:30 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: .\templates\problem\list.html:209 .\templates\problem\list.html:228 +#: templates/problem/list.html:207 templates/problem/list.html:226 msgid "Types" msgstr "" -#: .\templates\problem\list.html:235 +#: templates/problem/list.html:233 #, python-format msgid "AC %%" msgstr "" -#: .\templates\problem\problem.html:76 +#: 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 "" + +#: templates/problem/manage_submission.html:82 +msgid "End ID must be after start ID." +msgstr "" + +#: 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 "" + +#: 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 "" + +#: templates/problem/manage_submission.html:123 +msgid "Starting ID:" +msgstr "" + +#: templates/problem/manage_submission.html:127 +msgid "Ending ID:" +msgstr "" + +#: 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 "" + +#: templates/problem/manage_submission.html:162 +#, python-format +msgid "Are you sure you want to rescore %(count)d submissions?" +msgstr "" + +#: templates/problem/manage_submission.html:163 +msgid "Rescore all submissions" +msgstr "" + +#: templates/problem/problem.html:91 msgid "View as PDF" msgstr "" -#: .\templates\problem\problem.html:86 .\templates\problem\problem.html:96 -#: .\templates\problem\problem.html:101 +#: templates/problem/problem.html:101 templates/problem/problem.html:111 +#: templates/problem/problem.html:116 msgid "Submit solution" msgstr "" -#: .\templates\problem\problem.html:89 +#: templates/problem/problem.html:104 #, python-format msgid "%(counter)s submission left" msgid_plural "%(counter)s submissions left" msgstr[0] "" msgstr[1] "" -#: .\templates\problem\problem.html:97 +#: templates/problem/problem.html:112 msgid "0 submissions left" msgstr "" -#: .\templates\problem\problem.html:108 +#: templates/problem/problem.html:124 msgid "My submissions" msgstr "" -#: .\templates\problem\problem.html:112 +#: templates/problem/problem.html:128 msgid "Best submissions" msgstr "" -#: .\templates\problem\problem.html:115 +#: templates/problem/problem.html:131 msgid "Read editorial" msgstr "" -#: .\templates\problem\problem.html:120 +#: templates/problem/problem.html:136 msgid "Manage tickets" msgstr "" -#: .\templates\problem\problem.html:124 +#: templates/problem/problem.html:140 msgid "Edit problem" msgstr "" -#: .\templates\problem\problem.html:126 +#: templates/problem/problem.html:142 msgid "Edit test data" msgstr "" -#: .\templates\problem\problem.html:134 -msgid "Clone problem" +#: templates/problem/problem.html:147 +msgid "My tickets" +msgstr "" + +#: templates/problem/problem.html:155 +msgid "Manage submissions" msgstr "" -#: .\templates\problem\problem.html:141 +#: templates/problem/problem.html:168 msgid "Points:" msgstr "" -#: .\templates\problem\problem.html:144 .\templates\problem\problem.html:146 +#: templates/problem/problem.html:171 templates/problem/problem.html:173 msgid "(partial)" msgstr "" -#: .\templates\problem\problem.html:151 +#: templates/problem/problem.html:178 msgid "Time limit:" msgstr "" -#: .\templates\problem\problem.html:163 +#: templates/problem/problem.html:190 msgid "Memory limit:" msgstr "" -#: .\templates\problem\problem.html:179 -msgid "Author:" -msgid_plural "Authors:" -msgstr[0] "" -msgstr[1] "" - -#: .\templates\problem\problem.html:194 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" -#: .\templates\problem\problem.html:208 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: .\templates\problem\problem.html:216 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: .\templates\problem\problem.html:245 +#: 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:247 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" -#: .\templates\problem\search-form.html:2 +#: 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 +#: templates/problem/search-form.html:8 msgid "Search problems..." msgstr "" -#: .\templates\problem\search-form.html:14 +#: templates/problem/search-form.html:14 msgid "Full text search" msgstr "" -#: .\templates\problem\search-form.html:21 +#: templates/problem/search-form.html:21 msgid "Hide solved problems" msgstr "" -#: .\templates\problem\search-form.html:27 +#: templates/problem/search-form.html:27 msgid "Show problem types" msgstr "" -#: .\templates\problem\search-form.html:33 -#: .\templates\problem\search-form.html:35 -#: .\templates\submission\submission-list-tabs.html:4 +#: templates/problem/search-form.html:33 templates/problem/search-form.html:35 +#: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "" -#: .\templates\problem\search-form.html:46 +#: templates/problem/search-form.html:46 msgid "Problem types" msgstr "" -#: .\templates\problem\search-form.html:57 +#: templates/problem/search-form.html:57 msgid "Point range" msgstr "" -#: .\templates\problem\search-form.html:63 .\templates\submission\list.html:240 -#: .\templates\ticket\list.html:232 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 +#: templates/ticket/list.html:248 msgid "Go" msgstr "" -#: .\templates\problem\search-form.html:64 +#: templates/problem/search-form.html:64 msgid "Random" msgstr "" -#: .\templates\problem\statistics-table.html:1 .\templates\stats\base.html:11 -msgid "Statistics" +#: templates/problem/submit.html:117 +msgid "Your source code must contain at most 65536 characters." msgstr "" -#: .\templates\problem\submit.html:193 +#: 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 "" -#: .\templates\problem\submit.html:204 +#: templates/problem/submit.html:215 #, python-format -msgid "" -"\n" -" You have %(left)s submission left\n" -" " -msgid_plural "" -"\n" -" You have %(left)s submissions left\n" -" " +msgid "You have %(left)s submission left" +msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: .\templates\problem\submit.html:213 +#: templates/problem/submit.html:220 msgid "You have 0 submissions left" msgstr "" -#: .\templates\problem\submit.html:251 +#: templates/problem/submit.html:254 msgid "No judge is available for this problem." msgstr "" -#: .\templates\registration\activate.html:3 +#: templates/registration/activate.html:3 #, python-format msgid "%(key)s is an invalid activation key." msgstr "" -#: .\templates\registration\activation_complete.html:3 +#: templates/registration/activation_complete.html:3 msgid "Your account has been successfully activated." msgstr "" -#: .\templates\registration\login.html:46 +#: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" -#: .\templates\registration\login.html:64 +#: templates/registration/login.html:53 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" -#: .\templates\registration\login.html:67 +#: templates/registration/login.html:56 msgid "Forgot your password?" msgstr "" -#: .\templates\registration\login.html:70 +#: templates/registration/login.html:59 msgid "Or log in with..." msgstr "" -#: .\templates\registration\logout.html:3 +#: templates/registration/logout.html:3 msgid "See you later!" msgstr "" -#: .\templates\registration\password_change_done.html:3 +#: templates/registration/password_change_done.html:3 msgid "Your password was sucessfully changed." msgstr "" -#: .\templates\registration\password_change_form.html:8 +#: templates/registration/password_change_form.html:13 msgid "Change Password" msgstr "" -#: .\templates\registration\password_reset.html:7 +#: templates/registration/password_reset.html:7 msgid "Send Reset Email" msgstr "" -#: .\templates\registration\password_reset_complete.html:3 +#: 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_complete.html:4 -msgid "Log in" +#: templates/registration/password_reset_confirm.html:9 +msgid "Reset Password" msgstr "" -#: .\templates\registration\password_reset_confirm.html:9 -msgid "Reset Password" +#: templates/registration/password_reset_confirm.html:12 +msgid "Invalid password reset link." msgstr "" -#: .\templates\registration\password_reset_done.html:4 +#: 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 +#: 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 "" -#: .\templates\registration\password_reset_email.txt:1 +#: 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 "" + +#: 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 "" + +#: 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 "" -#: .\templates\registration\password_reset_email.txt:3 +#: 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 +#: templates/registration/password_reset_email.txt:7 msgid "Your username, in case you've forgotten:" msgstr "" -#: .\templates\registration\password_reset_email.txt:9 +#: templates/registration/password_reset_email.txt:9 msgid "Thanks for using our site!" msgstr "" -#: .\templates\registration\password_reset_email.txt:11 +#: templates/registration/password_reset_email.txt:11 #, python-format msgid "The %(site_name)s team" msgstr "" -#: .\templates\registration\password_reset_subject.txt:1 +#: templates/registration/password_reset_subject.txt:1 #, python-format msgid "Password reset on %(site_name)s" msgstr "" -#: .\templates\registration\profile_creation.html:36 -#: .\templates\registration\username_select.html:7 +#: templates/registration/profile_creation.html:36 +#: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" -#: .\templates\registration\registration_complete.html:3 +#: 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:162 +#: templates/registration/registration_form.html:164 msgid "(again, for confirmation)" msgstr "" -#: .\templates\registration\registration_form.html:169 +#: templates/registration/registration_form.html:171 msgid "(select your closest major city)" msgstr "" -#: .\templates\registration\registration_form.html:173 -msgid "or" -msgstr "" - -#: .\templates\registration\registration_form.html:174 +#: templates/registration/registration_form.html:176 msgid "pick from map" msgstr "" -#: .\templates\registration\registration_form.html:179 +#: templates/registration/registration_form.html:181 msgid "Default language" msgstr "" -#: .\templates\registration\registration_form.html:182 -#: .\templates\user\edit-profile.html:156 +#: templates/registration/registration_form.html:184 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" -#: .\templates\registration\registration_form.html:188 -#: .\templates\user\edit-profile.html:126 +#: templates/registration/registration_form.html:190 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" -#: .\templates\registration\registration_form.html:202 +#: templates/registration/registration_form.html:204 msgid "By registering, you agree to our" msgstr "" -#: .\templates\registration\registration_form.html:203 +#: templates/registration/registration_form.html:205 msgid "Terms & Conditions" msgstr "" -#: .\templates\registration\registration_form.html:206 +#: templates/registration/registration_form.html:208 msgid "Register!" msgstr "" -#: .\templates\stats\language.html:44 -msgid "Submission Statistics" +#: templates/registration/totp_disable.html:31 +msgid "" +"To protect your account, you must first authenticate before you can disable " +"Two Factor Authentication." msgstr "" -#: .\templates\stats\language.html:50 -msgid "Submissions by Language" +#: 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 "" -#: .\templates\stats\language.html:56 -msgid "AC Submissions by Language" +#: templates/registration/totp_disable.html:41 +msgid "Disable Two Factor Authentication" msgstr "" -#: .\templates\stats\language.html:62 -msgid "Language AC Rate" +#: 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 "" + +#: 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 "" + +#: templates/registration/totp_enable.html:90 +msgid "Refresh Two Factor Authentication" msgstr "" -#: .\templates\status\judge-status-table.html:2 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 +#: templates/user/edit-profile.html:165 +msgid "WebAuthn is not supported by your browser." +msgstr "" + +#: 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 "" + +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" +msgstr "" + +#: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 +#, python-format +msgid "" +"If you lost your authentication device and are unable to use your scratch " +"codes, please contact us at %(email)s." +msgstr "" + +#: templates/stats/language.html:11 +msgid "Submission Statistics" +msgstr "" + +#: templates/stats/language.html:21 +msgid "AC Submissions by Language" +msgstr "" + +#: templates/status/judge-status-table.html:2 msgid "Judge" msgstr "" -#: .\templates\status\judge-status-table.html:4 +#: templates/status/judge-status-table.html:4 msgid "Online" msgstr "" -#: .\templates\status\judge-status-table.html:6 +#: templates/status/judge-status-table.html:6 msgid "Uptime" msgstr "" -#: .\templates\status\judge-status-table.html:7 +#: templates/status/judge-status-table.html:7 msgid "Ping" msgstr "" -#: .\templates\status\judge-status-table.html:8 +#: 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 +#: 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 +#: templates/status/judge-status-table.html:64 msgid "There are no judges available at this time." msgstr "" -#: .\templates\status\language-list.html:35 +#: templates/status/language-list.html:34 templates/ticket/list.html:259 +msgid "ID" +msgstr "" + +#: templates/status/language-list.html:36 msgid "Runtime Info" msgstr "" -#: .\templates\status\status-tabs.html:4 +#: templates/status/status-tabs.html:4 msgid "Judges" msgstr "" -#: .\templates\status\status-tabs.html:6 +#: templates/status/status-tabs.html:6 msgid "Version Matrix" msgstr "" -#: .\templates\submission\internal-error-message.html:8 +#: 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 "" + +#: templates/submission/internal-error-message.html:8 msgid "An internal error occurred while grading." msgstr "" -#: .\templates\submission\internal-error-message.html:15 +#: templates/submission/internal-error-message.html:15 msgid "Error information" msgstr "" -#: .\templates\submission\list.html:60 +#: templates/submission/list.html:76 msgid "Filter by status..." msgstr "" -#: .\templates\submission\list.html:62 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: .\templates\submission\list.html:218 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: .\templates\submission\list.html:260 +#: 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:39 +#: templates/submission/row.html:44 #, python-format msgid "Case #%(case)s" msgstr "" -#: .\templates\submission\row.html:49 +#: templates/submission/row.html:54 msgid "view" msgstr "" -#: .\templates\submission\row.html:53 +#: templates/submission/row.html:59 msgid "rejudge" msgstr "" -#: .\templates\submission\row.html:58 +#: 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 +#: templates/submission/source.html:25 msgid "View status" msgstr "" -#: .\templates\submission\source.html:26 +#: templates/submission/source.html:26 msgid "View raw source" msgstr "" -#: .\templates\submission\source.html:28 .\templates\submission\status.html:61 +#: templates/submission/source.html:28 templates/submission/status.html:74 msgid "Resubmit" msgstr "" -#: .\templates\submission\status-testcases.html:10 +#: 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 +#: templates/submission/status-testcases.html:12 msgid "Your submission is being processed..." msgstr "" -#: .\templates\submission\status-testcases.html:14 +#: templates/submission/status-testcases.html:14 msgid "Compilation Error" msgstr "" -#: .\templates\submission\status-testcases.html:18 +#: templates/submission/status-testcases.html:18 msgid "Compilation Warnings" msgstr "" -#: .\templates\submission\status-testcases.html:23 +#: templates/submission/status-testcases.html:23 msgid "Pretest Execution Results" msgstr "" -#: .\templates\submission\status-testcases.html:25 +#: templates/submission/status-testcases.html:25 msgid "Execution Results" msgstr "" -#: .\templates\submission\status-testcases.html:31 +#: templates/submission/status-testcases.html:51 msgid "Batch " msgstr "" -#: .\templates\submission\status-testcases.html:43 +#: templates/submission/status-testcases.html:64 msgid "Case" msgstr "" -#: .\templates\submission\status-testcases.html:45 +#: templates/submission/status-testcases.html:66 msgid "Pretest" msgstr "" -#: .\templates\submission\status-testcases.html:47 +#: templates/submission/status-testcases.html:68 msgid "Test case" msgstr "" -#: .\templates\submission\status-testcases.html:79 +#: templates/submission/status-testcases.html:101 msgid "Your output (clipped)" msgstr "" -#: .\templates\submission\status-testcases.html:99 +#: 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 runtime on single test case:" +msgstr "" + +#: templates/submission/status-testcases.html:143 msgid "Final pretest score:" msgstr "" -#: .\templates\submission\status-testcases.html:101 +#: templates/submission/status-testcases.html:145 msgid "Final score:" msgstr "" -#: .\templates\submission\status-testcases.html:115 +#: templates/submission/status-testcases.html:159 msgid "Passing pretests does not guarantee a full score on system tests." msgstr "" -#: .\templates\submission\status-testcases.html:118 +#: templates/submission/status-testcases.html:162 msgid "Submission aborted!" msgstr "" -#: .\templates\submission\status.html:59 +#: templates/submission/status.html:72 msgid "View source" msgstr "" -#: .\templates\submission\status.html:88 +#: templates/submission/status.html:100 +msgid "Press Ctrl-Enter or Command-Enter to abort." +msgstr "" + +#: templates/submission/status.html:102 msgid "Abort" msgstr "" -#: .\templates\submission\submission-list-tabs.html:6 +#: templates/submission/submission-list-tabs.html:6 msgid "Mine" msgstr "" -#: .\templates\submission\submission-list-tabs.html:9 +#: templates/submission/submission-list-tabs.html:9 msgid "Best" msgstr "" -#: .\templates\submission\submission-list-tabs.html:12 +#: templates/submission/submission-list-tabs.html:12 #, python-format msgid "%(user)s's" msgstr "" -#: .\templates\ticket\list.html:135 .\templates\ticket\ticket.html:257 +#: templates/ticket/list.html:135 templates/ticket/ticket.html:259 msgid "Reopened: " msgstr "" -#: .\templates\ticket\list.html:138 .\templates\ticket\ticket.html:258 +#: templates/ticket/list.html:138 templates/ticket/ticket.html:260 msgid "Closed: " msgstr "" -#: .\templates\ticket\list.html:205 +#: templates/ticket/list.html:221 msgid "Use desktop notification" msgstr "" -#: .\templates\ticket\list.html:211 +#: templates/ticket/list.html:227 msgid "Show my tickets only" msgstr "" -#: .\templates\ticket\list.html:215 +#: templates/ticket/list.html:231 msgid "Filing user" msgstr "" -#: .\templates\ticket\list.html:224 +#: templates/ticket/list.html:240 templates/ticket/ticket.html:360 msgid "Assignee" -msgstr "" +msgid_plural "Assignees" +msgstr[0] "" +msgstr[1] "" -#: .\templates\ticket\list.html:246 +#: templates/ticket/list.html:260 msgid "Title" msgstr "" -#: .\templates\ticket\list.html:248 .\templates\ticket\ticket.html:304 +#: templates/ticket/list.html:262 msgid "Assignees" msgstr "" -#: .\templates\ticket\new_problem.html:7 +#: templates/ticket/new_problem.html:7 msgid "Thanks for opening a ticket!" msgstr "" -#: .\templates\ticket\new_problem.html:9 +#: 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:298 +#: templates/ticket/ticket.html:345 +msgid "Post" +msgstr "" + +#: templates/ticket/ticket.html:353 msgid "Associated object" msgstr "" -#: .\templates\ticket\ticket.html:309 +#: templates/ticket/ticket.html:370 msgid "No one is assigned." msgstr "" -#: .\templates\ticket\ticket.html:315 +#: templates/ticket/ticket.html:376 msgid "Close ticket" msgstr "" -#: .\templates\ticket\ticket.html:317 +#: templates/ticket/ticket.html:378 msgid "Reopen ticket" msgstr "" -#: .\templates\ticket\ticket.html:321 +#: templates/ticket/ticket.html:382 msgid "Assignee notes" msgstr "" -#: .\templates\ticket\ticket.html:328 .\templates\widgets\select_all.html:4 +#: templates/ticket/ticket.html:389 templates/widgets/select_all.html:4 msgid "Nothing here." msgstr "" -#: .\templates\ticket\ticket.html:376 -msgid "Post" -msgstr "" - -#: .\templates\user\base-users-table.html:3 +#: templates/user/base-users-table.html:3 msgid "Rank" msgstr "" -#: .\templates\user\base-users.html:14 .\templates\user\base-users.html:69 +#: templates/user/base-users.html:14 templates/user/base-users.html:71 msgid "Search by handle..." msgstr "" -#: .\templates\user\edit-profile.html:91 -msgid "Display name" +#: templates/user/edit-profile.html:113 +msgid "Are you sure you want to generate or regenerate your API token?" +msgstr "" + +#: templates/user/edit-profile.html:114 +msgid "This will invalidate any previous API tokens." +msgstr "" + +#: 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 "" + +#: 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 "" + +#: 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:95 +#: 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:103 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: .\templates\user\edit-profile.html:112 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: .\templates\user\edit-profile.html:117 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: .\templates\user\edit-profile.html:141 -#: .\templates\user\edit-profile.html:142 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: .\templates\user\edit-profile.html:148 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: .\templates\user\edit-profile.html:164 +#: 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 "" + +#: 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 "" + +#: 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 "" -#: .\templates\user\edit-profile.html:168 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" -#: .\templates\user\pp-row.html:22 +#: templates/user/pp-row.html:24 #, python-format msgid "" "\n" @@ -3791,115 +5093,204 @@ msgid "" " " msgstr "" -#: .\templates\user\pp-row.html:27 +#: templates/user/pp-row.html:29 #, python-format msgid "%(pp).1fpp" msgstr "" -#: .\templates\user\pp-row.html:29 +#: templates/user/pp-row.html:31 #, python-format msgid "%(pp).0fpp" msgstr "" -#: .\templates\user\user-about.html:14 +#: 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:24 .\templates\user\user-tabs.html:4 +#: 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:31 +#: templates/user/user-about.html:40 msgid "You have not shared any information." msgstr "" -#: .\templates\user\user-about.html:33 +#: templates/user/user-about.html:42 msgid "This user has not shared any information." msgstr "" -#: .\templates\user\user-base.html:46 -#, python-format -msgid "%(count)d problems solved" +#: 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-base.html:48 +#: 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] "" +msgstr[1] "" + +#: templates/user/user-base.html:50 msgid "Rank by points:" msgstr "" -#: .\templates\user\user-base.html:50 +#: templates/user/user-base.html:53 msgid "Total points:" msgstr "" -#: .\templates\user\user-base.html:58 -msgid "View submissions" -msgstr "" +#: templates/user/user-base.html:67 +#, python-format +msgid "%(counter)s contest written" +msgid_plural "%(counter)s contests written" +msgstr[0] "" +msgstr[1] "" -#: .\templates\user\user-base.html:64 +#: templates/user/user-base.html:74 msgid "Rank by rating:" msgstr "" -#: .\templates\user\user-base.html:65 +#: templates/user/user-base.html:76 msgid "Rating:" msgstr "" -#: .\templates\user\user-base.html:66 +#: templates/user/user-base.html:77 msgid "Volatility:" msgstr "" -#: .\templates\user\user-base.html:67 +#: templates/user/user-base.html:78 msgid "Min. rating:" msgstr "" -#: .\templates\user\user-base.html:68 +#: templates/user/user-base.html:79 msgid "Max rating:" msgstr "" -#: .\templates\user\user-problems.html:35 -msgid "Points Breakdown" +#: templates/user/user-problems.html:37 +msgid "Points breakdown" msgstr "" -#: .\templates\user\user-problems.html:46 +#: templates/user/user-problems.html:43 msgid "Load more..." msgstr "" -#: .\templates\user\user-problems.html:50 +#: templates/user/user-problems.html:47 msgid "This user has not yet solved any problems." msgstr "" -#: .\templates\user\user-problems.html:56 -msgid "Authored Problems" +#: templates/user/user-problems.html:53 +msgid "Authored problems" msgstr "" -#: .\templates\user\user-problems.html:88 +#: templates/user/user-problems.html:85 msgid "Hide problems I've solved" msgstr "" -#: .\templates\user\user-problems.html:98 +#: templates/user/user-problems.html:95 #, python-format msgid "%(points).1f points" msgstr "" -#: .\templates\user\user-problems.html:104 -msgid "Score" -msgstr "" - -#: .\templates\user\user-problems.html:115 +#: templates/user/user-problems.html:112 #, python-format msgid "%(points)s / %(total)s" msgstr "" -#: .\templates\user\user-tabs.html:7 +#: templates/user/user-tabs.html:7 msgid "Impersonate" msgstr "" -#: .\templates\user\user-tabs.html:13 +#: templates/user/user-tabs.html:10 msgid "Admin User" msgstr "" -#: .\templates\user\user-tabs.html:16 +#: templates/user/user-tabs.html:13 msgid "Admin Profile" msgstr "" -#: .\templates\widgets\select_all.html:8 +#: templates/widgets/select_all.html:8 msgid "Check all" msgstr "" diff --git a/locale/en/LC_MESSAGES/djangojs.po b/locale/en/LC_MESSAGES/djangojs.po index 2396075508..17d69e329c 100644 --- a/locale/en/LC_MESSAGES/djangojs.po +++ b/locale/en/LC_MESSAGES/djangojs.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-08-21 17:54-0400\n" +"POT-Creation-Date: 2021-07-23 00:28+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,14 +18,14 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: .\resources\common.js:203 +#: resources/common.js:207 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "" msgstr[1] "" -#: .\resources\common.js:206 +#: resources/common.js:210 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "" diff --git a/locale/es/LC_MESSAGES/django.po b/locale/es/LC_MESSAGES/django.po index 0e3d754e2d..49a1a946ca 100644 --- a/locale/es/LC_MESSAGES/django.po +++ b/locale/es/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "Catalan" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Alemán" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Inglés" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Español" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Francés" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Croata" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Húngaro" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "Japonés" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Coreano" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "Portugués (Brasil)" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Rumano" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Ruso" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Serbio (Latino)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Turco" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Vietnamita" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Chino simplificado" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "Chino Tradicional" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Inicio" @@ -115,112 +115,112 @@ msgstr "Mostrar comentarios" msgid "Associated page" msgstr "Página asociada" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Concursos incluidos" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Problema" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "Ajustes" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Programación Horaria" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Detalles" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "Formato" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Puntuación" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "Acceso" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Justicia" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d concurso ha sido hecho visible con éxito" msgstr[1] "%d concursos han sido hechos visibles con éxito" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "Marcar concursos como visibles" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d concurso ha sido hecho invisible con éxito" msgstr[1] "%d concursos han sido hecho invisibles con éxito" -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "Marcar concursos como invisibles" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d concurso bloqueado exitosamente." msgstr[1] "%d concursos bloqueados exitosamente." -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "Bloquear envíos del concurso" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d concurso desbloqueado exitosamente." msgstr[1] "%d concursos desbloqueados exitosamente." -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "Desbloquear envíos del concurso" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "%d envío ha sido añadido a la cola para rejuzgar con éxito" msgstr[1] "%d envíos han sido añadidos a la cola para rejuzgar con éxito" -#: judge/admin/contest.py:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d participación recalculada." msgstr[1] "%d participaciones recalculadas." -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "Recalcular resultados" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "nombre de usuario" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "virtual" @@ -236,9 +236,9 @@ msgstr "Contenido" msgid "Summary" msgstr "Resumen" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "usuario" @@ -246,8 +246,8 @@ msgstr "usuario" msgid "object" msgstr "objeto" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Ver en el sitio web" @@ -255,69 +255,69 @@ msgstr "Ver en el sitio web" msgid "Describe the changes you made (optional)" msgstr "Describe los cambios que realizaste (opcional)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Redes Sociales" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Taxonomía" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Puntos" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Límites" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Lenguaje" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Historia" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Autores" -#: judge/admin/problem.py:191 +#: 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] "La fecha de publicación de %d problema se ha actualizado correctamente." msgstr[1] "La fecha de publicación de %d problemas se ha actualizado correctamente." -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "Establecer fecha de publicación a ahora" -#: judge/admin/problem.py:201 +#: 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 problema marcado exitosamente como público." msgstr[1] "%d problemas marcados exitosamente como públicos." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Marcar problema como publico" -#: judge/admin/problem.py:211 +#: 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 problema marcado como privado con éxito." msgstr[1] "%d problemas marcados como privados con éxito." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Marcar problemas como privados" @@ -325,35 +325,35 @@ msgstr "Marcar problemas como privados" msgid "timezone" msgstr "zona horaria" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Usuario" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Email" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Zona horaria" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "fecha de registro" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "se ha recalculado la puntuación de %d usuario" msgstr[1] "se ha recalculado la puntuación de %d usuarios" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Recalcular puntuaciones" @@ -506,115 +506,116 @@ msgstr "IOI" msgid "IOI (pre-2016)" msgstr "IOI (antes de 2016)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "Los tokens de la Two Factor Authentication tienen que ser 6 dígitos decimales" +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "Token de autenticación de dos pasos no válido." -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "Los códigos de Scratch deben tener 16 caracteres base32." -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "Código de acceso scratch inválido." -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "Subscribirse en las actualizaciones de los concursos" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Habilitar las actualizaciones experimentales" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "No puedes formar parte de más de {count} organizaciones públicas." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "¿Descargar comentarios?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "¿Descargar envíos?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "Filtrar por código glob del problema:" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "Dejar en blanco para incluir todos los envíos" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "Filtrar por resultado" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "Por favor selecciona por lo menos una cosa para descargar." -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "Cualquier juez" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Nombre de usuario" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Contraseña" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "Longitud de código inválida." -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "Respuesta WebAuthn inválida" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "Ningúna respuesta de WebAuthn emitida." -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "ID de credencial de WebAuthn inválida." -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "Token de autenticación de dos pasos no válido." -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "Debe especificar o totp_token o webauthn_response." -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "El código del problema debe ser ^[a-z0-9]+$" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "Ya existe un problema con este código" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "La id del concurso debe ser ^[a-z0-9]+$" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "Ya existe un concurso con esta llave primaria" @@ -694,7 +695,7 @@ msgid "comments" msgstr "comentarios" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "Editorial de %s" @@ -735,7 +736,7 @@ msgstr "descripción de la etiqueta" msgid "contest tag" msgstr "etiqueta del concurso" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "etiquetas del concurso" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "nombre del concurso" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Estas personas serán capaces de editar el concurso." +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +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 msgid "description" msgstr "descripción" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "problemas" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "hora de inicio" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "hora final" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "tiempo límite" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "publicidad visible" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "Debe establecerse incluso para publicaciones privadas de la organización, donde se determina si la publicación es visible para los miembros de las organizaciones especificadas." -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "concurso calificado" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Si esta publicación puede ser calificada." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "ver Marcador del concurso" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "Estos usuarios podrán ver el marcador." -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "sin comentarios" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "Usar el sistema de aclaración en vez de comentar." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "Puntuación mínima para el concurso" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "Puntuación máxima para el concurso" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "calificar todo" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "Calificar todos los usuarios que se unieron." -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "excluir de las calificaciones" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "privado a usuarios específicos" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "concursantes privados" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "Si es privado, sólo estes usuarios podrán ver el concurso" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "ocultar etiquetas de problemas" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "Si las etiquetas de problemas deberían estar ocultas de forma predeterminada." -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "ejecutar exámenes solamente" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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 los jueces solo deben calificar los exámenes previos, versus todos los casos de prueba. Se establece normalmente durante una presentación, luego se desactiva antes de volver a juzgar las presentaciones de los usuarios cuando finaliza el concurso." -#: judge/models/contest.py:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "privado para organizaciones" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "organizaciones" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "Es privado, sólo estas organizaciones pueden ver el concurso" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "Imagen de OpenGraph" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "Imagen que sobreescribe el logo" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "Esta imagen reemplazará el logo del sitio para los usuarios en el concurso" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "la cantidad de participantes en vivo" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "resumen del concurso" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "Texto sin formato, que se muestra en la etiqueta de metadescripción, por ejemplo, para las redes sociales." -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "código de acceso" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "Un código opcional para incitar a los concursantes antes de que se les permita unirse al concurso. Déjelo en blanco para desactivar." -#: judge/models/contest.py:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "persona no grata" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "Prohibe a los usuarios seleccionados de unirse al concurso" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "formato de concurso" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "el módulo de formato de concurso que va a usarse" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "configuración del formato de concurso" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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 objeto JSON que se usará como configuración para el módulo de concurso escogido. Déjalo vacío para no usar ninguno. El formato exacto depende de que formato de concurso hayas escogido" -#: judge/models/contest.py:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "bloquear el concurso" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." -msgstr "Evitar que los envíos de este concurso sean rejuzgados." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." +msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "Ver publicaciones privadas" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "Editar sus propias notas" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "Editar todas las publicaciones" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "Clonar concurso" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "Detectar plagios con MOSS" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "Calificar publicaciones" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "Código de acceso a las publicaciones" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "Crear concursos privados" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "Cambiar visibilidad del concurso" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "Editar script de etiqueta de problema del concurso" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "Cambiar el estado de bloqueo del concurso" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "concurso" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "concursos" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "concurso asociado" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "puntuación" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "tiempo acumulado" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "se ha descalificado" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "Si esta participación ha sido descalificada" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "campo de desempate" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "identificación de la participación virtual" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 significa no-virtual, en caso contrario la n-ésima participación virtual" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "datos específicos del formato de concurso" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "%s ver en %s" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "%s en %s, v%d" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s en %s" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "participación del concurso" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "participaciones del concurso" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "problema" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "puntos" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "parcial" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "está protegido" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "orden" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "anular la longitud del prefijo de salida" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Número máximo de envíos para este problema, o dejar en blanco para no poner límite." -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "¿Por qué incluir un problema que no puede enviarse?" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "problema de concurso" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "problemas del concurso" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "envío" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "participación" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "Si esta presentación funcionó sólo en pruebas previas." -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "presentación del concurso" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "presentaciones de concurso" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "rango" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "puntuación" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "volatilidad" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "último calificado" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "calificación del concurso" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "calificaciones del concurso" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "resultado del moss del concurso" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "resultados del moss del concurso" @@ -1203,7 +1220,7 @@ msgstr "elementos paternales" msgid "post title" msgstr "título de la publicación" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "autores" @@ -1211,7 +1228,7 @@ msgstr "autores" msgid "slug" msgstr "babosa (slug)" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "visibilidad pública" @@ -1247,34 +1264,6 @@ msgstr "post del blog" msgid "blog posts" msgstr "posts del blog" -#: judge/models/message.py:11 -msgid "message title" -msgstr "título del mensaje" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "cuerpo del mensaje" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "remitente" - -#: judge/models/message.py:14 -msgid "target" -msgstr "objetivo" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "hora del mensaje" - -#: judge/models/message.py:16 -msgid "read" -msgstr "leer" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "mensajes en el hilo" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "problema de categoría de nombre" msgid "problem type" msgstr "tipo del problema" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "tipos del problema" @@ -1304,7 +1293,7 @@ msgstr "problema de identificación del grupo" msgid "problem group name" msgstr "problema de identificación del nombre" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "grupo de problema" @@ -1324,7 +1313,7 @@ msgstr "enlace" msgid "full name" msgstr "nombre completo" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "nombre corto" @@ -1353,232 +1342,252 @@ msgstr "licencia" msgid "licenses" msgstr "licencias" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "código del problema" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "Un código corto y unico para el problema, para usar en la url despues de /problem/" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "nombre del problema" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "El nombre completa del problema, tal y como saldrá en la lista" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "cuerpo del problema" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "creadores" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Estos usuarios serán capaces de editar el problema, y serán listados como autores" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "curadores" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Estos usuarios serán capaces de editar el problema, pero no serán listados como autores" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "probadores" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "Estos usuarios podrán ver el problema privado, pero no podrán editarlo" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "El tipo de problema, tal y como se verá en la página del problema" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "El grupo del problema, visto como Categoría en la lista de problemas" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "El límite de tiempo para este problema, en segundos. Los segundos fraccionarios (por ejemplo, 1.5) están permitidos." -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "límite de memoria" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "La memoria límite para este problema, en kilobytes (e.g. 64mb = 65536 kilobytes)." -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Puntos otortgados por completar el problema. Si los puntos son parciales (pasar un caso de prueba da puntos aunque el resto no se hayan pasado) se muestran con el sufijo 'p'" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "permitir puntos parciales" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "lenguajes permitidos" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "Lista de lenguajes en el que se permite el envío" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "manejado manualmente" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "Si los jueces se les permite administrar los datos manualmente o no" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "fecha de publicación" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "No tiene la habilidad mágica para publicar automáticamente debido a la compatibilidad con versiones anteriores" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "Prohíbe a los usuarios seleccionados envíar soluciones a este problema" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "La licencia bajo la que este problema ha sido publicado" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "problemas de envío" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "número de usuarios" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "El número de usuarios que ha resuelto este problema" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "porcentaje de solucionados" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "permitir acceso completo al markdown" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "Si privado, solo estas organizaciones pueden ver el problema" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "Ver problemas ocultos" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "Editar problemas propios" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "Editar todos los problemas" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "Editar todos los problemas públicos" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "Editar problemas con markup completo" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "Clonar problema" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "Cambiar campo is_public" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "Cambiar campo is_manually_managed" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "Ver problemas privados para la organización" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "lenguaje" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "nombre traducido" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "descripción traducida" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "problemas de traducción" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "problemas de traducciones" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "problema aclarado" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "cuerpo de la aclaración" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "hora de la aclaración" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "límite de recursos específicos del lenguaje" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "límites de recursos específicos del lenguaje" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "problema asociado" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "fecha de publicación" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "contenido editorial" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "Ver soluciones ocultas" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "solución" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "soluciones" @@ -1690,112 +1699,112 @@ msgstr "valor del punto" msgid "case is pretest?" msgstr "¿Es este caso una prueba previa?" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "título de la organización" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "sufijo de la organización" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "Nombre de la organización tal y como se muestra en la URL" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "Se muestra junto al nombre de usuario durante los concursos" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "descripción de la organización" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "administradores" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "Aquellos que pueden editar esta organización" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "fecha de creación" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "¿es una organización abierta?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "Permitir la unión a la organización" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "tamaño máximo" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "Máxima cantidad de usuarios en esta organización, solo aplicable para organizaciones privadas" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "Código de acceso para estudiantes" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "Esta imagen reemplazará el logo del sitio para los usuarios que estén mirando la organización" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "Administrar organizaciones" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "Editar todas las organizaciones" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "onganización" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "usuario asociado" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "descripción propia" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "ubicación" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "lenguaje preferido" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "último tiempo de acceso" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "último IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "mostrar rango" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "Usuario normal" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "Creador de Problemas" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "Creador de Problemas" msgid "Admin" msgstr "Administrador" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "comentario en silencio" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "Algunos usuarios están en su mejor momento cuando están en silencio." -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "usuario no-listado" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "Este usuario no será puesto en los rankings" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "scrip de usuario" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "JavaScript definido por el usuario para la personalización del sitio." -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "concurso actual" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "motor matemático" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "el motor de renderizado utilizado para representar las matemáticas" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "TOTP de la Autenticación en dos pasos habilitado" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "activar autenticación de dos pasos basada en TOTP" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn de Autenticación en dos pasos habilitado" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "activar autenticación de dos pasos basada en WebAuthn" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "llave TOTP" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "llave con codificacion base32 de 32 carácteres para el TOTP " -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "la llave TOTP debe estar vacía o ser base32" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "códigos scratch" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "Array JSON de 16 códigos codificados en base32 de caracteres para los códigos scratch" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "Los códigos Scratch deben estar vacíos o ser un array JSON de 16 caracteres base32" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "Token API" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "Token de acceso a la API codificado con 64 caracteres hexadecimales" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "El Token API debe ser Ninguno o hexadecimal" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "notas internas" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "Notas para administradores sobre este usuario" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "última descarga de datos" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "Muestra las cosas que el equipo de desarrollo está haciendo actualmente" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "Editar ajustes TOTP" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "perfil del usuario" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "perfiles de usuarios" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "nombre de dispositivo" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "ID de credencial" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "clave pública" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "contador de señales" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "tiempo requerido" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "estado" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "razón" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "solicitud para asociarse a la organización" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "peticiones para unirse a la organización" @@ -2108,210 +2129,210 @@ msgstr "jueces" msgid "judge" msgstr "juez" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Aceptado" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "Respuesta incorrecta" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "Límite de tiempo excedido" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "Límite de memoria excedido" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "Límite de tiempo excedido" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "Retorno no válido" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "Error de tiempo de ejecución" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Error de compilación" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "Error interno" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "Circuito corto" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "Cancelado" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "En espera" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "Procesando" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "Clasificación" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "Completado" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "Error interno (juzgando error del servidor)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "tiempo de envío" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "tiempo de ejecución" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "uso de memoria" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "puntos otorgados" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "lenguaje del envío" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "estatus" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "resultado" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "errores de compilación" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "casos de lotes" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "puntos de prueba" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "total de puntos del caso de prueba" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "juzgado en" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "hora del envío del juez" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" -msgstr "fue reevaluado por el administrador" - #: judge/models/submission.py:83 +msgid "last rejudge date by admin" +msgstr "" + +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "solo se ejecutó en pruebas previas" -#: judge/models/submission.py:86 -msgid "lock submission" -msgstr "bloquear envío" +#: judge/models/submission.py:87 +msgid "submission lock" +msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "Cancelar cualquier envío" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "Rejuzgar el envío" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "Rejuzgar un montón de envíos" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "Enviar sin límite" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "Ver todos los envíos" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "Reenviar el envío de otros" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "Cambiar el estado de bloqueo del envío" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "envíos" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "presentaciones asociadas" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "código fuente" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "identificación en caso de prueba" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "indicador de estado" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "puntos posibles" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "número de lote" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "respuesta del juez" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "respuesta extendida del juez" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "salida del programa" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "prueba de presentación" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "pruebas de presentación" @@ -2359,6 +2380,10 @@ msgstr "ticket" msgid "poster" msgstr "publicación" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "cuerpo del mensaje" + #: judge/models/ticket.py:31 msgid "message time" msgstr "hora del mensaje" @@ -2381,19 +2406,23 @@ msgstr "Recalculando puntuaciones del concurso" msgid "Running MOSS" msgstr "Ejecutando MOSS" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "Modificando envíos" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "Recalculado los puntos de los usuarios" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "Preparando sus datos de envío" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "Preparando los datos de tus comentarios" @@ -2506,7 +2535,7 @@ msgstr "Debes resolver como mínimo un problema antes de poder votar" msgid "You already voted." msgstr "Ya has votado." -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "Editado desde sitio" @@ -2514,125 +2543,130 @@ msgstr "Editado desde sitio" msgid "Editing comment" msgstr "Comentario editado" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "No hay tal concurso" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "No se pudo encontrar una publicación con la clave \"%s\"." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "Concursos" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "No se pudo encontrar dicho concurso." -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Acceso al concurso \"%s\" denegado" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "Clonar Concurso" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "Concurso no permanente" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" no esta actualmente en curso." -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "Ya en el concurso" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "Ya estas en el concurso: \"%s\"." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "PUM Baneado" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "Has sido declarado persona non grata para este concurso. Quedas desterrado para siempre" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "Ingrese el código de acceso para \"%s\"" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "Tu no estas concursando \"%s\"." -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "ContestCalendar necesita un año y mes enteros" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "Concursos en %(month)s" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "%s Estadísticas" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "%s Clasificaciones" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "Su participación en %s" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "participación de %s en %s" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "En Vivo" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Participación" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "%s Resultados del Sistema antiplagio MOSS" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "Ejecutando Sistema antiplagio MOSS para %s" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "Etiqueta de Concurso: %s" @@ -2661,163 +2695,177 @@ msgstr "página corrupta %s" msgid "Runtimes" msgstr "Tiempo de ejecución" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "Ninguna organización" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "No se encontró una organización con la clave \"%s\"." -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "No se pudo encontrar tal organización." -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizaciones" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s miembros" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "Unirse a la organización" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "Ya estas en esta organización." -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "Esta organización no está abierta." -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "Abandonar organización" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "No estás en \"%s\"." -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "Solicitar para unirse %s" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "Únete a detalle de la solicitud" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "Gestionar solicitudes de unirse para %s" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "Su organización solo puede recibir %d miembros más. No puede aprobar %d usuarios." -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d usuarios aprobados." msgstr[1] "Usuarios aprobados \"%d\"." -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d usuarios rechazados." msgstr[1] "Usuarios rechazados \"%d\"." -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "Editando %s" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "No se puede editar la organización" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "No tiene permitido editar esta organización." -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "No tiene permitido expulsar a personas de esta organización." -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "No se puede reaccionar en contra del usuario" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "¡El usuario que estás tratando de poner no existe!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "El usuario que estás tratando poner no está en la organización: %s." -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "No existe ese problema" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "No se pudo encontrar el problema con el código \"%s\"." -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "Editorial de{0}" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "Editorial de {0}" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Problemas" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "Enviar a %s" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "Esta prohibido enviarlo" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "Usted ha sido declarado persona no grata por este problema. Usted está permanentemente impedido en presentar este problema." -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "Muchos envíos" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "Usted ha excedido el límite de presentaciones de este problema." -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "Clonar Problema" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "Los argumentos del inspector deben ser un objeto JSON" @@ -2887,52 +2935,52 @@ msgstr "Las mejores soluciones para %s" msgid "Best solutions for {0}" msgstr "Las mejores soluciones para {0}" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Las mejores soluciones para %(problem)s en %(contest)s" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "Las mejores soluciones para el problema %(number)s en %(contest)s" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "Las mejores soluciones para {0} en {2}" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "Las mejores soluciones para el problema {0} en {1}" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "El nombre de usuario debe contener letras, números o guiones bajos" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Lenguaje preferido" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "¿suscribete en el boletín de noticias?" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "La dirección de email \"%s\" ya ha sido tomada. Sólo un registro es permitido por dirección." -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "Su proveedor de correo electrónico no esta permitido debido a el historial de abuso. Por favor utilice un proveedor de correo con buena reputación." -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Registro de usuarios" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "Error de autenticación" @@ -2940,7 +2988,7 @@ msgstr "Error de autenticación" msgid "Language statistics" msgstr "Estadísticas del lenguaje" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Estado" @@ -2948,74 +2996,74 @@ msgstr "Estado" msgid "Version matrix" msgstr "Versión matriz" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Presentación de %(problem)s por %(user)s" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Todos los envíos" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "Todos mis envíos" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "Todos las presentaciones por %s" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "Todas las presentaciones por %s" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "Debe pasar un problema" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "Mis presentaciones de %(problem)s" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(user)s's presentaciones para %(problem)s" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "Debe pasar un concurso" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "Mis envíos en %(contest)s" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "Envíos de %(user)s en %(contest)s" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "Mis envíos en {0}" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "envíos de {0} en {2}" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "{0} envíos de {2} en {4}" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "{0} envíos de problema {2} en {3}" @@ -3032,40 +3080,40 @@ msgstr "Descripción del problema" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "Nuevo ticket de %s" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "%(title)s - Ticket %(id)d" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "Tickets - Página %(number)d de %(total)d" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "Tickets nuevos: %s" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "#%(id)d asignado para: %(users)s" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr ", " -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "ninguno" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "Nuevo Mensaje para: %s" @@ -3074,87 +3122,91 @@ msgstr "Nuevo Mensaje para: %s" msgid "Enable Two-factor Authentication" msgstr "Habilitar autenticación en dos pasos" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "Deshabilitar autenticación en dos pasos" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "Respuesta WebAuthn inválida" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "Nombre inválido" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "El personal con permisos elevados en la página no puede desactivar la Autenticación en dos pasos" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "Realizar autenticación en dos pasos" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "No existe este usuario" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "Ningún usuario se encarga de \"%s\"." -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "Mi cuenta" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "Usuario %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Iniciar sesión" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "M j, Y, G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "Preparando tus datos..." -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "Descargar tus datos" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "Actualizado en el sitio" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Modificar perfil" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "Token API generado para el usuario" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "Token API eliminado para el usuario" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "Códigos de scratch generados para el usuario" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Tabla de calificación" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3283,11 +3335,11 @@ msgstr "Noticias" msgid "posted on {time}" msgstr "publicado en {time}" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "Aclaraciones" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "No se han hecho aclaraciones en este momento." @@ -3483,7 +3535,7 @@ msgid "Info" msgstr "Información" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "Estadística" @@ -3686,19 +3738,19 @@ msgstr "Cancelar Descalificación" msgid "Disqualify" msgstr "Descalificar" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "¿Estás seguro que quieres descalificar a esta participación?" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "¿Estás seguro que quieres cancelar la descalificación de esta participación?" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "Ver la participación del usuario" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "Mostrar organizaciones" @@ -3973,7 +4025,7 @@ msgstr "" 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 "Recuerde utilizar esta editorial solo cuando esté bloqueada, y no copiar y pegar código de él. Por favor sea respetuoso con el autor del problema y el editorialista.

Presentar una solución oficial antes de resolver el problema usted mismo es una infracción banneable." -#: templates/problem/editorial.html:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Autor:" @@ -4140,36 +4192,36 @@ msgstr "Tiempo límite:" msgid "Memory limit:" msgstr "Límite de memoria:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "Tipo de problema" msgstr[1] "Tipos de problema" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "Lenguajes permitidos" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "No hay jueces online para %(lang)s" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "Juez" msgstr[1] "Jueces" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "ninguno disponible" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "Solicitar aclaración" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "Reportar un problema" @@ -4214,7 +4266,7 @@ msgstr "Tipos de problema" msgid "Point range" msgstr "Rango de Puntos" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "Ir" @@ -4261,7 +4313,7 @@ msgid "Invalid username or password." msgstr "Usuario o contraseña inválida." #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "¡Iniciar sesión!" @@ -4381,12 +4433,12 @@ msgid "Default language" msgstr "Lenguaje por defecto" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "Organizaciones afiliadas" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "Notificarme sobre próximas competencias" @@ -4402,57 +4454,93 @@ msgstr "Términos y condiciones" msgid "Register!" msgstr "¡Registrarse!" -#: templates/registration/totp_disable.html:38 +#: templates/registration/totp_disable.html:31 msgid "To protect your account, you must first authenticate before you can disable Two Factor Authentication." msgstr "Para proteger tu cuenta, debes autenticarte antes de que puedas desactivar el Two Factor Authentication" -#: templates/registration/totp_disable.html:45 +#: 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 "Introduzca el código de 6 dígitos generado por su aplicación o uno de sus códigos Scratch de 16 dígitos:" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "Desactivar Two Factor Authentication" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "Escanea este código con tu app de autenticación" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "código QR" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "O entra este código manualmente" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "Entra el código de 6 dígitos generado por tu app" -#: templates/registration/totp_enable.html:91 +#: templates/registration/totp_enable.html:90 +msgid "Refresh Two Factor Authentication" +msgstr "" + +#: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" msgstr "Activar Two Factor Authentication" +#: templates/registration/totp_enable.html:98 +msgid "Below is a list of one-time use scratch codes." +msgstr "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "WebAuthn no es compatible con su navegador." #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "Error al contactar con el servidor." -#: templates/registration/two_factor_auth.html:77 +#: 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 "Introduce el código de 6 dígitos generado por tu aplicación o uno de tus códigos Scratch de 16 caracteres:" -#: templates/registration/two_factor_auth.html:83 +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" +msgstr "" + +#: templates/registration/two_factor_auth.html:89 msgid "Use security key" msgstr "Usar clave de seguridad" -#: templates/registration/two_factor_auth.html:89 +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "Si perdiste tu dispositivo de autenticación y no puedes usar tus códigos de scratch, ponte en contacto con nosotros en %(email)s." @@ -4533,15 +4621,15 @@ msgstr "Filtrar por estatus..." msgid "Filter by language..." msgstr "Filtrar por lenguaje..." -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Filtrar envíos" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Total" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Estuviste desconectado. Actualiza para mostrar las últimas actualizaciones." @@ -4757,121 +4845,125 @@ msgstr "Puesto" msgid "Search by handle..." msgstr "Buscar por manejo..." -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "¿Estás seguro de que quieres generar o regenerar tu token API?" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "Esto invalidará cualquier token de API anterior." -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "También permite el acceso a su cuenta sin autenticación de dos pasos." -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "¡No podrás ver tu token api después de salir de esta página!" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "Generando..." -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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 "Regenerar" -#: templates/user/edit-profile.html:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "Eliminar" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "¿Estás seguro de que quieres eliminar tu token de API?" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: templates/user/edit-profile.html:148 templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:401 msgid "Generate" msgstr "Generar" -#: templates/user/edit-profile.html:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "¿Está seguro que desea eliminar esta clave de seguridad?" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "Descripción propia" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "Seleccione la ciudad importante más cercana" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "Tema editor" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "Motor de matemáticas" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "Cambiar tu avatar" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "Cambiar tu contraseña" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "Autenticación en dos pasos habilitada" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" -msgstr "Autenticación en dos pasos deshabilitada" - -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 msgid "Disable" msgstr "Desactivar" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:367 +msgid "Refresh" +msgstr "" + +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "Códigos Scratch:" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "Oculto" -#: templates/user/edit-profile.html:381 +#: templates/user/edit-profile.html:384 +msgid "Two-factor Authentication is disabled" +msgstr "Autenticación en dos pasos deshabilitada" + +#: templates/user/edit-profile.html:385 msgid "Enable" msgstr "Activar" -#: templates/user/edit-profile.html:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "Token de la API" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "Claves de seguridad" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "Eliminar" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "Introduzca un nombre para esta clave" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "Añadir" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "Script de usuario" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "Actualizar perfil" diff --git a/locale/es/LC_MESSAGES/djangojs.po b/locale/es/LC_MESSAGES/djangojs.po index eba0c2ff75..971810a238 100644 --- a/locale/es/LC_MESSAGES/djangojs.po +++ b/locale/es/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 4973bf9928..f747d2eac7 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "Catalane" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Allemand" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Anglais" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Espagnol" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Français" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Croate" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Hongrois" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "Japonais" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Coréen" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "Portugais Brazilien" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Roumain" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Russe" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Serbe (Latin)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Turque" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Vietnamien" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Chinois simplifié" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "Chinois Traditionel" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Accueil" @@ -115,112 +115,112 @@ msgstr "Montrer les commentaires" msgid "Associated page" msgstr "Page associée" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Concours inclus" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Problème" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "Réglages" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Planification" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Détails" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "Format" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Valeur" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "Accès" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Justice" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "Marquer concours comme visible" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "Marquer concours invisible" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, 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:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "Verrouiller les soumissions au concours" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, 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:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "Déverrouiller les soumissions au concours" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, 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:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "Récalculer résultats" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "nom d'utilisateur" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "virtuel" @@ -236,9 +236,9 @@ msgstr "Contenu" msgid "Summary" msgstr "Résumé" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "utilisateur" @@ -246,8 +246,8 @@ msgstr "utilisateur" msgid "object" msgstr "objet" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Sur le site" @@ -255,69 +255,69 @@ msgstr "Sur le site" msgid "Describe the changes you made (optional)" msgstr "Décrire les modifications apportées (optionnel)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Médias Sociaux" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Taxonomie" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Points " -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Limites" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Langue" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Histoire" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Auteurs" -#: judge/admin/problem.py:191 +#: 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] "La date de publication de %d problème a été mise à jour avec succès." msgstr[1] "La date de publication de %d problèmes a été mise à jour avec succès." -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "Définir la date de publication à maintenant" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "Le problème %d a été marqué comme publique." msgstr[1] "%d problèmes ont été marqué comme publique." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Rendre ces problèmes publique" -#: judge/admin/problem.py:211 +#: 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 problème marqué privé avec succès." msgstr[1] "%d problèmes marqués privés avec succès." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Marquer les problèmes comme privés" @@ -325,35 +325,35 @@ msgstr "Marquer les problèmes comme privés" msgid "timezone" msgstr "fuseau horaire" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Utilisateur" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Courriel" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Fuseau horaire" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "date d'adhésion" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d l'utilisateur a des notes récalculées." msgstr[1] "%d les utilisateurs ont des notes récalculées." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Recalculer les scores" @@ -506,115 +506,116 @@ msgstr "IOI" msgid "IOI (pre-2016)" msgstr "IOI (avant 2016)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "Les jetons d'authentification à deux facteurs doivent être de 6 chiffres décimaux." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "Code d´authentification à deux facteurs invalide" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "Les codes Scratch doivent être 16 caractères de base 32." -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "Code scratch non valide" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" -msgstr "" +msgstr "S'abonner aux nouvelles du concours" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." -msgstr "" +msgstr "Vous devez résoudre au moins un problème avant de pouvoir modifier votre profil." -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." -msgstr "" +msgstr "Vous ne pouvez pas faire partie de plus de {count} organisations publiques." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" -msgstr "" +msgstr "Télécharger les commentaires ?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" -msgstr "" +msgstr "Télécharger les soumissions?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" -msgstr "" +msgstr "Filtrer par code de problème glob :" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" -msgstr "" +msgstr "Laisser vide pour inclure toutes les soumissions" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" -msgstr "" +msgstr "Filtrer par résultat:" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." -msgstr "" +msgstr "Veuillez sélectionner au moins une chose à télécharger." -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" -msgstr "" +msgstr "N'importe quel juge" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Nom d'utilisateur" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Mot de passe " -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." -msgstr "" +msgstr "Longueur de code invalide." -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -626,20 +627,20 @@ msgstr "" #: 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/models/choices.py:59 msgid "Leave as LaTeX" -msgstr "" +msgstr "Laisser en tant que LaTeX" #: judge/models/choices.py:60 msgid "SVG with PNG fallback" -msgstr "" +msgstr "SVG avec repli PNG" #: judge/models/choices.py:61 msgid "MathML only" @@ -647,27 +648,27 @@ msgstr "MathML seulement" #: judge/models/choices.py:62 msgid "MathJax with SVG/PNG fallback" -msgstr "" +msgstr "MathJax avec repli SVG/PNG" #: judge/models/choices.py:63 msgid "Detect best quality" -msgstr "" +msgstr "Détecter la meilleure qualité" #: judge/models/comment.py:25 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" -msgstr "" +msgstr "Le code de la page doit être ^[pcs]:[a-z0-9]+$|^b:\\d+$" #: judge/models/comment.py:41 msgid "commenter" -msgstr "" +msgstr "commentateur" #: judge/models/comment.py:42 msgid "posted time" -msgstr "" +msgstr "date de publication" #: judge/models/comment.py:43 judge/models/comment.py:196 msgid "associated page" -msgstr "" +msgstr "page associée" #: judge/models/comment.py:45 msgid "votes" @@ -675,11 +676,11 @@ msgstr "votes" #: judge/models/comment.py:46 msgid "body of comment" -msgstr "" +msgstr "le corps du commentaire" #: judge/models/comment.py:47 msgid "hide the comment" -msgstr "" +msgstr "Masquer le commentaire" #: judge/models/comment.py:48 msgid "parent" @@ -694,7 +695,7 @@ msgid "comments" msgstr "commentaires" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "Editorial for %s" @@ -735,7 +736,7 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -745,11 +746,11 @@ msgstr "" #: judge/models/contest.py:62 msgid "Hidden for duration of contest" -msgstr "" +msgstr "Caché pour la durée du concours" #: judge/models/contest.py:63 msgid "Hidden for duration of participation" -msgstr "" +msgstr "Caché pour la durée de la participation" #: judge/models/contest.py:65 msgid "contest id" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "nom du concours" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." +msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 -msgid "description" +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +msgid "These users will be able to view the contest, but not edit it." msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:76 judge/models/runtime.py:136 +msgid "description" +msgstr "Description" + +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "problèmes" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "heure de début" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "heure de fin" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "limite de Temps" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "visible publiquement" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" -msgstr "" +msgstr "concours évalué" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." -msgstr "" +msgstr "Si ce concours peut être évalué." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" -msgstr "" +msgstr "aucun commentaire" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." -msgstr "" +msgstr "Utiliser le système de clarification au lieu de commentaires." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" -msgstr "" +msgstr "Plancher de classement pour le concours" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" -msgstr "" +msgstr "Plafond de classement pour le concours" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" -msgstr "" +msgstr "évaluer tout" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." -msgstr "" +msgstr "Évaluer tous les utilisateurs qui se sont inscrits." -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" -msgstr "" +msgstr "exclure des évaluations" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" -msgstr "" +msgstr "privé à des utilisateurs spécifiques" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" -msgstr "" +msgstr "Si privé, seuls ces utilisateurs peuvent voir le concours" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 -msgid "run pretests only" +#: judge/models/contest.py:110 +msgid "hide problem authors" msgstr "" -#: judge/models/contest.py:105 -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." +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." msgstr "" -#: judge/models/contest.py:109 judge/models/problem.py:166 +#: judge/models/contest.py:113 +msgid "run pretests only" +msgstr "exécuter uniquement les prétests" + +#: judge/models/contest.py:114 +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/problem.py:183 msgid "private to organizations" -msgstr "" +msgstr "privés aux organisations" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "organisations" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" -msgstr "" +msgstr "Si privé, seules ces organisations peuvent voir le concours" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" -msgstr "" +msgstr "Image OpenGraph" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" -msgstr "" +msgstr "Image de remplacement du logo" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." -msgstr "" +msgstr "Cette image remplacera le logo par défaut du site pour les utilisateurs à l'intérieur du concours." -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" -msgstr "" +msgstr "le nombre de participants en direct" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" -msgstr "" +msgstr "Résumé du concours" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." -msgstr "" +msgstr "Texte simple, affiché dans la meta description, par exemple pour les réseaux sociaux." -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" -msgstr "" +msgstr "code d'accès" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" -msgstr "" +msgstr "personae non gratae" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." -msgstr "" +msgstr "Banni les utilisateurs sélectionnés de rejoindre ce concours." -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" -msgstr "" +msgstr "format de concours" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." -msgstr "" +msgstr "Le module de format du concours à utiliser." -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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 "" +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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" -msgstr "" +msgstr "points de précision" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." -msgstr "" +msgstr "Nombre de chiffres vers lesquels arrondir les points." -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" -msgstr "" +msgstr "Voir les concours privés" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "Modifier vos propres concours" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" -msgstr "" +msgstr "Modifier tous les concours" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" -msgstr "" +msgstr "Cloner concours" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" -msgstr "" +msgstr "Évaluer les concours" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" -msgstr "" +msgstr "Créer des concours privés" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" -msgstr "" +msgstr "Modifier la visibilité des concours" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" -msgstr "" +msgstr "Modifier le script d'étiquette du problème du concours" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" -msgstr "" +msgstr "Changer le statut de verrouillage du concours" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "concours" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "concours" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" -msgstr "" +msgstr "concours associé" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "score" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" -msgstr "" +msgstr "temps cumulé" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" -msgstr "" +msgstr "Disqualifiée" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." -msgstr "" +msgstr "Si cette participation est disqualifiée." -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" -msgstr "" +msgstr "id de participation virtuelle" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." -msgstr "" +msgstr "0 signifie non virtuel, sinon la n-ème participation virtuelle." -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" -msgstr "" +msgstr "données spécifiques au format du concours" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" -msgstr "" +msgstr "%s spectateur dans %s" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" -msgstr "" +msgstr "%s dans %s" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "problème" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "points" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "partiel" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" -msgstr "" +msgstr "est prétesté" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" -msgstr "" +msgstr "ordre" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." -msgstr "" +msgstr "Nombre maximum de soumissions pour ce problème, ou laisser vide pour aucune limite." -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "soumission" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" -msgstr "" +msgstr "Participation" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." -msgstr "" +msgstr "Si cette soumission a été exécutée uniquement sur les pré-tests." -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" -msgstr "" +msgstr "soumissions de concours" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" -msgstr "" +msgstr "classement" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "évaluation" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" -msgstr "" +msgstr "Volatilité" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" -msgstr "" +msgstr "dernière évaluation" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1203,7 +1220,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "auteurs" @@ -1211,7 +1228,7 @@ msgstr "auteurs" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1247,34 +1264,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "" msgid "problem type" msgstr "type de problème" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1304,7 +1293,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1324,7 +1313,7 @@ msgstr "" msgid "full name" msgstr "nom complet" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1353,232 +1342,252 @@ msgstr "licence" msgid "licenses" msgstr "licenses" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "limite de mémoire" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "langages autorisées" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "langue" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "limite de ressources spécifiques à un language" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "limites de ressources spécifiques à un language" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "solution" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "solutions" @@ -1690,112 +1699,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "Ceux qui peuvent modifier cette organisation" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "date de création" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "Permettre de rejoindre l'Organisation" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "taille maximum" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "organisation" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "langage préféré" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "" msgid "Admin" msgstr "Admin" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "profil utilisateur" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "raison" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2108,210 +2129,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Accepté" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "Mauvaise réponse" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "Limite temps dépassée" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "Limite mémoire dépassée" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "Retour invalide" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "Erreur d'exécution" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Erreur de compilation" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "Erreur interne" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "Court circuit" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "Abandonné" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "En file d'attente" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "En cours de traitement" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "En cours de notation" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "Terminé" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "soumissions" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2359,6 +2380,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2381,19 +2406,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2506,7 +2535,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2514,125 +2543,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "Concours" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2661,163 +2695,177 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Problèmes" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2887,52 +2935,52 @@ msgstr "Les meilleures solutions pour %s" msgid "Best solutions for {0}" msgstr "Les meilleures solutions pour {0}" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Langue préférée" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "Il y a déjà un compte avec cette adresse: \"%s\". Qu’une seule compte est autorisée par adresse." -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2940,7 +2988,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Etat" @@ -2948,74 +2996,74 @@ msgstr "Etat" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3032,40 +3080,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3074,87 +3122,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" -msgstr "Se connecter" +msgstr "Entrer" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Modifier le profile" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3279,11 +3331,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3476,7 +3528,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3679,19 +3731,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3966,7 +4018,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4133,36 +4185,36 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "Languages autorisés" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "Demander une clarification" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "Reporter un problème" @@ -4207,7 +4259,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4254,7 +4306,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4374,12 +4426,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4395,57 +4447,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4526,15 +4614,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4750,121 +4838,125 @@ msgstr "Classement" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "Changer votre avatar" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" @@ -5021,15 +5113,15 @@ msgstr "Classement :" #: templates/user/user-base.html:77 msgid "Volatility:" -msgstr "" +msgstr "Volatilité:" #: templates/user/user-base.html:78 msgid "Min. rating:" -msgstr "" +msgstr "Classement minimum :" #: templates/user/user-base.html:79 msgid "Max rating:" -msgstr "" +msgstr "Classement maximale:" #: templates/user/user-problems.html:37 msgid "Points breakdown" @@ -5037,7 +5129,7 @@ msgstr "" #: templates/user/user-problems.html:43 msgid "Load more..." -msgstr "" +msgstr "Charger plus..." #: templates/user/user-problems.html:47 msgid "This user has not yet solved any problems." @@ -5059,11 +5151,11 @@ msgstr "" #: 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 "Imiter" #: templates/user/user-tabs.html:10 msgid "Admin User" diff --git a/locale/fr/LC_MESSAGES/djangojs.po b/locale/fr/LC_MESSAGES/djangojs.po index 9887ed77ca..eba84ef04c 100644 --- a/locale/fr/LC_MESSAGES/djangojs.po +++ b/locale/fr/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" diff --git a/locale/hr/LC_MESSAGES/django.po b/locale/hr/LC_MESSAGES/django.po index 116c240499..81e5bdb88f 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Njemački" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Engleski" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Španjolski" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Hrvatski" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Mađarski" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Korejski" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Rumunjski" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Ruski" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Srpski (Latinica)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Turski" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Vijetnamski" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Pojednostavljeni kineski" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Početna" @@ -117,46 +117,46 @@ msgstr "Otkrij komentare" msgid "Associated page" msgstr "Povezana stranica" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Uključena natjecanja" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Zadatak" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Raspoređivanje" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Pojedinosti" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Bodovi" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Pravda" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, 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:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, 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:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, 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:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "korisničko ime" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "virtualno" @@ -244,9 +244,9 @@ msgstr "Sadržaj" msgid "Summary" msgstr "Sažetak" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "korisnik" @@ -254,8 +254,8 @@ msgstr "korisnik" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Prikaži na stranici" @@ -263,40 +263,40 @@ msgstr "Prikaži na stranici" msgid "Describe the changes you made (optional)" msgstr "Opišite promjene koje ste napravili (neobavezno)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Društveni mediji" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Taksonomija" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Bodovi" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Ograničenja" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Jezik" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Povijest" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Autori" -#: judge/admin/problem.py:191 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -304,11 +304,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -316,11 +316,11 @@ msgstr[0] "%d zadatak uspješno postavljen kao javno." msgstr[1] "%d zadataka uspješno postavljeno kao javni." msgstr[2] "%d zadataka uspješno postavljeno kao javni." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Označi zadatke javnima" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -328,7 +328,7 @@ msgstr[0] "%d zadatak uspješno postavljen kao privatan." msgstr[1] "%d zadataka uspješno postavljeno kao privatni." msgstr[2] "%d zadataka uspješno postavljeno kao privatni." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Označi zadatke privatnima" @@ -336,28 +336,28 @@ msgstr "Označi zadatke privatnima" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Korisnik" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "E-mail" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Vremenska zona" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "datum registracije" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." @@ -365,7 +365,7 @@ msgstr[0] "%d korisnik je ponovno izračunao bodove." msgstr[1] "%d korisnika je ponovno izračunalo bodove." msgstr[2] "%d korisnika je ponovno izračunalo bodove." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Ponovno izračunavanje rezultata" @@ -519,115 +519,116 @@ msgstr "IOI" msgid "IOI (pre-2016)" msgstr "IOI (prije 2016)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "Token autentikacije u dva koraka mora biti duljine 6." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "Pogrešan token autentikacije u dva koraka." -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "Pretplati se na novosti na natjecanju" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Uključi eksperimentalne opcije" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, 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." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "Preuzmi komentare?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "Preuzmi predana rješenja?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "Filtriraj prema rezultatu:" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "Molimo označite barem jednu stavku za preuzimanje." -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "Bilo koji evaluator" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Korisničko ime" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Lozinka" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "Pogrešan WebAuthn odgovor." -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "ID zadatka mora biti ^[a-z0-9]+$" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "Već postoji zadatak koji koristi taj ID." -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "ID natjecanja mora biti ^[a-z0-9]+$" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "Već postoji natjecanje koje koristi taj ID." @@ -707,7 +708,7 @@ msgid "comments" msgstr "komentari" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "Objašnjenje za %s" @@ -748,7 +749,7 @@ msgstr "opis oznake" msgid "contest tag" msgstr "oznaka natjecanja" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "oznake natjecanja" @@ -773,410 +774,426 @@ msgid "contest name" msgstr "naziv natjecanja" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Ove osobe će moći uređivati natjecanje." +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +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 msgid "description" msgstr "opis" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "zadaci" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "vrijeme početka" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "vrijeme kraja" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "vremensko ograničenje" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "javno vidljivo" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "bodovanje natjecanja" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Može li ovo natjecanje biti bodovano." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "bez komentara" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "Koristite sustav za pojašnjenja umjesto komentara." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "boduj sve" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "Boduj sve korisnike koji su se pridružili." -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "izostavi iz bodovanja" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "sakrij oznake zadataka" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "Trebaju li oznake zadataka biti zadano skrivene." -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "pokreni samo predtestiranje" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "privatno za organizacije" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "OpenGraph slika" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "trenutni broj natjecatelja" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "sažetak natjecanja" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "persona non grata" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "Zabranjuje označenom korisniku pridruživanje natjecanju." -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "oblik natjecanja" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "Pregledaj privatna natjecanja" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "Uredi vlastita natjecanja" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "Uredi sva natjecanja" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "Kloniraj natjecanje" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "MOSS natjecanje" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "natjecanje" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "natjecanja" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "bodovi" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "redoslijed" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "predano rješenje" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "sudjelovanje" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1216,7 +1233,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1224,7 +1241,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1260,34 +1277,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1305,7 +1294,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1317,7 +1306,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1337,7 +1326,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1366,232 +1355,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "memorijsko ograničenje" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 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:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "dopušteno djelomično bodovanje" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "dopušteni programski jezici" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "ručno upravljano" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "datum objave" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "sažetak zadatka" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1703,112 +1712,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1817,155 +1826,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2121,210 +2142,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2372,6 +2393,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2394,19 +2419,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2522,7 +2551,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2530,125 +2559,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2677,71 +2711,71 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "Zahtjev za pridruživanje %s" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2749,7 +2783,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2757,85 +2791,99 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "Uređivanje %s" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "Nije moguće urediti organizaciju" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "Nemate ovlasti za uređivanje ove organizacije." -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "Nemate ovlasti za izbacivanje ljudi iz ove organizacije." -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "Nije moguće izbaciti korisnika" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "Korisnik kojeg pokušavate izbaciti ne postoji!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, 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:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Zadaci" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "Previše poslanih rješenja" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2906,52 +2954,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "Pretplatite se na naš newsletter?" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "Vaša adresa e-pošte \"%s\" je već zauzeta. Dopuštena je isključivo jedna registracija za jednu adresu e-pošte." -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Registracija" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2959,7 +3007,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Status predanog rješenja" @@ -2967,74 +3015,74 @@ msgstr "Status predanog rješenja" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, 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:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Sva predana rješenja" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "Sva moja predana rješenja" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "Sva predana rješenja od korisnika %s" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "Sva predana rješenja za korisnika %s" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3051,40 +3099,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3093,87 +3141,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Prijava" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3298,11 +3350,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3495,7 +3547,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3698,19 +3750,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3985,7 +4037,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4154,38 +4206,38 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4230,7 +4282,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4278,7 +4330,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4398,12 +4450,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4419,57 +4471,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4550,15 +4638,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4775,121 +4863,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/hr/LC_MESSAGES/djangojs.po b/locale/hr/LC_MESSAGES/djangojs.po index d8638c6ee2..41911e5977 100644 --- a/locale/hr/LC_MESSAGES/djangojs.po +++ b/locale/hr/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Croatian\n" "Language: hr_HR\n" diff --git a/locale/hu/LC_MESSAGES/django.po b/locale/hu/LC_MESSAGES/django.po index 804d142c96..ddbbde75e6 100644 --- a/locale/hu/LC_MESSAGES/django.po +++ b/locale/hu/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Német" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Angol" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Spanyol" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Francia" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Horvát" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Koreai" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Román" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Orosz" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Szerb (latin)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Vietnami" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Egyszerűsített kínai" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Nyitólap" @@ -115,112 +115,112 @@ msgstr "Kommentek megjelenítése" msgid "Associated page" msgstr "Kapcsolódó lap" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Hozzárendelt versenyek" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Feladat" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Időbeosztás" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Részletek" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Értékelés" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Igazságszolgáltatás" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "felhasználónév" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "virtuális" @@ -236,9 +236,9 @@ msgstr "Tartalom" msgid "Summary" msgstr "Összefoglalás" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "felhasználó" @@ -246,8 +246,8 @@ msgstr "felhasználó" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Nézd meg élesben" @@ -255,69 +255,69 @@ msgstr "Nézd meg élesben" msgid "Describe the changes you made (optional)" msgstr "Ismertesd a módosításokat (opcionális)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Közösségi média" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Rendszerezés" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Pontok" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Limitek" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Nyelv" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Előzmények" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Szerzők" -#: judge/admin/problem.py:191 +#: 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] "" msgstr[1] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: 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 probléma sikeresen publikusnak jelölve." msgstr[1] "%d probléma sikeresen publikusnak jelölve." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Jelöld publikusnak a problémákat" -#: judge/admin/problem.py:211 +#: 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 probléma sikeresen privátnak jelölve." msgstr[1] "%d probléma sikeresen privátnak jelölve." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Jelöld a problémákat privátnak" @@ -325,35 +325,35 @@ msgstr "Jelöld a problémákat privátnak" msgid "timezone" msgstr "időzóna" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Felhasználó" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Email" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Időzóna" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "csatlakozás dátuma" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d felhasználó pontja újraszámolva." msgstr[1] "%d felhasználó pontja újraszámolva." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Pontok újraszámítása" @@ -506,115 +506,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "Iratkozz fel hírlevelünkre" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Kísérleti funkciók engedélyezése" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Nem lehetsz tagja több mint {count} nyilvános csoportnak." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Felhasználóinév" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Jelszó" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "A feladat azonosítónak ^[a-z0-9]+$ kell lennie" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "A verseny azonosítójának ^[a-z0-9]+$ kell lennie" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -694,7 +695,7 @@ msgid "comments" msgstr "hozzászólások" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "Megoldási útmutató %s-hez" @@ -735,7 +736,7 @@ msgstr "címke leírása" msgid "contest tag" msgstr "verseny címkéje" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "verseny cimkéi" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "verseny neve" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Ezek az emberek szerkeszthetik a versenyt." +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +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 msgid "description" msgstr "leírás" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "feladatok" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "kezdés" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "befejezés" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "időkorlát" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "nyilvánosan látható" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "Azt határozza meg, hogy a verseny a megadott szervezetek tagjai számára látható-e. Célszerű meghatározni még szervezeten belüli-privát versenyeken is." -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "értékelt verseny" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Hogy ez a verseny értékelhető-e." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "nincsenek hozzászólások" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "A pontosítási rendszer használata hozzászólások helyett." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "összes értékelése" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "Értékelése az összes felhasználónak, aki csatlakozott." -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "kizárás a értékelésből" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "feladat címkék elrejtése" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "csak pretesztek futtatása" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "privát a csoport számára" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "csoportok" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "Ha privát, csak ezek a csoportok láthatják a versenyt" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "OpenGraph kép" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "az éles résztvevők száma" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "verseny összefoglaló" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "hozzáférési kód" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "nemkívánatos személy" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "Privát versenyek mutatása" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "Saját versenyek szerkesztése" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "Az összes verseny szerkesztése" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "Versenyek értékelése" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "Verseny hozzáférési kódok" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "verseny" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "versenyek" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "pontszám" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "összes idő" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "virtuális részvételi azonosító" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "%s megfigyel %s-ben" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "%s en %s, v%d" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s %s-ben" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "verseny részvétel" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "verseny részvételek" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "feladat" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "pontok" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "részleges" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "pretesztes-e" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "sorrend" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "versenyfeladat" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "versenyfeladatok" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "feltöltés" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "részvétel" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "verseny feltöltés" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "verseny feltöltések" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "helyezés" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "értékelés" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "volatilitás" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "utolsó értékelt" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "verseny értékelés" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "verseny értékelések" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1203,7 +1220,7 @@ msgstr "szülő elem" msgid "post title" msgstr "bejegyzés címe" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "szerzők" @@ -1211,7 +1228,7 @@ msgstr "szerzők" msgid "slug" msgstr "csonk" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "láthatóság" @@ -1247,34 +1264,6 @@ msgstr "blog poszt" msgid "blog posts" msgstr "blog posztok" -#: judge/models/message.py:11 -msgid "message title" -msgstr "üzenet címe" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "üzenet törzse" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "küldő" - -#: judge/models/message.py:14 -msgid "target" -msgstr "címzett" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "üzenet időbélyege" - -#: judge/models/message.py:16 -msgid "read" -msgstr "olvas" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "üzenetek a szálban" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "feladat kategória név" msgid "problem type" msgstr "feladat típus" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "feladat típusok" @@ -1304,7 +1293,7 @@ msgstr "feladat csoport azonosító" msgid "problem group name" msgstr "feladat csoport név" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "feladat csoport" @@ -1324,7 +1313,7 @@ msgstr "link" msgid "full name" msgstr "teljes név" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "rövid név" @@ -1353,232 +1342,252 @@ msgstr "licenc" msgid "licenses" msgstr "licencek" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "feladat azonosító" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "feladat név" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "feladat törzs" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "szerzők" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "kurátorok" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "tesztelők" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "A feladat időlimitje másodpercekben. Tört másodperceket (pl. 1.5) is írhatunk." -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "memória korlát" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "A feladat memória limitje kilobyte-okban (pl. 64mb = 65536 kilobyte)." -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "részleges pontok engedélyezése" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "engedélyezett nyelvek" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "manuáisan kezelt" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "publikálás ideje" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "feladat összefoglaló" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "Feladat klónozása" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "nyelv" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "lefordított név" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "lefordított leírás" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "feladat fordítás" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "feladat fordítások" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "pontosított feladat" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "pontosítás törzse" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "pontosítás időbélyege" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "nyelv specifikus erőforrás korlát" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "nyelv specifikus erőforrás korlátok" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "hozzárendelt probléma" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "publikálás dátuma" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "megoldási útmutató tartalom" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "megoldás" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "megoldások" @@ -1690,112 +1699,112 @@ msgstr "pont érték" msgid "case is pretest?" msgstr "ez az eset preteszt?" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "csoport neve" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "A felhasználóinév mellett van a versenyek alatt" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "csoport leírás" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "adminisztrátorok" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "Azok, akik szerkeszteni tudják ezt a csoportot" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "létrehozás dátuma" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "nyílt-e a csoport?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "A csoportba való belépés engedélyezése" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "maximális méret" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "Maximális felhasználó szám ebben a csoportban, csak privát csoportokra érvényes" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "Tanulói hozzáférési kódok" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "csoport" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "felhasználóhoz társult" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "önleírás" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "helyszín" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "preferált nyelv" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "utolsó belépés ideje" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "utolsó IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "megjelenített rang" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "" msgid "Admin" msgstr "Admin" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "hozzászólás lenémítása" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "Néhány felhasználó a legjobb amikor csendesek." -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "felhasználói szkript" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "Felhasználó által meghatározott JavaScript a webhely testreszabásához." -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "jelenlegi verseny" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "matek motor" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "a matek ábrákat renderelő motor" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "felhasználói profil" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "felhasználói profilok" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "kérési idő" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "állapot" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "ok" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "csoport belépési kérelem" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "csoport belépési kérelmek" @@ -2108,210 +2129,210 @@ msgstr "bírók" msgid "judge" msgstr "bíró" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Elfogadva" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "Rossz válasz" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "Időlimit túllépés" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "Memórialimit túllépés" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "Kimenetlimint túllépés" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "Érvénytelen visszatérés" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "Futási hiba" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Fordítási hiba" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "Belső hiba" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "Megszakítva" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "Sorba állítva" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "Feldolgozás alatt" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "Pontozás" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "Belső hiba (tesztelő szerver hiba)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "futási idő" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "memória használat" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "állapot" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "eredmény" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "fordítási hibák" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "teszteset pontjai" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "ezen tesztelve" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "forráskód" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "teszteset azonosító" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "tesztelési visszajelzés" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "program kimenet" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2359,6 +2380,10 @@ msgstr "hibajegy" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "üzenet törzse" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2381,19 +2406,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2506,7 +2535,7 @@ msgstr "" msgid "You already voted." msgstr "Már szavaztál." -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "Szerkesztve az oldalról" @@ -2514,125 +2543,130 @@ msgstr "Szerkesztve az oldalról" msgid "Editing comment" msgstr "Hozzászólás szerkesztése" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "Nincs ilyen verseny" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Nem található verseny a \"%s\" kulccsal." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "Versenyek" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "Nem található ilyen verseny." -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Hozzáférés a \"%s\" versenyhez megtagadva" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "A verseny nincs folyamatban" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" nincs folyamatban." -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "Már a versenyben vagy" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "Már a \"%s\" versenyben vagy." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "Add meg a hozzáférési kódot a \"%s\"-hoz" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "Nem vagy a \"%s\" versenyben." -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2661,163 +2695,177 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "Nincs ilyen csoport" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Nem található csoport a \"%s\" kulccsal." -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "Nem található ilyen csoport." -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Csoportok" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s Tagok" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "Belépés a csoportba" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "Már benne vagy a csoportba." -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "Ez a csoport nem nyílt." -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "Csoport elhagyása" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "Nem vagy \"%s\"-ben." -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "Kérés a \"%s\"-hez való csatlakozásra" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "Belépési kérés részletei" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "%s belépési kéréseinek kezelése" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "A csoportod csak %d további tagot tud fogadni. Nem tudsz felvenni %d felhasználót." -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d darab felhasználó jóváhagyva." msgstr[1] "%d darab felhasználó jóváhagyva." -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d darab felhasználó elutasítva." msgstr[1] "%d darab felhasználó elutasítva." -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "%s szerkesztése" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "Nem lehet szerkeszteni a csoportot" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "Nincs jogosultságod szerkeszteni ezt a csoportot." -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "Nincs jogosultságod embereket kirúgni ebből a csoportból." -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "Nem lehet kirúgni a felhasználót" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "A felhasználó akit megpróbálsz kirúgni nem létezik!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "A felhasználó akit ki akarsz rúgni nincs a csoportban: %s." -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "Nincs ilyen feladat" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "Megoldás útmutató {0}-hez" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "Megoldási útmutató {0}-hez" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Feladatok" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "Feltöltéstől eltiltott" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "Nemkívánatos személy vagy ennél a feladatnál, így örökre el vagy tiltva a feltöltéstől." -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "Túl sok feltöltés" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2887,52 +2935,52 @@ msgstr "Legjobb megoldások %s-hez" msgid "Best solutions for {0}" msgstr "Legjobb megoldások {0}-hez" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Legjobb megoldások %(problem)s %(contest)s-ben" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Preferált nyelv" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "Feliratkozol a hírlevélre?" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "A \"%s\" email cím már foglalt. Csak egy regisztráció engedélyezett címenként." -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Regisztráció" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "Azonosítási hiba" @@ -2940,7 +2988,7 @@ msgstr "Azonosítási hiba" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Státusz" @@ -2948,74 +2996,74 @@ msgstr "Státusz" msgid "Version matrix" msgstr "Verzió mátrix" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Összes beküldés" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "Összes beküldésem" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3032,40 +3080,40 @@ msgstr "Probléma leírása" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "Új hibajegy %s-hez" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "Új Hibajegy: %s" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr ", " -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3074,87 +3122,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "Nincs ilyen felhasználó" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "Saját fiók" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "Felhasználó %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Belépés" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "M j, Y, G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "Frissítve az oldalon" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Profil szerkesztése" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Ranglista" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3279,11 +3331,11 @@ msgstr "Hírek" msgid "posted on {time}" msgstr "{time}-kor posztolva" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "Pontosítások" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "Nem jelentek meg pontosítások még." @@ -3476,7 +3528,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3679,19 +3731,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "Csoportok mutatása" @@ -3966,7 +4018,7 @@ msgstr "" 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 "Ne feledd, hogy csak akkor használd a megoldási útmutatót ha elakadtál és ne másold csak úgy ki belőle a kódot. Kérlek legyél tisztelettudó a feladat és az útmutató szerzője felé.

Ha hivatalos megoldást küldesz be mielőtt te magad megoldanád a feladatot az kitiltást vonhat maga után!" -#: templates/problem/editorial.html:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Szerző:" @@ -4133,36 +4185,36 @@ msgstr "Időkorlát:" msgid "Memory limit:" msgstr "Memóriakorlát:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "Feladat típus" msgstr[1] "Feladat típusok" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "Engedélyezett nyelvek" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "Nincs jelenleg online %(lang)s tesztelő" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "Pontosítást kérek" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "Hiba jelentése" @@ -4207,7 +4259,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4254,7 +4306,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4374,12 +4426,12 @@ msgid "Default language" msgstr "Alapértelmezett nyelv" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "Kapcsolódó csoportok" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4395,57 +4447,93 @@ msgstr "Felhasználási feltételek" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4526,15 +4614,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4750,121 +4838,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "Matek motor" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/hu/LC_MESSAGES/djangojs.po b/locale/hu/LC_MESSAGES/djangojs.po index 61196feb5c..2e6d3a911b 100644 --- a/locale/hu/LC_MESSAGES/djangojs.po +++ b/locale/hu/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" diff --git a/locale/it/LC_MESSAGES/django.po b/locale/it/LC_MESSAGES/django.po index 58086d017b..ba7ac8bcaa 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "" @@ -115,112 +115,112 @@ msgstr "" msgid "Associated page" msgstr "" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -236,9 +236,9 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "" @@ -246,8 +246,8 @@ msgstr "" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -255,69 +255,69 @@ msgstr "" msgid "Describe the changes you made (optional)" msgstr "" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "" -#: judge/admin/problem.py:191 +#: 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] "" msgstr[1] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" @@ -325,35 +325,35 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" @@ -506,115 +506,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -694,7 +695,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -735,7 +736,7 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." +msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1203,7 +1220,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1211,7 +1228,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1247,34 +1264,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1304,7 +1293,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1324,7 +1313,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1353,232 +1342,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1690,112 +1699,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2108,210 +2129,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2359,6 +2380,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2381,19 +2406,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2506,7 +2535,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2514,125 +2543,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2661,163 +2695,177 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2887,52 +2935,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2940,7 +2988,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -2948,74 +2996,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3032,40 +3080,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3074,87 +3122,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3279,11 +3331,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3476,7 +3528,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3679,19 +3731,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3966,7 +4018,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4133,36 +4185,36 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4207,7 +4259,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4254,7 +4306,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4374,12 +4426,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4395,57 +4447,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4526,15 +4614,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4750,121 +4838,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/it/LC_MESSAGES/djangojs.po b/locale/it/LC_MESSAGES/djangojs.po index 74edd17776..d6eee2f033 100644 --- a/locale/it/LC_MESSAGES/djangojs.po +++ b/locale/it/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" diff --git a/locale/ja/LC_MESSAGES/django.po b/locale/ja/LC_MESSAGES/django.po index 6b95fd42d7..18fce6eaa1 100644 --- a/locale/ja/LC_MESSAGES/django.po +++ b/locale/ja/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "ドイツ語" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "英語" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "スペイン語" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "フランス語" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "クロアチア語" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "ハンガリー語" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "日本語" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "韓国語" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "ポルトガル語 (ブラジル)" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "ルーマニア語" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "ロシア語" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "セルビア語(ラテン)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "トルコ語" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "ベトナム語" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "簡体字中国語" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "繁体字中国語" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "ホーム" @@ -113,106 +113,106 @@ msgstr "コメントの非表示を解除する" msgid "Associated page" msgstr "関連するページ" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "含まれているコンテスト" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "課題" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "設定" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "スケジュール" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "詳細" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "フォーマット" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "評価" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "アクセス" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "正義" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d 個の課題を公開しました。" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "課題を公開する" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d 個の課題を非公開としました。" -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "課題を非公開にする" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d 人の参加者を再計算。" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "再計算の結果" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "利用者名" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "仮想" @@ -228,9 +228,9 @@ msgstr "内容" msgid "Summary" msgstr "概要" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "利用者" @@ -238,8 +238,8 @@ msgstr "利用者" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "サイト上で表示する" @@ -247,66 +247,66 @@ msgstr "サイト上で表示する" msgid "Describe the changes you made (optional)" msgstr "あなたの変更を記述する(オプショナル)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "ソーシャルメディア" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "分類" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "点数" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "制限" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "言語" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "履歴" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "著者" -#: judge/admin/problem.py:191 +#: 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] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: 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 個の課題はパブリックとして印付けられました。" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "課題をパブリックに印付けます。" -#: judge/admin/problem.py:211 +#: 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 個の課題はプライベートとして印付けられました。" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "課題をプライベートに印付けます" @@ -314,34 +314,34 @@ msgstr "課題をプライベートに印付けます" msgid "timezone" msgstr "時間帯" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "利用者" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "電子メール" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "時間帯" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "入会日" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d 人の利用者の得点が再計算されました。" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "得点を再計算する" @@ -493,115 +493,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "コンテストの更新を購読する" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "実験的な機能を有効化する" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "あなたは {count} 個以上の公開組織に参加できない場合があります。" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "パスワード" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "課題のコードは ^[a-z0-9]+$ でなければなりません" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "このコードを使用している問題はすでに存在しています。" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "コンテスト id は ^[a-z0-9]+$ でなければなりません" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "同じキーを持つコンテストはすでに存在しています。" @@ -681,7 +682,7 @@ msgid "comments" msgstr "コメント" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "%s の論説" @@ -722,7 +723,7 @@ msgstr "タグの説明" msgid "contest tag" msgstr "コンテストのタグ" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "コンテストのタグ" @@ -747,410 +748,426 @@ msgid "contest name" msgstr "コンテスト名" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "これらの人々 は、コンテストを編集することができます。" +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +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 msgid "description" msgstr "説明" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "課題" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "開始時刻" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "終了時刻" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "時間制限" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "公開されています" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "評価されているコンテスト" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "このコンテストを評価できるようにするか。" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "コメントがありません" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "コメントではなく解説システムを使う。" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "全てを評価する" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "参加している全ての利用者を評価する。" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "評価から除外する" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "プライベートな参加者" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "もしプライベートであれば、その参加者のみがコンテストを見ることができます。" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "課題のタグを非表示にする" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "課題タグをデフォルトで非表示にするかどうか" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "予備テストのみ実行する" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "組織へプライベートにする" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "組織" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "もしプライベートであれば、組織の者だけがコンテストを見ることができます" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "OpenGraph 画像" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "ライブ参加者の人数" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "コンテスト概要" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "ソーシャルメディアなどのメタ説明タグに表示されるプレーンテキスト。" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "アクセスコード" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "感謝しない人" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "選択した利用者の、このコンテストへの参加を禁止する。" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "プライベートのコンテストを見る" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "自分のコンテストを編集する" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "全てのコンテストを編集する" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "コンテストをクローンする" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "MOSSコンテスト" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "コンテストを評価する" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "コンテストのアクセス コード" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "プライベートなコンテストの生成" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "コンテスト" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "コンテスト" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "関連するコンテスト" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "得点" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "累積時間" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "仮想参加 id" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "%s は %s を観戦している" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "%s は %s 中で v%d として参加" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s は %s に参加" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "コンテスト参加者" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "コンテスト参加者" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "課題" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "点数" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "部分点" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "予備テストされているか" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "順番" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "出力プレフィックス長のオーバーライド" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "なぜあなたが提出できない課題を含むのか?" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "コンテストの課題" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "コンテストの課題" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "提出" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "参加者" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "この提出物が予備テストだけを実行したのかどうか。" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "コンテスト提出" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "コンテスト提出" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "順位" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "評価" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "変動率" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "最後の評価" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "コンテストの評価" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "コンテストの評価" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1190,7 +1207,7 @@ msgstr "親項目" msgid "post title" msgstr "投稿の題目" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "著者" @@ -1198,7 +1215,7 @@ msgstr "著者" msgid "slug" msgstr "スラグ" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "一般公開" @@ -1234,34 +1251,6 @@ msgstr "ブログ投稿" msgid "blog posts" msgstr "ブログ投稿" -#: judge/models/message.py:11 -msgid "message title" -msgstr "メッセージ題目" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "メッセージ本文" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "送信者" - -#: judge/models/message.py:14 -msgid "target" -msgstr "宛先" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "メッセージのタイムスタンプ" - -#: judge/models/message.py:16 -msgid "read" -msgstr "読む" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "スレッド中のメッセージ" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1279,7 +1268,7 @@ msgstr "課題分類名" msgid "problem type" msgstr "課題のタイプ" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "課題のタイプ" @@ -1291,7 +1280,7 @@ msgstr "課題のグループ ID" msgid "problem group name" msgstr "課題のグループ名" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "課題グループ" @@ -1311,7 +1300,7 @@ msgstr "リンク" msgid "full name" msgstr "氏名" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "短縮名" @@ -1340,232 +1329,252 @@ msgstr "ライセンス" msgid "licenses" msgstr "ライセンス" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "課題のコード" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "問題に対する短くて唯一なコード、URL で /problem/ の後に使用される" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "課題名" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "課題本文" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "作成者" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "キュレーター" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "テスター" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "この課題の秒単位での制限時間。小数秒(例えば1.5)はサポートされています。" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "メモリ制限" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "この課題のメモリ制限、キロバイト単位(例えば 64 mb = 65536 キロバイト)。" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "部分点を許す" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "許可されている言語" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "手動で管理されている" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "発行年月日" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "下位互換性を保つのために自動発行する魔法のような能力は持ちません。" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "課題の概要" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "課題を複製する" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "言語" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "翻訳された名前" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "翻訳された説明" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "翻訳された課題" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "翻訳された課題" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "解説された課題" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "解説本文" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "解説のタイムスタンプ" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "言語固有のリソース制限" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "言語固有のリソース制限" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "関連する課題" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "発行日" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "編集内容" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "解答" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "解答" @@ -1677,112 +1686,112 @@ msgstr "点数" msgid "case is pretest?" msgstr "予備テストのケースか?" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "組織の名称" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "コンテスト中に利用者名の横に表示されます" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "組織の説明" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "管理者" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "この組織を編集できる人" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "作成日" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "オープンな組織か?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "組織への参加を許可する" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "最大サイズ" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "この組織の最大利用者数、プライベートな組織にのみ適用される" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "学生のアクセスコード" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "組織" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "関連する利用者" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "自己紹介" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "位置" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "好みの言語" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "最終アクセス時刻" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "最終 IP アドレス" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "順位を表示する" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1791,155 +1800,167 @@ msgstr "" msgid "Admin" msgstr "管理" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "コメントミュート" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "ある利用者は沈黙の時に能力を発揮する" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "利用者スクリプト" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "サイトのカスタマイズするためのユーザー定義 JavaScript。" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "現在のコンテスト" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "数式エンジン" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "数式の表示に使用されるレンダリングエンジン" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "内部メモ" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "ユーザープロフィール" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "ユーザープロフィール" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "要求時刻" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "状態" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "理由" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "組織への参加要求" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "組織への参加要求" @@ -2095,210 +2116,210 @@ msgstr "判定器" msgid "judge" msgstr "判定器" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "合格した" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "間違った解答" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "時間制限を超過しました" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "メモリの制限を超過しました" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "出力制限を超過しました" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "不正な戻り値" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "ランタイムエラー" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "コンパイル エラー" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "内部エラー" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "短絡" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "中断された" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "順番待ち" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "処理中" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "採点中" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "完了" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "内部エラー(判定サーバエラー)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "提出時刻" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "実行時間" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "メモリ使用量" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "付与された点数" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "提出言語" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "状態" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "結果" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "コンパイルエラー" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "バッチのケース" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "テストケースの点数" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "テストケースの合計点" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "判定された" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" -msgstr "管理者により再判定された" - #: judge/models/submission.py:83 +msgid "last rejudge date by admin" +msgstr "" + +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "予備テストのみ実行された" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "提出" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "関連する提出物" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "ソースコード" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "テストケースの ID" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "状態フラグ" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "可能な点数" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "バッチ番号" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "判定のフィードバック" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "プログラムの出力" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "提出テストケース" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "提出テストケース" @@ -2346,6 +2367,10 @@ msgstr "チケット" msgid "poster" msgstr "投稿者" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "メッセージ本文" + #: judge/models/ticket.py:31 msgid "message time" msgstr "メッセージの時刻" @@ -2368,19 +2393,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2490,7 +2519,7 @@ msgstr "" msgid "You already voted." msgstr "あなたは既に投票しました。" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "サイトから編集された" @@ -2498,125 +2527,130 @@ msgstr "サイトから編集された" msgid "Editing comment" msgstr "コメントの編集" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "そのようなコンテストはありません" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "鍵 \"%s\" を持つコンテストは見つかりませんでした。" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "コンテスト" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "このようなコンテストは見つかりませんでした。" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "コンテスト \"%s\" へのアクセスは拒否されました" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "開催中ではないコンテスト" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" は現在開催中ではありません。" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "既にコンテストに参加しています" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "あなたは既にコンテストに参加しています: \"%s\"。" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "\"%s\" のアクセスコードを入力してください" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "あなたはコンテストに参加していません: \"%s\"。" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "%(month)s 年のコンテスト" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "%s 順位表" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "あなたの %s への参加" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "%s の %s への参加" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "ライブ" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "参加" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "コンテストタグ: %s" @@ -2645,161 +2679,175 @@ msgstr "破損ページ %s" msgid "Runtimes" msgstr "ランタイム" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "このような組織はありません" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "鍵 \"%s\" を持つ組織は見つかりませんでした。" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "このような組織を見つけることができませんでした。" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "組織" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s のメンバー" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "所属している組織" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "あなたは、既にこの組織にしょぞくしています。" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "この組織は公開ではありません。" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "組織から脱退する" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "あなたは \"%s\" に所属していません。" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "%s への参加を申し込む" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "参加申込みの詳細" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "%s への参加申込みを管理する" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "あなたの組織はあと %d 人のメンバーしか受け入れられません。あなたは %d 人の利用者を承認できません。" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d 人の利用者を承認しました。" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d 人の利用者を拒否しました。" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "%s を編集" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "組織を編集できません" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "あなたは、この組織を編集することは許可されていません。" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "あなたはこの組織から人を追い出すことを許可されていません。" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "利用者を追い出せません" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "あなたが追い出そうとしている利用者は存在しません!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "あなたが追い出そうとしているユーザは組織内にいません: %s 。" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "そのような課題はありません" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "コード \"%s\" を有する課題は見つかりませんでした。" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} の論説" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} の論説" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "課題" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "提出が禁止された" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "あなたはこの課題に感謝しない人として宣言されている。あなたはこの課題に提出することを永続的に禁止されている。" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "提出物が多過ぎます" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "あなたは、この課題の提出制限を超えました" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "ジェッカー引数は JSON オブジェクトでなければなりません。" @@ -2868,52 +2916,52 @@ msgstr "%s の最優秀解答" msgid "Best solutions for {0}" msgstr "{0} の最優秀解答" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "%(contest)s 中の %(problem)s への最優秀解答" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "%(contest)s の課題 %(number)s への最優秀解答" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "{2} 中の {0} への最優秀解答" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "{1} 中の課題 {0} への最優秀解答" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "利用者名は文字、数字またはアンダースコアを含めることができます。" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "好みの言語" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "ニュースレターを購読しますか?" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "電子メールアドレス \"%s\" は既に使用されています。1アドレスにつき1登録だけが許されています。" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "あなたの電子メールプロバイダは不正利用の履歴のため許可されていません。信頼できる電子メールプロバイダを利用してください。" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "登録" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "認証の失敗" @@ -2921,7 +2969,7 @@ msgstr "認証の失敗" msgid "Language statistics" msgstr "言語の統計" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "状態" @@ -2929,74 +2977,74 @@ msgstr "状態" msgid "Version matrix" msgstr "バージョンマトリックス" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "%(user)s による %(problem)s への提出物" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "全ての提出物" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "私の全ての提出物" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "%s による全ての提出物" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "%s への全ての提出物" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "課題を通過しなければなりません" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "%(problem)s への私の提出物" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(problem)s への %(user)s による提出物" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "コンテストを通過しなければなりません" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "{4} 中の {2} への {0} による提出物" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "{3} 中の課題 {2} への {0} による提出物" @@ -3013,40 +3061,40 @@ msgstr "問題の説明" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "%s への新しいチケット" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "%(title)s - チケット %(id)d" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "チケットのページ %(number)d / %(total)d" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "新しいチケット: %s" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "#%(id)d, %(users)s に割り当てられた" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "、" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "誰もいません" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3055,87 +3103,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "そのような利用者はいません" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "利用者ハンドル \"%s\" はありません。" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "自分のアカウント" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "利用者 %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "ログイン" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "M j, Y, G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "サイトで更新された" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "プロフィールを編集する" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "リーダーボード" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3264,11 +3316,11 @@ msgstr "お知らせ" msgid "posted on {time}" msgstr "{time} に投稿された" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "解説" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "現時点では何も解説されていません。" @@ -3461,7 +3513,7 @@ msgid "Info" msgstr "情報" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "統計" @@ -3664,19 +3716,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "利用者の参加を見る" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "組織を表示する" @@ -3951,7 +4003,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "著者:" @@ -4116,34 +4168,34 @@ msgstr "制限時間:" msgid "Memory limit:" msgstr "メモリ制限:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "課題のタイプ" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "許可されている言語" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "%(lang)s はオンライン判定されません" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "解説を要求する" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "問題を報告する" @@ -4188,7 +4240,7 @@ msgstr "課題のタイプ" msgid "Point range" msgstr "点数の範囲" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "実行する" @@ -4234,7 +4286,7 @@ msgid "Invalid username or password." msgstr "不正な利用者名またはパスワードです。" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "ログイン!" @@ -4354,12 +4406,12 @@ msgid "Default language" msgstr "デフォルトの言語" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "所属組織" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "まもなく開催予定のコンテストを通知する" @@ -4375,57 +4427,93 @@ msgstr "利用規約・条件" msgid "Register!" msgstr "登録!" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4506,15 +4594,15 @@ msgstr "状態で絞り込む..." msgid "Filter by language..." msgstr "言語で絞り込む..." -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "提出物を絞り込む" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "あなたは切断されました。最終更新を表示するためにリフレッシュして下さい。" @@ -4729,121 +4817,125 @@ msgstr "ランク" msgid "Search by handle..." msgstr "ハンドルで検索..." -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "自己紹介" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "最寄りの大都市を選択してください" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "エディタのテーマ" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "数式エンジン" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "アバターを変更する" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "パスワードを変更する" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "利用者スクリプト" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "プロフィールの更新" diff --git a/locale/ja/LC_MESSAGES/djangojs.po b/locale/ja/LC_MESSAGES/djangojs.po index ce1aebaa91..ab9e175c25 100644 --- a/locale/ja/LC_MESSAGES/djangojs.po +++ b/locale/ja/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" diff --git a/locale/ko/LC_MESSAGES/django.po b/locale/ko/LC_MESSAGES/django.po index 65dbeda97b..9cc194697a 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "카탈루냐어" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "독일어" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "영어" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "스페인어" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "프랑스어" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "크로아티아어" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "헝가리어" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "일본어" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "한국어" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "포르투갈어 (브라질)" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "루마니아어" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "러시아어" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "세르비아어(라틴문자)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "터키어" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "베트남어" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "중국어(간체)" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "중국어(번체)" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "메인" @@ -113,106 +113,106 @@ msgstr "코멘트 보이기" msgid "Associated page" msgstr "관련 페이지" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "포함된 대회" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "문제" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "설정" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Scheduling" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "세부사항" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "순위" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "정의" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "공개 대회로 전환" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "비공개 대회로 전환" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "" -#: judge/admin/contest.py:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "사용자 이름" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "가상" @@ -228,9 +228,9 @@ msgstr "내용" msgid "Summary" msgstr "요약" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "사용자" @@ -238,8 +238,8 @@ msgstr "사용자" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "사이트에서 보기" @@ -247,66 +247,66 @@ msgstr "사이트에서 보기" msgid "Describe the changes you made (optional)" msgstr "변경 사항을 설명하세요. (선택사항)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "SNS" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "분류" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "포인트" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "제한" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "언어" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "히스토리" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "저자" -#: judge/admin/problem.py:191 +#: 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] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: 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개의 문제가 공개로 전환되었습니다." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "공개로 설정" -#: judge/admin/problem.py:211 +#: 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개의 문제가 비공개로 전환되었습니다." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "비공개로 설정" @@ -314,34 +314,34 @@ msgstr "비공개로 설정" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "사용자" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "이메일" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "시간대" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "가입한 날짜" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d명의 사용자 점수가 재계산되었습니다." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "점수 재계산" @@ -493,115 +493,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "대회 업데이트를 구독하세요." -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "베타 기능 활성화" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "{count}개보다 많은 공개 조직에 소속될 수 없습니다." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "비밀번호" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Contest id must be ^[a-z0-9]+$" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -681,7 +682,7 @@ msgid "comments" msgstr "코멘트" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -722,7 +723,7 @@ msgstr "태그 설명" msgid "contest tag" msgstr "대회 태그" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "대회 태그" @@ -747,410 +748,426 @@ msgid "contest name" msgstr "대회 이름" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "이 사람들은 대회를 편집할 권한이 있습니다." +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +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 msgid "description" msgstr "설명" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "문제" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "시작 시각" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "종료 시각" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "시간 제한" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "공개" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "대회 순위" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "대회 순위 표시 여부" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "코멘트 없음" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "코멘트 대신 수정 시스템을 사용하세요." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "모든 순위" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "참가한 모든 사용자에 대한 순위" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "순위에서 제외" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "문제 태그 숨기기" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "문제 태그 공개 여부 기본값" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "pretests만 실행" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "조직에 비공개" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "조직" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "비공개로 설정 시, 이 조직만 대회를 볼 수 있습니다." -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "OpenGraph 이미지" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "현재 접속되어 있는 참가자 수" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "대회 요약" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "액세스 코드" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "대회" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "대회" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "관련된 대회" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "점수" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "누적 시간" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "가상 참여 id" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s에서 %s" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "대회 참가" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "대회 참가자" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "문제" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "점수" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "부분" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "pretested 됨" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "순서" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "출력 접두사 길이 재정의" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "대회 문제" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "대회 문제" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "제출" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "참가 여부" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "Pretests에서만 이 제출이 실행되었는지 여부" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "대회 제출" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "대회 제출" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "등수" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "순위" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "변동" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "최근 순위" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "대회 순위" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "대회 순위" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1190,7 +1207,7 @@ msgstr "부모 항목" msgid "post title" msgstr "게시물 제목" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "저자" @@ -1198,7 +1215,7 @@ msgstr "저자" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "공개 여부" @@ -1234,34 +1251,6 @@ msgstr "블로그 게시물" msgid "blog posts" msgstr "블로그 게시물" -#: judge/models/message.py:11 -msgid "message title" -msgstr "메시지 제목" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "메시지 본문" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "보낸 사람" - -#: judge/models/message.py:14 -msgid "target" -msgstr "대상" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "메시지 타임스탬프" - -#: judge/models/message.py:16 -msgid "read" -msgstr "읽음" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "messages in the thread" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1279,7 +1268,7 @@ msgstr "문제 범주 이름" msgid "problem type" msgstr "문제 유형" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "문제 유형" @@ -1291,7 +1280,7 @@ msgstr "문제 그룹 ID" msgid "problem group name" msgstr "문제 그룹" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "문제 그룹" @@ -1311,7 +1300,7 @@ msgstr "링크" msgid "full name" msgstr "전체 이름" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "짧은 이름" @@ -1340,232 +1329,252 @@ msgstr "라이센스" msgid "licenses" msgstr "라이센스" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "문제 코드" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "문제 이름" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "문제 본문" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "제작자" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "curators" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "testers" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "메모리 제한" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "부분 점수 허용" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "허용된 언어" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "수동으로 관리됨" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "게시 날짜" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "문제 요약" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "언어" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "번역된 이름" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "번역된 설명" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "문제 번역" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "문제 번역" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "수정된 문제" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "수정사항" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "수정 타임스탬프" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "특정 언어 리소스 제한" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "특정 언어 리소스 제한" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "관련된 문제" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "솔루션" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "솔루션" @@ -1677,112 +1686,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "조직 이름" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "대회 동안 사용자 이름 옆에 표시됩니다." -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "조직 설명" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "관리자" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "이 조직을 편집할 수 있는 사람" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "만든 날짜" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "공개 조직인가?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "조직 가입 허용" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "최대 크기" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "이 조직의 최대 인원수(비공개 조직에만 적용)" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "학생 엑세스 코드" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "조직" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "연결된 사용자" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "자기소개" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "위치" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "기본 설정 언어" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "마지막 접속 시간" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "마지막 IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "순위 표시" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1791,155 +1800,167 @@ msgstr "" msgid "Admin" msgstr "관리자" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "코멘트 음소거" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "사용자 스크립트" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "사이트 수정을 위한 사용자 자바스크립트입니다." -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "현재 대회" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "math engine" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "사용자 프로파일" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "사용자 프로파일" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "요청 시간" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "상태" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "이유" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "조직 가입 요청" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "조직 가입 요청" @@ -2095,210 +2116,210 @@ msgstr "채점기" msgid "judge" msgstr "채점" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "통과" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "오답" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "시간 제한 초과" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "메모리 제한 초과" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "출력 제한 초과" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "잘못된 반환" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "런타임 에러" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "컴파일 에러" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "내부 에러" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "Short circuit" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "취소됨" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "대기열에 있음" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "처리중" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "채점중" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "완료" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "제출 시간" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "실행 시간" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "메모리 사용량" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "획득 포인트" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "제출 언어" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "상태" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "결과" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "컴파일 에러" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "batched 테스트 케이스" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "테스크 케이스 점수" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "테스트 케이스 총 점수" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" -msgstr "관리자에 의해 재채점" - #: judge/models/submission.py:83 +msgid "last rejudge date by admin" +msgstr "" + +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "pretest에서만 채점됨" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "제출" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "관련된 제출" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "소스 코드" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "test case ID" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "상태 flag" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "획득 가능한 포인트" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "batch number" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "채점 피드백" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "프로그램 출력" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "제출 테스트 케이스" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "제출 테스트 케이스" @@ -2346,6 +2367,10 @@ msgstr "티켓" msgid "poster" msgstr "포스터" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "메시지 본문" + #: judge/models/ticket.py:31 msgid "message time" msgstr "메시지 시간" @@ -2368,19 +2393,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2490,7 +2519,7 @@ msgstr "" msgid "You already voted." msgstr "이미 투표하셨습니다." -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "사이트에서 편집" @@ -2498,125 +2527,130 @@ msgstr "사이트에서 편집" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "그런 대회는 존재하지 않습니다." -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "키 %s로는 대회를 찾을 수 없습니다." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "대회" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "그런 대회를 찾을 수 있습니다." -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "%s 대회 접근이 거부되었습니다." -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "현재 진행중인 대회가 아닙니다." -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "%s는 현재 진행중이 아닙니다." -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "대회에 이미 있습니다." -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "현재 대회 %s에 이미 참가해 있습니다." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "현재 대회 %s에 참가중이 아닙니다." -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "%s 순위" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "%s에 대한 당신의 참가" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "%s's %s에 대한 참가" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "실시간" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "참여" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "대회 태그: %s" @@ -2645,161 +2679,175 @@ msgstr "손상된 페이지 %s" msgid "Runtimes" msgstr "런타임" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "존재하지 않는 조직" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "%s 조직을 찾을 수 없습니다." -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "그러한 조직을 찾을 수 없습니다." -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "조직" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s 멤버" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "조직 가입" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "이미 조직에 가입되어 있습니다." -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "이 조직은 공개되어 있지 않습니다." -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "조직 탈퇴" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "%s에 있지 않습니다." -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "%s 가입 신청" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "가입 신청 세부 사항" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "%s 가입 신청 가입" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "당신의 조직은 %d명의 회원만 더 가입이 가능합니다. %d명의 사용자 가입 승인이 불가합니다." -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d명 사용자 승인" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d명 거부" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "%s 편집중" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "조직 편집이 불가합니다." -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "조직을 편집할 권한이 없습니다." -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "조직 사용자를 탈퇴시킬 권한이 없습니다." -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "이 사용자를 탈퇴시킬 수 없습니다." -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "탈퇴시키려는 사용자가 존재하지 않습니다." -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "존재하지 않는 문제" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "%s 문제를 찾을 수 없습니다." -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "문제" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "Checker arguments must be a JSON object" @@ -2868,52 +2916,52 @@ msgstr "%s를 위한 best 솔루션" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "사용자 이름은 문자, 숫자, 또는 밑줄을 포함해야 합니다." -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "선호하는 언어" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "뉴스레터에 구독하시겠습니까?" -#: judge/views/register.py:45 +#: 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:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "스팸으로 인해 이 이메일 제공업체는 허용되지 않습니다. 다른 메일 주소를 사용해 주세요." -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "회원가입" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "인증 실패" @@ -2921,7 +2969,7 @@ msgstr "인증 실패" msgid "Language statistics" msgstr "언어 통계" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "현재 상태" @@ -2929,74 +2977,74 @@ msgstr "현재 상태" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "모든 제출들" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "내 모든 제출들" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "%(problem)s에 대한 나의 제출" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(problem)s에 대한 %(user)s의 제출" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "대회를 통화해야한다" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "{0}'s submissions for {2} in {4}" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "{0}'s submissions for problem {2} in {3}" @@ -3013,40 +3061,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3055,87 +3103,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "로그인" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3260,11 +3312,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3457,7 +3509,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3660,19 +3712,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3947,7 +3999,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4112,34 +4164,34 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4184,7 +4236,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4230,7 +4282,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4350,12 +4402,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4371,57 +4423,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4502,15 +4590,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4725,121 +4813,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/ko/LC_MESSAGES/djangojs.po b/locale/ko/LC_MESSAGES/djangojs.po index 51f8fe1f4c..62ada0aba5 100644 --- a/locale/ko/LC_MESSAGES/djangojs.po +++ b/locale/ko/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" diff --git a/locale/lt/LC_MESSAGES/django.po b/locale/lt/LC_MESSAGES/django.po index fb6e6cdde8..45d28819f2 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "" @@ -119,46 +119,46 @@ msgstr "" msgid "Associated page" msgstr "" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, 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:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, 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:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, 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:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -252,9 +252,9 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "" @@ -262,8 +262,8 @@ msgstr "" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -271,40 +271,40 @@ msgstr "" msgid "Describe the changes you made (optional)" msgstr "" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "" -#: judge/admin/problem.py:191 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -313,11 +313,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -326,11 +326,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -339,7 +339,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" @@ -347,28 +347,28 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." @@ -377,7 +377,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" @@ -532,115 +532,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -720,7 +721,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -761,7 +762,7 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -786,410 +787,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." +msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1229,7 +1246,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1237,7 +1254,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1273,34 +1290,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1318,7 +1307,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1330,7 +1319,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1350,7 +1339,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1379,232 +1368,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1716,112 +1725,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1830,155 +1839,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2134,210 +2155,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2385,6 +2406,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2407,19 +2432,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2538,7 +2567,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2546,125 +2575,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2693,71 +2727,71 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2766,7 +2800,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2775,85 +2809,99 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2925,52 +2973,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2978,7 +3026,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -2986,74 +3034,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3070,40 +3118,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3112,87 +3160,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3317,11 +3369,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3514,7 +3566,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3717,19 +3769,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -4004,7 +4056,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4175,7 +4227,7 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" @@ -4183,16 +4235,16 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" @@ -4200,15 +4252,15 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4253,7 +4305,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4302,7 +4354,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4422,12 +4474,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4443,57 +4495,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4574,15 +4662,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4800,121 +4888,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/lt/LC_MESSAGES/djangojs.po b/locale/lt/LC_MESSAGES/djangojs.po index aca7eb20c0..74b395bfa0 100644 --- a/locale/lt/LC_MESSAGES/djangojs.po +++ b/locale/lt/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Lithuanian\n" "Language: lt_LT\n" diff --git a/locale/nl/LC_MESSAGES/django.po b/locale/nl/LC_MESSAGES/django.po index 7260f0bba3..00d1e60a17 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "" @@ -115,112 +115,112 @@ msgstr "" msgid "Associated page" msgstr "" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -236,9 +236,9 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "" @@ -246,8 +246,8 @@ msgstr "" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -255,69 +255,69 @@ msgstr "" msgid "Describe the changes you made (optional)" msgstr "" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "" -#: judge/admin/problem.py:191 +#: 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] "" msgstr[1] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" @@ -325,35 +325,35 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" @@ -506,115 +506,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -694,7 +695,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -735,7 +736,7 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." +msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1203,7 +1220,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1211,7 +1228,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1247,34 +1264,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1304,7 +1293,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1324,7 +1313,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1353,232 +1342,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1690,112 +1699,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2108,210 +2129,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2359,6 +2380,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2381,19 +2406,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2506,7 +2535,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2514,125 +2543,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2661,163 +2695,177 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2887,52 +2935,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2940,7 +2988,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -2948,74 +2996,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3032,40 +3080,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3074,87 +3122,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3279,11 +3331,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3476,7 +3528,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3679,19 +3731,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3966,7 +4018,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4133,36 +4185,36 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4207,7 +4259,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4254,7 +4306,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4374,12 +4426,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4395,57 +4447,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4526,15 +4614,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4750,121 +4838,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/nl/LC_MESSAGES/djangojs.po b/locale/nl/LC_MESSAGES/djangojs.po index 283df8e324..99aa987b88 100644 --- a/locale/nl/LC_MESSAGES/djangojs.po +++ b/locale/nl/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" diff --git a/locale/pl/LC_MESSAGES/django.po b/locale/pl/LC_MESSAGES/django.po index ef9628dc53..d3a8e5305c 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "kataloński" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Niemiecki" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Angielski" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Hiszpański" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Chorwacki" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Węgierski" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "japoński" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Koreański" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Rumuński" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Rosyjski" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Serbski (alfabet łaciński)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Turecki" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Wietnamski" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Chiński Uproszczony" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "tradycyjny chiński" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Strona główna" @@ -119,46 +119,46 @@ msgstr "Pokaż komentarze" msgid "Associated page" msgstr "Dołączona strona" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Załączniki" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Problem" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "Ustawienia" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Planowanie" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Szczegóły" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "Format" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Ocena" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "Dostęp" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, 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:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, 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:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, 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:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "nazwa użytkownika" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -252,9 +252,9 @@ msgstr "Zawartość" msgid "Summary" msgstr "Podsumowanie" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "użytkownik" @@ -262,8 +262,8 @@ msgstr "użytkownik" msgid "object" msgstr "obiekt" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Zobacz na stronie" @@ -271,40 +271,40 @@ msgstr "Zobacz na stronie" msgid "Describe the changes you made (optional)" msgstr "Opisz wprowadzone zmiany (opcjonalne)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Media społecznościowe" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Taksonomia" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Punkty" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Limity" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Język" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Historia" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Autorzy" -#: judge/admin/problem.py:191 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -313,11 +313,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "Ustaw datę publikacji" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -326,11 +326,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Oznacz problemy jako publiczne" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -339,7 +339,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" @@ -347,28 +347,28 @@ msgstr "" msgid "timezone" msgstr "strefa czasowa" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Użytkownik" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Adres e-mail" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Strefa czasowa" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "data dołączenia" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." @@ -377,7 +377,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Przelicz punktację" @@ -532,115 +532,116 @@ msgstr "IOI" msgid "IOI (pre-2016)" msgstr "IOI (przed 2016 r.)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "Tokeny uwierzytelniania dwuskładnikowego muszą składać się z 6 cyfr dziesiętnych." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "Nieprawidłowy token uwierzytelniania dwuskładnikowego." -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "Pobrać komentarze?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "Każdy sędzia" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Nazwa użytkownika" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Hasło" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "Nieprawidłowa długość kodu." -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -720,7 +721,7 @@ msgid "comments" msgstr "komentarze" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -761,7 +762,7 @@ msgstr "opis tagu" msgid "contest tag" msgstr "tag konkursu" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "tagi konkursu" @@ -786,410 +787,426 @@ msgid "contest name" msgstr "nazwa konkursu" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Ci ludzie będą mogli edytować konkurs." +msgid "These users will be able to edit the contest." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "opis" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "problemy" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "Czas rozpoczęcia" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "Godzina zakończenia" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "Limit czasowy" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "publicznie widoczny" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "zobacz tabelę wyników konkursu" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "brak komentarzy" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "oceń wszystko" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "ukryj tagi problemu" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "podsumowanie konkursu" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "kod dostępu" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "format konkursu" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "konkurs" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "konkursy" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "wynik" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "problem" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "punkty" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "częściowe" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "zgłoszenie" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "ocena" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1229,7 +1246,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "autorzy" @@ -1237,7 +1254,7 @@ msgstr "autorzy" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1273,34 +1290,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "treść wiadomości" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "nadawca" - -#: judge/models/message.py:14 -msgid "target" -msgstr "odbiorca" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "przeczytano" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "wiadomości w wątku" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1318,7 +1307,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1330,7 +1319,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1350,7 +1339,7 @@ msgstr "link" msgid "full name" msgstr "pełna nazwa" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "krótka nazwa" @@ -1379,232 +1368,252 @@ msgstr "licencja" msgid "licenses" msgstr "licencje" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "kod problemu" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 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:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "nazwa problemu" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 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:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "treść problemu" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "twórcy" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "testerzy" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "limit pamięci" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "dozwolone języki" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "rozwiązanie" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "rozwiązania" @@ -1716,112 +1725,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "data utworzenia" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1830,155 +1839,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2134,210 +2155,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "wynik" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "błędy kompilacji" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "zgłoszenia" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "kod źródłowy" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2385,6 +2406,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "treść wiadomości" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2407,19 +2432,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2538,7 +2567,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2546,125 +2575,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2693,71 +2727,71 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2766,7 +2800,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2775,85 +2809,99 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2925,52 +2973,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2978,7 +3026,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -2986,74 +3034,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3070,40 +3118,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3112,87 +3160,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Logowanie" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3317,11 +3369,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3514,7 +3566,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3717,19 +3769,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -4004,7 +4056,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4175,7 +4227,7 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" @@ -4183,16 +4235,16 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" @@ -4200,15 +4252,15 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4253,7 +4305,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4302,7 +4354,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4422,12 +4474,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4443,57 +4495,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4574,15 +4662,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4800,121 +4888,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/pl/LC_MESSAGES/djangojs.po b/locale/pl/LC_MESSAGES/djangojs.po index 62a3714cb2..96683efb78 100644 --- a/locale/pl/LC_MESSAGES/djangojs.po +++ b/locale/pl/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" diff --git a/locale/pt/LC_MESSAGES/django.po b/locale/pt/LC_MESSAGES/django.po index 367b7cd883..14812696c6 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "" @@ -115,112 +115,112 @@ msgstr "" msgid "Associated page" msgstr "" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -236,9 +236,9 @@ msgstr "" msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "" @@ -246,8 +246,8 @@ msgstr "" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -255,69 +255,69 @@ msgstr "" msgid "Describe the changes you made (optional)" msgstr "" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "" -#: judge/admin/problem.py:191 +#: 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] "" msgstr[1] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" @@ -325,35 +325,35 @@ msgstr "" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" @@ -506,115 +506,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -694,7 +695,7 @@ msgid "comments" msgstr "" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -735,7 +736,7 @@ msgstr "" msgid "contest tag" msgstr "" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." +msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1203,7 +1220,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1211,7 +1228,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1247,34 +1264,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1304,7 +1293,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1324,7 +1313,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1353,232 +1342,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1690,112 +1699,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2108,210 +2129,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2359,6 +2380,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2381,19 +2406,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2506,7 +2535,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2514,125 +2543,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2661,163 +2695,177 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2887,52 +2935,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2940,7 +2988,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -2948,74 +2996,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3032,40 +3080,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3074,87 +3122,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3279,11 +3331,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3476,7 +3528,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3679,19 +3731,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3966,7 +4018,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4133,36 +4185,36 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4207,7 +4259,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4254,7 +4306,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4374,12 +4426,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4395,57 +4447,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4526,15 +4614,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4750,121 +4838,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/pt/LC_MESSAGES/djangojs.po b/locale/pt/LC_MESSAGES/djangojs.po index 8dd8a4db48..34e6cf81ca 100644 --- a/locale/pt/LC_MESSAGES/djangojs.po +++ b/locale/pt/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" diff --git a/locale/ro/LC_MESSAGES/django.po b/locale/ro/LC_MESSAGES/django.po index 56235448fd..214a821e8f 100644 --- a/locale/ro/LC_MESSAGES/django.po +++ b/locale/ro/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "Catalană" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Germană" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Engleză" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Spaniolă" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Franceză" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Croată" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Maghiară" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "Japoneză" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Coreeană" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "Portugheză braziliană" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Română" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Rusă" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Sârbă (Latină)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Turcă" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Vietnameză" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Chineză simplificată" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "Chineză Tradiţională" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Start" @@ -117,46 +117,46 @@ msgstr "Reafişează comentariile" msgid "Associated page" msgstr "Pagină asociată" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Concursuri incluse" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Problemă" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "Setări" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Programare" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Detalii" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Rating" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "Acces" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Justiţie" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "Marchează concursurile ca și vizibile" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "Marchează concursurile ca ascunse" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, 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:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "Blochează submiterea în concurs" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, 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:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "Deblochează submisiile către concurs." -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, 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:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "" @@ -244,9 +244,9 @@ msgstr "Conţinut" msgid "Summary" msgstr "Rezumat" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "" @@ -254,8 +254,8 @@ msgstr "" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Vezi pe site" @@ -263,40 +263,40 @@ msgstr "Vezi pe site" msgid "Describe the changes you made (optional)" msgstr "Descrie modificările făcute (opţional)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Taxonomie" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Puncte" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Limite" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Limbaj" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Istoric" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Autori" -#: judge/admin/problem.py:191 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -304,11 +304,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -316,11 +316,11 @@ msgstr[0] "%d problemă marcată ca publică cu succes." msgstr[1] "%d problemă marcată ca publică cu succes." msgstr[2] "%d probleme marcate ca publice cu succes." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Marchează probleme ca publice" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -328,7 +328,7 @@ msgstr[0] "%d problemă marcată ca privată cu succes." msgstr[1] "%d problemă marcată ca privată cu succes." msgstr[2] "%d probleme marcate ca private cu succes." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Marchează probleme ca private" @@ -336,28 +336,28 @@ msgstr "Marchează probleme ca private" msgid "timezone" msgstr "" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Utilizator" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Email" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Fus orar" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." @@ -365,7 +365,7 @@ msgstr[0] "%d utilizator au scoruri recalculate." msgstr[1] "%d utilizator au scoruri recalculate." msgstr[2] "%d utilizatorii au scoruri recalculate." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Recalculați scorurile" @@ -519,115 +519,116 @@ msgstr "IOI" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Nume de utilizator" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Codul problemei trebuie să fie ^[a-z0-9]+$" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Identificatorul de concurs trebuie să fie ^[a-z0-9]+$" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -707,7 +708,7 @@ msgid "comments" msgstr "comentarii" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -748,7 +749,7 @@ msgstr "descrierea etichetei" msgid "contest tag" msgstr "eticheta concursului" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "etichetele concursului" @@ -773,410 +774,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Aceste persoane vor putea să editeze concursul." +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "probleme" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Dacă acest concurs poate fi evaluat." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "Evaluează toţi utilizatorii care s-au inscris." -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "organizații" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "Dacă e privat, doar aceste organizaţii pot vedea acest concurs" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "Imagine OpenGraph" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "concurs" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "concursuri" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "scor" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "participarea la concurs" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "participările la concurs" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "problemă" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "puncte" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "problema din concurs" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "problemele din concurs" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "submisie" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "submisie de concurs" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "submisii de concurs" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "rating de la concurs" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "ratinguri de la concurs" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1216,7 +1233,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "" @@ -1224,7 +1241,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1260,34 +1277,6 @@ msgstr "postare pe blog" msgid "blog posts" msgstr "postări pe blog" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1305,7 +1294,7 @@ msgstr "" msgid "problem type" msgstr "tipul problemei" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "tipurile problemei" @@ -1317,7 +1306,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "grupul problemei" @@ -1337,7 +1326,7 @@ msgstr "" msgid "full name" msgstr "nume complet" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1366,232 +1355,252 @@ msgstr "licență" msgid "licenses" msgstr "licențe" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "codul problemei" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "numele problemei" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "Duplică problemă" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "limbaj" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "limita de resurse specifică limbii" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "limite de resurse specifică limbii" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "soluţie" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "soluţii" @@ -1703,112 +1712,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "Afişat lângă numele de utilizator în timpul concursurilor" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "Cei care pot edita această organizaţie" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "Permite aderarea la organizaţie" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "organizație" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "ultimul IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1817,155 +1826,167 @@ msgstr "" msgid "Admin" msgstr "Administrare" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "Pe unii utilizatori e preferabil sa nu ȋi auzi." -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "JavaScript definit de utilizator pentru personalizarea site-ului." -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "profil utilizator" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "profiluri utilizatori" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "cerere de a se alătura organizaţiei" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "cereri de a se alătura organizaţiei" @@ -2121,210 +2142,210 @@ msgstr "evaluatoare" msgid "judge" msgstr "evaluator" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Accepted" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "Wrong Answer" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "Time Limit Exceeded" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "Memory Limit Exceeded" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "Output Limit Exceeded" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "Invalid Return" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "Runtime Error" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Compile Error" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "Internal Error" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "Short circuit" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "Aborted" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "Queued" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "Processing" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "Grading" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "Completed" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "Internal Error (judging server error)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "submisii" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "testul submisiei" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "testele submisiei" @@ -2372,6 +2393,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2394,19 +2419,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2522,7 +2551,7 @@ msgstr "" msgid "You already voted." msgstr "Ai votat deja." -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "Editat de pe site" @@ -2530,125 +2559,130 @@ msgstr "Editat de pe site" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "Niciun concurs de acest fel" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Niciun concurs găsit cu cheia \"%s\"." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "Concursuri" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "Nu am putut găsi un concurs de acest fel." -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Nu aveți acces la concursul \"%s\"" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "Concursul nu este în curs de desfăşurare" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "Momentan, \"%s\" nu este în curs de desfăşurare." -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "Deja în concurs" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "Sunteţi deja într-un concurs: \"%s\"." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "Nu sunteţi în concursul \"%s\"." -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "Concursuri în %(month)s" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2677,71 +2711,71 @@ msgstr "pagina corupta %s" msgid "Runtimes" msgstr "Limbaje" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "Nicio organizaţie de acest fel" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Nicio organizaţie găsită cu cheia \"%s\"." -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "Nu am putut găsi organizaţii de acest fel." -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizaţii" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s Membri" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "Aderarea la organizaţie" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "Sunteţi deja în organizaţie." -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "Această organizaţie nu este deschisă." -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "Părăsire organizaţie" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "Nu sunteţi în \"%s\"." -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "Cerere de adăugare la %s" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "Detalii despre cererea de adăugare" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "Gestionarea cererilor de asociere cu %s" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2749,7 +2783,7 @@ msgstr[0] "Aprobat %d utilizator." msgstr[1] "Aprobat %d utilizatori." msgstr[2] "Aprobat %d utilizatori." -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2757,85 +2791,99 @@ msgstr[0] "Respins %d utilizator." msgstr[1] "Respins %d utilizatori." msgstr[2] "Respins %d utilizatori." -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "Editare %s" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "Nu puteţi edita organizaţia" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "Nu aveţi permisiunea pentru a edita această organizaţie." -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "Nicio problemă de acest fel" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "Imposibil de găsit probleme cu codul \"%s\"." -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Probleme" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "Ați fost declarat \"persoană neacceptată\" pentru această problemă. Sunteți exclus definitiv de la submiterea acestei probleme." -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2906,52 +2954,52 @@ msgstr "Cele mai bune soluţii pentru %s" msgid "Best solutions for {0}" msgstr "Cele mai bune soluţii pentru {0}" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Cele mai bune soluţii pentru %(problem)s în %(contest)s" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "Cele mai bune soluţii pentru {0} în {2}" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "Numele de utilizator trebuie să conţină litere, numere sau caractere de subliniere" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Limba preferată" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "Adresa de email \"%s\" a fost deja folosită. O singură înregistrare este permisă pe fiecare adresă." -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "Furnizorul dvs. de e-mail nu este permis datorită istoriei de abuz. Vă rugăm să folosiţi un furnizor de e-mail respectabil." -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Înregistrare" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "Problemă la autentificare" @@ -2959,7 +3007,7 @@ msgstr "Problemă la autentificare" msgid "Language statistics" msgstr "Statistici ale limbei" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Stare" @@ -2967,74 +3015,74 @@ msgstr "Stare" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Soluţia problemei %(problem)s de %(user)s" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Toate soluţile" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "Toate soluţiile submise de %s" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "Toate soluţiile pentru %s" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "Trebuie să rezolvaţi o problemă" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Soluţiile lui %(user)s pentru %(problem)s" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "Trebuie să completaţi un concurs" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "Soluţiile lui {0} pentru {2} în {4}" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3051,40 +3099,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3093,87 +3141,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "Niciun astfel de utilizator" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "Porecla de utilizator \"%s\" nu există." -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "Utilizatorul %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Login" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "M j, Y, G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "Actualizat pe loc" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Editează-ți profilul" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3298,11 +3350,11 @@ msgstr "" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3495,7 +3547,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "Stastici" @@ -3698,19 +3750,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3985,7 +4037,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Autor:" @@ -4154,38 +4206,38 @@ msgstr "Limita de timp:" msgid "Memory limit:" msgstr "Limita de memorie:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "Tip de problemă" msgstr[1] "Tipuri de probleme" msgstr[2] "Tipuri de probleme" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "Limbajele acceptate" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "Nici un judge pentru %(lang)s e online" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4230,7 +4282,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "Caută" @@ -4278,7 +4330,7 @@ msgid "Invalid username or password." msgstr "Nume de utilizator sau parolă invalide." #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "Conectaţi-vă!" @@ -4398,12 +4450,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4419,57 +4471,93 @@ msgstr "" msgid "Register!" msgstr "Înscrie-te!" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4550,15 +4638,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4775,121 +4863,125 @@ msgstr "Rang" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "Auto-descriere" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "Schimbați avatarul" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "Schimbați parola" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "Script de utilizator" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "Actualizați profilul" diff --git a/locale/ro/LC_MESSAGES/djangojs.po b/locale/ro/LC_MESSAGES/djangojs.po index d632ea3892..4c0fa99301 100644 --- a/locale/ro/LC_MESSAGES/djangojs.po +++ b/locale/ro/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po index 74dcf1abff..291594d72c 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-23 00:29\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:364 +#: dmoj/settings.py:365 msgid "Catalan" -msgstr "" +msgstr "Каталанский" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "немецкий" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "английский" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Испанский" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "французский" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Хорватский" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Венгерский" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "Японский" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Корейский" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "Бразильский португальский" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Румынский" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "русский" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Сербский (латиница)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Турецкий" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Вьетнамский" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Упрощенный китайский" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "Традиционный китайский" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Главная" @@ -119,46 +119,46 @@ msgstr "Показать комментарии" msgid "Associated page" msgstr "Связанная страница" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Включены конкурсы" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Проблема" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "Настройки" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Расписание" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Детали" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "Формат" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Рейтинг" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "Доступ" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Судья" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -167,59 +167,59 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" -msgstr "" +msgstr "Отметьте соревнования как видимые" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d соревнование успешно помечено как скрытое" +msgstr[1] "%d соревнований помечены как скрытые" +msgstr[2] "%d соревнований помечены как скрытые" +msgstr[3] "%d соревнования успешно помечены как скрытые" -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" -msgstr "" +msgstr "Отметьте соревнования как скрытые" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d соревнование успешно заблокировано" +msgstr[1] "%d соревнований успешно скрыто" +msgstr[2] "%d соревнований успешно скрыто" +msgstr[3] "%d соревнования успешно скрыты" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" -msgstr "" +msgstr "заблокировать решения соревования" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d соревнование успешно разблокировано" +msgstr[1] "%d соревнований успешно разблокировано" +msgstr[2] "%d соревнований успешно разблокировано" +msgstr[3] "%d соревнования успешно разблокированы" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" -msgstr "" +msgstr "разблокировать решения соревования" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d решение было успешно запланировано для повторного тестирования" +msgstr[1] "%d решений было успешно запланировано для повторного тестирования" +msgstr[2] "%d решений было успешно запланировано для повторного тестирования" +msgstr[3] "%d решения были успешно запланированы для повторного тестирования" -#: judge/admin/contest.py:337 +#: judge/admin/contest.py:341 #, 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:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" -msgstr "" +msgstr "Пересчитать результаты" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "имя пользователя" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "виртуальный" @@ -252,18 +252,18 @@ msgstr "Содержание" msgid "Summary" msgstr "Сводка" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "пользователь" #: judge/admin/interface.py:154 msgid "object" -msgstr "" +msgstr "объект" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Посмотреть на сайте" @@ -271,53 +271,53 @@ msgstr "Посмотреть на сайте" msgid "Describe the changes you made (optional)" msgstr "Опишите изменения, которые вы сделали (не обязательно)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Социальные сети" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" -msgstr "" +msgstr "Таксономия" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Очки" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Ограничения" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Язык" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "История" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Авторы" -#: judge/admin/problem.py:191 +#: 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] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d дата публикации успешно обновлена." +msgstr[1] "%d дат публикации успешно обновлено." +msgstr[2] "%d дат публикации успешно обновлено." +msgstr[3] "%d даты публикации успешно обновлены." -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" -msgstr "" +msgstr "Установить дату публикации" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -326,11 +326,11 @@ msgstr[1] "%d задачи успешно сделаны публичными." msgstr[2] "%d задачи успешно сделаны публичными." msgstr[3] "%d задачи успешно сделаны публичными." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Пометить задачу как публичную" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -339,7 +339,7 @@ msgstr[1] "%d задачи успешно сдаланы приватными." msgstr[2] "%d задачи успешно сделаны приватными." msgstr[3] "%d задачи успешно сделаны приватными." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Пометить задачу как приватную" @@ -347,43 +347,43 @@ msgstr "Пометить задачу как приватную" msgid "timezone" msgstr "часовой пояс" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Пользователь" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Эл. почта" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Часовой пояс" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "дата регистрации" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "У %d пользователя пересчитаны баллы." +msgstr[1] "У %d пользователей пересчитаны баллы." +msgstr[2] "У %d пользователей пересчитаны баллы." +msgstr[3] "У %d пользователей пересчитали баллы." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Пересчитать баллы" #: judge/admin/runtime.py:19 msgid "Disallowed problems" -msgstr "" +msgstr "Запрещенные задачи" #: judge/admin/runtime.py:22 msgid "These problems are NOT allowed to be submitted in this language" @@ -412,7 +412,7 @@ msgstr "Не сделано" #: judge/admin/submission.py:23 msgid "Exceptional" -msgstr "" +msgstr "Исключительный" #: judge/admin/submission.py:42 msgid "Unaccepted" @@ -440,14 +440,14 @@ msgstr "Перетестировать выбранные посылки" #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d решение было пересчитано." +msgstr[1] "%d решений были переоценены." +msgstr[2] "%d решений были переоценены." +msgstr[3] "%d решения были переоценены." #: judge/admin/submission.py:202 msgid "Rescore the selected submissions" -msgstr "" +msgstr "Пересчитать выбранные решения" #: judge/admin/submission.py:206 msgid "Problem code" @@ -478,7 +478,7 @@ msgstr "Память" #: judge/admin/taxon.py:11 judge/admin/taxon.py:34 msgid "Included problems" -msgstr "" +msgstr "Включенные задачи" #: judge/admin/taxon.py:14 msgid "These problems are included in this group of problems" @@ -498,7 +498,7 @@ msgstr "Содержание комментария" #: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 msgid "Your part is silent, little toad." -msgstr "" +msgstr "Твоя роль-молчание, маленькая жаба." #: judge/comments.py:49 templates/comments/list.html:142 msgid "You need to have solved at least one problem before your voice can be heard." @@ -506,143 +506,144 @@ msgstr "Вам нужно решить хотя бы одну задачу, чт #: judge/comments.py:93 msgid "Posted comment" -msgstr "" +msgstr "Опубликованный комментарий" #: judge/contest_format/atcoder.py:19 msgid "AtCoder" -msgstr "" +msgstr "AtCoder" #: judge/contest_format/default.py:18 msgid "Default" -msgstr "" +msgstr "Стандартный" #: judge/contest_format/ecoo.py:18 msgid "ECOO" -msgstr "" +msgstr "ОКОО (ECOO)" #: judge/contest_format/icpc.py:19 msgid "ICPC" -msgstr "" +msgstr "МСОП (ICPC)" #: judge/contest_format/ioi.py:11 msgid "IOI" -msgstr "" +msgstr "IOI" #: judge/contest_format/legacy_ioi.py:18 msgid "IOI (pre-2016)" -msgstr "" +msgstr "IOI (до 2016)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "" +#: 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:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." -msgstr "" +msgstr "Недействительный двухфакторный код аутентификации." -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." -msgstr "" +msgstr "Коды Scratch должны содержать 16 символов base32." -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." -msgstr "" +msgstr "Неверный scratch-код." -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "Уведомлять об изменениях в соревновании" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Включить экспериментальные возможности" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." -msgstr "" +msgstr "Вы должны решить хотя бы одну проблему, прежде чем вы сможете обновить свой профиль." -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Вы не можете состоять более чем в {count} публичных организациях." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" -msgstr "" +msgstr "Загрузить комментарии?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" -msgstr "" +msgstr "Загрузить решения?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" -msgstr "" +msgstr "Фильтр по коду задач:" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" -msgstr "" +msgstr "Оставьте пустым, чтобы включить все сданные решения" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" -msgstr "" +msgstr "Фильтр по результату:" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." -msgstr "" +msgstr "Пожалуйста, выберите хотя бы одну вещь для загрузки." -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" -msgstr "" +msgstr "Любой судья" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Пароль" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." -msgstr "" +msgstr "Неверная длина кода." -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." -msgstr "" +msgstr "Недействительный WebAuthn ответ." -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." -msgstr "" +msgstr "Неверный идентификатор учетных данных WebAuthn." -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." -msgstr "" +msgstr "Неверный токен двухфакторной аутентификации или scratch-код." -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." -msgstr "" +msgstr "Необходимо указать totp_token или webauthn_response." -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" -msgstr "" +msgstr "Код задачи должен быть ^[a-z0-9]+$" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." -msgstr "" +msgstr "Задача с кодом уже существует." -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" -msgstr "" +msgstr "Идентификатор соревнования должен быть ^[a-z0-9]+$" -#: judge/forms.py:278 +#: 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 @@ -665,7 +666,7 @@ msgstr "Оставить LaTeX" #: judge/models/choices.py:60 msgid "SVG with PNG fallback" -msgstr "" +msgstr "SVG с резервным вариантом PNG" #: judge/models/choices.py:61 msgid "MathML only" @@ -673,15 +674,15 @@ msgstr "Только MathML" #: judge/models/choices.py:62 msgid "MathJax with SVG/PNG fallback" -msgstr "" +msgstr "MathJax с резервным вариантом SVG/PNG" #: 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" @@ -693,7 +694,7 @@ msgstr "время публикации" #: judge/models/comment.py:43 judge/models/comment.py:196 msgid "associated page" -msgstr "" +msgstr "связанная страница" #: judge/models/comment.py:45 msgid "votes" @@ -720,7 +721,7 @@ msgid "comments" msgstr "комментарии" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "Разбор задач для %s" @@ -761,7 +762,7 @@ msgstr "описание тега" msgid "contest tag" msgstr "тег соревнования" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "теги соревнования" @@ -786,410 +787,426 @@ msgid "contest name" msgstr "название соревнования" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Эти люди будут иметь право изменять соревнование." +msgid "These users will be able to edit the contest." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "описание" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "задачи" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "время начала" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "время конца" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "ограничение по памяти" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "соревнование рейтинговое" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Будте ли соревнование рейтинговым." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "без комментариев" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "Используйте систему кларов вместо комментариев." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "спрятать тэги задач" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "запустить только претесты" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "организации" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "соревнование" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "соревнования" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "участие в соревновании" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "задача" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "очки" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "частичный" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "порядок" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "посылка" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "участие" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "ранг" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "рейтинг" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1229,7 +1246,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "авторы" @@ -1237,7 +1254,7 @@ msgstr "авторы" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1273,34 +1290,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "заголовок сообщения" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "тело сообщения" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1318,7 +1307,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "" @@ -1330,7 +1319,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1350,7 +1339,7 @@ msgstr "" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1379,232 +1368,252 @@ msgstr "" msgid "licenses" msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "язык" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "" @@ -1716,112 +1725,112 @@ msgstr "" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1830,155 +1839,167 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2134,210 +2155,210 @@ msgstr "" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2385,6 +2406,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "тело сообщения" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2407,19 +2432,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2538,7 +2567,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2546,125 +2575,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "Онлайн" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2693,71 +2727,71 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2766,7 +2800,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2775,85 +2809,99 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Задачи" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2925,52 +2973,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Предпочитаемый язык" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Регистрация" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "Ошибка авторизации" @@ -2978,7 +3026,7 @@ msgstr "Ошибка авторизации" msgid "Language statistics" msgstr "Статистика языка" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Статус" @@ -2986,74 +3034,74 @@ msgstr "Статус" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3070,40 +3118,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3112,87 +3160,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "Пользователь %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Войти" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3317,11 +3369,11 @@ msgstr "Новости" msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3514,7 +3566,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "Статистика" @@ -3717,19 +3769,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -4004,7 +4056,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "" @@ -4175,7 +4227,7 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" @@ -4183,16 +4235,16 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" @@ -4200,15 +4252,15 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4253,7 +4305,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "" @@ -4302,7 +4354,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "Войти!" @@ -4422,12 +4474,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "Уведомлять меня о предстоящих соревнованиях" @@ -4443,57 +4495,93 @@ msgstr "Условия использования" msgid "Register!" msgstr "Зарегистрироваться!" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4574,15 +4662,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4800,121 +4888,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/ru/LC_MESSAGES/djangojs.po b/locale/ru/LC_MESSAGES/djangojs.po index 5c5d7c5a9e..f0d12590f1 100644 --- a/locale/ru/LC_MESSAGES/djangojs.po +++ b/locale/ru/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-23 00:29\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" diff --git a/locale/sr_Latn/LC_MESSAGES/django.po b/locale/sr_Latn/LC_MESSAGES/django.po index e238d8ba29..cf36d74fad 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-23 00:29\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -17,77 +17,77 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" -msgstr "" +msgstr "Katalonski" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" -msgstr "" +msgstr "Nemački" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" -msgstr "" +msgstr "Engleski" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" -msgstr "" +msgstr "Španski" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" -msgstr "" +msgstr "Francuski" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" -msgstr "" +msgstr "Hrvatski" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" -msgstr "" +msgstr "Mađarski" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" -msgstr "" +msgstr "Japanski" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" -msgstr "" +msgstr "Korejski" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" -msgstr "" +msgstr "Brazilski Portugalski" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" -msgstr "" +msgstr "Rumunski" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" -msgstr "" +msgstr "Ruski" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" -msgstr "" +msgstr "Srpski (Latinica)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" -msgstr "" +msgstr "Turski" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" -msgstr "" +msgstr "Vijetnamski" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" -msgstr "" +msgstr "Pojednostavljeni Kineski" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" -msgstr "" +msgstr "Klasični kinezki" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" -msgstr "" +msgstr "Naslovna Strana" #: judge/admin/comments.py:40 #, python-format @@ -99,64 +99,64 @@ msgstr[2] "" #: judge/admin/comments.py:43 msgid "Hide comments" -msgstr "" +msgstr "Sakrij komentar" #: judge/admin/comments.py:47 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%d Komentar dostupan." +msgstr[1] "%d Komentara dostupan." +msgstr[2] "%d Komentari dostupan." #: judge/admin/comments.py:50 msgid "Unhide comments" -msgstr "" +msgstr "prikaži komentare" #: judge/admin/comments.py:58 msgid "Associated page" -msgstr "" +msgstr "Asocirana stranica" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" -msgstr "" +msgstr "Uključena takmičenja" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" -msgstr "" +msgstr "Zadatak" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" -msgstr "" +msgstr "Podešavanja" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" -msgstr "" +msgstr "zakazivanje" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" -msgstr "" +msgstr "Detalji" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" -msgstr "" +msgstr "Format" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" -msgstr "" +msgstr "Rangiranje" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" -msgstr "" +msgstr "Pristup" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" -msgstr "" +msgstr "Pravda" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -164,47 +164,47 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" -msgstr "" +msgstr "Označi takmičenje kao vidljivo" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%d Takmičenje je uspešno označeno kao nevidljivo." +msgstr[1] "%d Takmičenja je uspešno označeno kao nevidljivo." +msgstr[2] "%d Takmičenja je uspešno označeno kao nevidljivo." -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" -msgstr "" +msgstr "Označi takmičenje kao nevidljivo" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%d Takmičenje uspešno zaključeno." +msgstr[1] "%d Takmičenja uspešno zaključeno." +msgstr[2] "%d Takmičenja uspešno zaključeno." -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%d Takmičenje uspešno odključeno." +msgstr[1] "%d Takmičenja uspešno odključeno." +msgstr[2] "%d Takmičenja uspešno odključeno." -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -220,17 +220,17 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" -msgstr "" +msgstr "Preračunati resultate" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" -msgstr "" +msgstr "korisničko ime" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" -msgstr "" +msgstr "virtualno" #: judge/admin/interface.py:29 judge/models/interface.py:46 msgid "link path" @@ -238,65 +238,65 @@ msgstr "" #: judge/admin/interface.py:72 msgid "Content" -msgstr "" +msgstr "Sadržaj" #: judge/admin/interface.py:73 msgid "Summary" msgstr "" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" -msgstr "" +msgstr "korisnik" #: judge/admin/interface.py:154 msgid "object" -msgstr "" +msgstr "objekat" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 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 "" +msgstr "Opišite promene koje ste napravili (neobavezno)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" -msgstr "" +msgstr "Social Media" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" -msgstr "" +msgstr "Poeni" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" -msgstr "" +msgstr "Granice" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" -msgstr "" +msgstr "Jezik" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" -msgstr "" +msgstr "Istorija" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" -msgstr "" +msgstr "Autori" -#: judge/admin/problem.py:191 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -304,60 +304,60 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" -msgstr "" +msgstr "Podesi datum objavljivanja na danas" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%d zadatak je uspešno označen kao javni." +msgstr[1] "%d zadatka je uspešno označen kao javni." +msgstr[2] "%d zadataka je uspešno označen kao javni." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%d zadatak je uspešno označen kao privatni." +msgstr[1] "%d zadatka je uspešno označen kao privatni." +msgstr[2] "%d zadataka je uspešno označen kao privatni." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "" #: judge/admin/profile.py:35 msgid "timezone" -msgstr "" +msgstr "vremenska zona" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" -msgstr "" +msgstr "Korisnik" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" -msgstr "" +msgstr "Email" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" -msgstr "" +msgstr "Vremenska zona" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" -msgstr "" +msgstr "datum pridruženja" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." @@ -365,13 +365,13 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" #: judge/admin/runtime.py:19 msgid "Disallowed problems" -msgstr "" +msgstr "Nedozvoljeni zadatak" #: judge/admin/runtime.py:22 msgid "These problems are NOT allowed to be submitted in this language" @@ -379,38 +379,38 @@ msgstr "" #: judge/admin/runtime.py:80 msgid "Description" -msgstr "" +msgstr "Opis" #: judge/admin/runtime.py:81 msgid "Information" -msgstr "" +msgstr "Informacija" #: judge/admin/runtime.py:82 msgid "Capabilities" -msgstr "" +msgstr "Sposobnosti" #: judge/admin/submission.py:23 judge/admin/submission.py:42 #: judge/admin/submission.py:227 msgid "None" -msgstr "" +msgstr "Nijedan" #: judge/admin/submission.py:23 msgid "Not done" -msgstr "" +msgstr "Nije urađeno" #: judge/admin/submission.py:23 msgid "Exceptional" -msgstr "" +msgstr "Izuzetno" #: judge/admin/submission.py:42 msgid "Unaccepted" -msgstr "" +msgstr "Nije prihvaćeno" #: judge/admin/submission.py:89 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" -msgstr "" +msgstr "%(problem)s u %(contest)s" #: judge/admin/submission.py:155 judge/admin/submission.py:177 msgid "You do not have the permission to rejudge submissions." @@ -438,46 +438,46 @@ msgstr "" #: judge/admin/submission.py:206 msgid "Problem code" -msgstr "" +msgstr "Kod zadatka" #: judge/admin/submission.py:211 msgid "Problem name" -msgstr "" +msgstr "Ime zadatka" #: judge/admin/submission.py:221 templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 msgid "Time" -msgstr "" +msgstr "Vreme" #: judge/admin/submission.py:229 #, python-format msgid "%d KB" -msgstr "" +msgstr "%d KB" #: judge/admin/submission.py:231 #, python-format msgid "%.2f MB" -msgstr "" +msgstr "%.2f MB" #: judge/admin/submission.py:233 msgid "Memory" -msgstr "" +msgstr "Memorija" #: judge/admin/taxon.py:11 judge/admin/taxon.py:34 msgid "Included problems" -msgstr "" +msgstr "Uključeni zadaci" #: judge/admin/taxon.py:14 msgid "These problems are included in this group of problems" -msgstr "" +msgstr "Ovi zadaci su uključeni u ovu grupu zadataka" #: judge/admin/taxon.py:37 msgid "These problems are included in this type of problems" -msgstr "" +msgstr "Ovi zadaci su uključeni u ovaj tip zadataka" #: judge/apps.py:8 msgid "Online Judge" -msgstr "" +msgstr "Online sudija" #: judge/comments.py:41 msgid "Comment body" @@ -493,143 +493,144 @@ msgstr "" #: judge/comments.py:93 msgid "Posted comment" -msgstr "" +msgstr "Komentar ostavljen" #: judge/contest_format/atcoder.py:19 msgid "AtCoder" -msgstr "" +msgstr "AtCoder" #: judge/contest_format/default.py:18 msgid "Default" -msgstr "" +msgstr "Default" #: judge/contest_format/ecoo.py:18 msgid "ECOO" -msgstr "" +msgstr "ECOO" #: judge/contest_format/icpc.py:19 msgid "ICPC" -msgstr "" +msgstr "ICPC" #: judge/contest_format/ioi.py:11 msgid "IOI" -msgstr "" +msgstr "IOI" #: judge/contest_format/legacy_ioi.py:18 msgid "IOI (pre-2016)" -msgstr "" +msgstr "IOI (pre-2016)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." -msgstr "" +msgstr "Nevažeći scratch kod." -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" -msgstr "" +msgstr "Dozvolite eksperimentalne karakteristike" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." -msgstr "" +msgstr "Morate rešiti barem jedan zadatak pre nego što možete da ažurirate svoj profil." -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." -msgstr "" +msgstr "Nemožete biti član više od {count} javne organizacije." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" -msgstr "" +msgstr "Download komentare?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" -msgstr "" +msgstr "Download rešenja?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" -msgstr "" +msgstr "Sortiraj po glob kodu zadatka:" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" -msgstr "" +msgstr "Ostavi prazno da uključiš sva rešenja" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" -msgstr "" +msgstr "Filtriraj po rezultatima:" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." -msgstr "" +msgstr "Izaberite barem jednu stvar za download." -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" -msgstr "" +msgstr "Bilo koji sudija" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "" +msgstr "Korisničko Ime" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" -msgstr "" +msgstr "Lozinka" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." -msgstr "" +msgstr "Nevažeća dužina koda. " -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." -msgstr "" +msgstr "Nevažeći WebAuthn odgovor." -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." -msgstr "" +msgstr "Nevažeći WebAuthn credential ID." -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." -msgstr "" +msgstr "Zadatak sa tim kodom več postoji." -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." -msgstr "" +msgstr "Takmičenje sa tim ključem več postoji." #: judge/jinja2/datetime.py:26 templates/blog/content.html:27 #: templates/blog/dashboard.html:21 @@ -639,16 +640,16 @@ msgstr "" #: 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 "na {time}" #: judge/models/choices.py:59 msgid "Leave as LaTeX" -msgstr "" +msgstr "Ostavi kao LaTeX" #: judge/models/choices.py:60 msgid "SVG with PNG fallback" @@ -664,53 +665,53 @@ msgstr "" #: judge/models/choices.py:63 msgid "Detect best quality" -msgstr "" +msgstr "Otkriti najbolji kvalitet" #: judge/models/comment.py:25 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" -msgstr "" +msgstr "Kod stranice mora biti ^[pcs]:[a-z0-9]+$|^b:\\d+$" #: judge/models/comment.py:41 msgid "commenter" -msgstr "" +msgstr "komentator" #: judge/models/comment.py:42 msgid "posted time" -msgstr "" +msgstr "objavljeno vreme" #: judge/models/comment.py:43 judge/models/comment.py:196 msgid "associated page" -msgstr "" +msgstr "asocirana stranica" #: judge/models/comment.py:45 msgid "votes" -msgstr "" +msgstr "glasovi" #: judge/models/comment.py:46 msgid "body of comment" -msgstr "" +msgstr "body komentara" #: judge/models/comment.py:47 msgid "hide the comment" -msgstr "" +msgstr "sakrij komentar" #: judge/models/comment.py:48 msgid "parent" -msgstr "" +msgstr "roditelj" #: judge/models/comment.py:53 msgid "comment" -msgstr "" +msgstr "komentar" #: judge/models/comment.py:54 msgid "comments" -msgstr "" +msgstr "komentari" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" -msgstr "" +msgstr "Uvodnik za %s" #: judge/models/comment.py:191 msgid "comment vote" @@ -726,457 +727,473 @@ msgstr "" #: judge/models/contest.py:28 msgid "Invalid colour." -msgstr "" +msgstr "Nepravilna boja." #: judge/models/contest.py:30 msgid "tag name" -msgstr "" +msgstr "naziv oznake" #: judge/models/contest.py:31 msgid "Lowercase letters and hyphens only." -msgstr "" +msgstr "Samo mala slova i crtica." #: judge/models/contest.py:32 msgid "tag colour" -msgstr "" +msgstr "boja oznake" #: judge/models/contest.py:33 msgid "tag description" -msgstr "" +msgstr "opis oznake" #: judge/models/contest.py:52 msgid "contest tag" -msgstr "" +msgstr "oznaka takmičenja" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" -msgstr "" +msgstr "oznake takmičenja" #: judge/models/contest.py:61 msgid "Visible" -msgstr "" +msgstr "Vidljivo" #: judge/models/contest.py:62 msgid "Hidden for duration of contest" -msgstr "" +msgstr "Sakriveno za vreme takmičenja" #: judge/models/contest.py:63 msgid "Hidden for duration of participation" -msgstr "" +msgstr "Sakriveno tokom učestvovanja" #: judge/models/contest.py:65 msgid "contest id" -msgstr "" +msgstr "id takmičenja" #: judge/models/contest.py:67 msgid "contest name" -msgstr "" +msgstr "ime takmičenja" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "" +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/runtime.py:136 +#: judge/models/contest.py:70 +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 +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 msgid "description" -msgstr "" +msgstr "opis" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" -msgstr "" +msgstr "zadaci" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" -msgstr "" +msgstr "vreme početka" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" -msgstr "" +msgstr "vreme kraja" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" -msgstr "" +msgstr "vremensko ograničenje" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" -msgstr "" +msgstr "javno vidljivo" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" -msgstr "" +msgstr "takmičenje je rangirano" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." -msgstr "" +msgstr "Može li ovo takmičenje biti rangirano." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" -msgstr "" +msgstr "pregledaj rezultate takmičenja" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." -msgstr "" +msgstr "Ovi korisnici će moći da vide rezultate svih učesnika takmičenja." -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" -msgstr "" +msgstr "vidljivost rezultata svih učesnika" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" -msgstr "" +msgstr "Vidljivost rezultata svih učesnika tokom takmičenja" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" -msgstr "" +msgstr "bez komentara" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." -msgstr "" +msgstr "Koristi clarification sistem umesto komentara." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" -msgstr "" +msgstr "privatni takmičari" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" -msgstr "" +msgstr "organizacije" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" -msgstr "" +msgstr "OpenGraph slika" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." -msgstr "" +msgstr "Ova slika če zameniti default site logo za učesnike takmičenja." -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" -msgstr "" +msgstr "broj aktivnih učesnika" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" -msgstr "" +msgstr "opis takmičenja" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" -msgstr "" +msgstr "access code" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" -msgstr "" +msgstr "personae non gratae" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." -msgstr "" +msgstr "Sprečava učešće u takmičenju izabranim korisnicima." -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" -msgstr "" +msgstr "format takmičenja" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" -msgstr "" +msgstr "konfiguracija formata takmičenja" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" -msgstr "" +msgstr "Pogledajte privatne komentare" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" -msgstr "" +msgstr "MOSS takmičenje" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" -msgstr "" +msgstr "Napravi privatno takmičenje" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" -msgstr "" +msgstr "Promeniti vidljivost takmičenja" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" -msgstr "" +msgstr "takmičenje" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" -msgstr "" +msgstr "takmičenja" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" -msgstr "" +msgstr "asociranja takmičenja" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" -msgstr "" +msgstr "rezultat" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" -msgstr "" +msgstr "zbirno vreme" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" -msgstr "" +msgstr "diskvalifikovan" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" -msgstr "" +msgstr "%s u %s" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" -msgstr "" +msgstr "učesnici takmičenja" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" -msgstr "" +msgstr "zadatak" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" -msgstr "" +msgstr "poeni" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" -msgstr "" +msgstr "delimičan" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" -msgstr "" +msgstr "več testiran" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" -msgstr "" +msgstr "redosled" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." -msgstr "" +msgstr "Maksimalan broj odgovora za ovaj zadatak, ili ostaviti prazno da nema ograničenja." -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" -msgstr "" +msgstr "Zašto uključiti zadatak koji ne možete predati?" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" -msgstr "" +msgstr "zadatak na takmičenju" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" -msgstr "" +msgstr "zadaci na takmičenju" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" -msgstr "" +msgstr "predaja" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" -msgstr "" +msgstr "učestvovanje" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" -msgstr "" +msgstr "predaja takmičenja" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" -msgstr "" +msgstr "predaje takmičenja" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" -msgstr "" +msgstr "nivo" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" -msgstr "" +msgstr "rangiranje" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1216,384 +1233,376 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" -msgstr "" +msgstr "autori" #: judge/models/interface.py:68 msgid "slug" -msgstr "" +msgstr "puž" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" #: judge/models/interface.py:70 msgid "sticky" -msgstr "" +msgstr "Post-it" #: judge/models/interface.py:71 msgid "publish after" -msgstr "" +msgstr "objaviti posle" #: judge/models/interface.py:72 msgid "post content" -msgstr "" +msgstr "objavi sadržaj" #: judge/models/interface.py:73 msgid "post summary" -msgstr "" +msgstr "objavi opis" #: judge/models/interface.py:74 msgid "openGraph image" -msgstr "" +msgstr "openGraph slika" #: judge/models/interface.py:96 msgid "Edit all posts" -msgstr "" +msgstr "Edituj sve objave" #: judge/models/interface.py:98 msgid "blog post" -msgstr "" +msgstr "blog objava" #: judge/models/interface.py:99 msgid "blog posts" -msgstr "" - -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "" - -#: judge/models/message.py:14 -msgid "target" -msgstr "" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" +msgstr "blog objave" #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" -msgstr "" +msgstr "Nedozvoljeni karakteri: %(value)s" #: judge/models/problem.py:35 msgid "problem category ID" -msgstr "" +msgstr "ID kategorije zadatka" #: judge/models/problem.py:36 msgid "problem category name" -msgstr "" +msgstr "ime kategorije zadatka" #: judge/models/problem.py:43 msgid "problem type" -msgstr "" +msgstr "tip zadatka" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" -msgstr "" +msgstr "tipovi zadatka" #: judge/models/problem.py:48 msgid "problem group ID" -msgstr "" +msgstr "ID grupe zadataka" #: judge/models/problem.py:49 msgid "problem group name" -msgstr "" +msgstr "ime grupe zadataka" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" -msgstr "" +msgstr "grupa zadataka" #: judge/models/problem.py:57 msgid "problem groups" -msgstr "" +msgstr "grupe zadataka" #: judge/models/problem.py:61 msgid "key" -msgstr "" +msgstr "ključ" #: judge/models/problem.py:63 msgid "link" -msgstr "" +msgstr "link" #: judge/models/problem.py:64 msgid "full name" -msgstr "" +msgstr "puno ime" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" -msgstr "" +msgstr "kratko ime" #: judge/models/problem.py:66 msgid "Displayed on pages under this license" -msgstr "" +msgstr "Prikazano na stranicama pod ovom licencom" #: judge/models/problem.py:67 msgid "icon" -msgstr "" +msgstr "ikona" #: judge/models/problem.py:67 msgid "URL to the icon" -msgstr "" +msgstr "URL za ikonu" #: judge/models/problem.py:68 msgid "license text" -msgstr "" +msgstr "tekst licence" #: judge/models/problem.py:77 msgid "license" -msgstr "" +msgstr "licenca" #: judge/models/problem.py:78 msgid "licenses" -msgstr "" +msgstr "licence" + +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "Prati globalno podešavanje" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "Uvek dostupno" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "Dostupno ako je zadatak rešen" -#: judge/models/problem.py:104 +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "Samo svoja rešenja" + +#: judge/models/problem.py:118 msgid "problem code" -msgstr "" +msgstr "kod zadatka" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" -msgstr "" +msgstr "Kratak, jedinstveni kod za zadatak, koji se koristi u url-u posle /problem/" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" -msgstr "" +msgstr "ime zadatka" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." -msgstr "" +msgstr "Puno ime zadatka, kao što je prikazano u listi zadataka." -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" -msgstr "" +msgstr "sadržaj zadatka" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" -msgstr "" +msgstr "kreatori" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." -msgstr "" +msgstr "Ovi korisnici će moći da edituju zadatak, i biće navedeni kao autori." -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" -msgstr "" +msgstr "kustos" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." -msgstr "" +msgstr "Ovi korisnici će moći da edituju zadatak, i neće biti navedeni kao autori." -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" -msgstr "" +msgstr "testeri" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." -msgstr "" +msgstr "Ovi korisnici će moći da vide privatni zadatak, ali neće moći da ga edituju." -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." -msgstr "" +msgstr "Tip zadatka, kao što je prikazano na stranici zadatka." -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." -msgstr "" +msgstr "Grupa zadataka, prikazana u okviru Kategorije u listi zadataka." -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." -msgstr "" +msgstr "Vremensko ograničenje za ovaj zadatak, u sekundama. Delovi sekunda (npr. 1.5) su podržani." -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" -msgstr "" +msgstr "ograničenje memorije" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." -msgstr "" +msgstr "Memorijsko ograničenje za ovaj zadatak, u kilobytes (npr. 64mb = 65536 kilobytes)." -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." -msgstr "" +msgstr "Pojeni dodeljeni za rešen zadatak. Pojeni su prikazani sa 'p' sufiksom ako je rešenje delimično priznato." -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" -msgstr "" +msgstr "dozvoljava dodeljivanje delimičnih poena" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" -msgstr "" +msgstr "dozvoljeni jezici" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." -msgstr "" +msgstr "Lista dozvoljenih jezika za rešenja." -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" -msgstr "" +msgstr "broj korisnika" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" -msgstr "" +msgstr "Vidi sakrivene zadatke" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" -msgstr "" +msgstr "jezik" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" -msgstr "" +msgstr "prevedeno ime" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" -msgstr "" +msgstr "preveden opis" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" -msgstr "" +msgstr "prevod zadatka" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" -msgstr "" +msgstr "prevodi zadatka" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" -msgstr "" +msgstr "datum objave" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" -msgstr "" +msgstr "rešenje" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" -msgstr "" +msgstr "rešenja" #: judge/models/problem_data.py:23 msgid "Standard" @@ -1677,19 +1686,19 @@ msgstr "" #: judge/models/problem_data.py:82 msgid "Batch start" -msgstr "" +msgstr "početak Batch-a" #: judge/models/problem_data.py:83 msgid "Batch end" -msgstr "" +msgstr "kraj Batch-a" #: judge/models/problem_data.py:85 msgid "input file name" -msgstr "" +msgstr "ime ulaznog fajla" #: judge/models/problem_data.py:86 msgid "output file name" -msgstr "" +msgstr "ime izlaznog fajla" #: judge/models/problem_data.py:87 msgid "generator arguments" @@ -1697,275 +1706,287 @@ msgstr "" #: judge/models/problem_data.py:88 msgid "point value" -msgstr "" +msgstr "vrednost poena" #: judge/models/problem_data.py:89 msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" -msgstr "" +msgstr "naziv organizacije" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" -msgstr "" +msgstr "puž organizacije" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" -msgstr "" +msgstr "ime Organizacije prikazano u URL-u" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" -msgstr "" +msgstr "Prikazano pored imena korisnika tokom takmičenja" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" -msgstr "" +msgstr "opis organizacije" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" -msgstr "" +msgstr "administratori" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" -msgstr "" +msgstr "Oni koji mogu da edit-uju ovu organizaciju" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" -msgstr "" +msgstr "datum kreiranja" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" -msgstr "" +msgstr "je otvorena organizacija?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" -msgstr "" +msgstr "Dozvoli pridruživanje organizaciji" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" -msgstr "" +msgstr "maksimalna veličina" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" -msgstr "" +msgstr "Maksimalan broj korisnika u ovoj organizaciji, primenljiv samo na privatne organizacije" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" -msgstr "" +msgstr "pristupni kod studenta" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." -msgstr "" +msgstr "Ova slika če zameniti default site logo za korisnike koji gledaju organizaciju." -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" -msgstr "" +msgstr "Administriraj organizacije" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" -msgstr "" +msgstr "Edit-uj sve organizacije" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" -msgstr "" +msgstr "organizacija" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" -msgstr "" +msgstr "asocirani korisnik" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" -msgstr "" +msgstr "samo-opis" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" -msgstr "" +msgstr "lokacija" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" -msgstr "" +msgstr "željeni jezik" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" -msgstr "" +msgstr "vreme poslednjeg pristupa" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" -msgstr "" +msgstr "poslednji IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" -msgstr "" +msgstr "prikaži nivo" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" -msgstr "" +msgstr "Običan korisnik" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" -msgstr "" +msgstr "Pisac zadatka" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: 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 msgid "Admin" -msgstr "" +msgstr "Administrator" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" -msgstr "" +msgstr "nemi koment" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." -msgstr "" +msgstr "U ćutanju je zlato." -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." -msgstr "" +msgstr "Korisnik neće biti rangiran" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" -msgstr "" +msgstr "takmičenje u toku" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" -msgstr "" +msgstr "math engine" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 -msgid "API token" +#: judge/models/profile.py:136 +msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:137 +msgid "API token" +msgstr "API žeton" + +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" -msgstr "" +msgstr "interne beleške" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" -msgstr "" +msgstr "profil korisnika" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" -msgstr "" +msgstr "ime uređaja" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" -msgstr "" +msgstr "status" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" -msgstr "" +msgstr "razlog" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2031,7 +2052,7 @@ msgstr "" #: judge/models/runtime.py:42 msgid "language description" -msgstr "" +msgstr "opis jezika" #: judge/models/runtime.py:43 msgid "Use this field to inform users of quirks with your environment, additional restrictions, etc." @@ -2047,7 +2068,7 @@ msgstr "" #: judge/models/runtime.py:112 msgid "languages" -msgstr "" +msgstr "jezici" #: judge/models/runtime.py:116 msgid "language to which this runtime belongs" @@ -2095,7 +2116,7 @@ msgstr "" #: judge/models/runtime.py:131 msgid "judge online status" -msgstr "" +msgstr "online status sudije" #: judge/models/runtime.py:132 msgid "judge start time" @@ -2115,226 +2136,226 @@ msgstr "" #: judge/models/runtime.py:139 judge/models/runtime.py:181 msgid "judges" -msgstr "" +msgstr "sudije" #: judge/models/runtime.py:180 msgid "judge" -msgstr "" +msgstr "sudija" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" -msgstr "" +msgstr "Prihvaćeno" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" -msgstr "" +msgstr "Pogrešni Odgovori" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" -msgstr "" +msgstr "Greška u Sastavljanju" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" -msgstr "" +msgstr "Unutrašnja Grеška" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" -msgstr "" +msgstr "Prekinut" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" -msgstr "" +msgstr "Završeno" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" -msgstr "" +msgstr "status" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" -msgstr "" +msgstr "rezultat" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" -msgstr "" +msgstr "Greške u Sastavljanju" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" -msgstr "" +msgstr "statusna zastava" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" #: judge/models/ticket.py:10 msgid "ticket title" -msgstr "" +msgstr "naslov tiketa" #: judge/models/ticket.py:11 msgid "ticket creator" -msgstr "" +msgstr "autor tiketa" #: judge/models/ticket.py:13 msgid "creation time" @@ -2372,6 +2393,10 @@ msgstr "" msgid "poster" msgstr "" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2394,19 +2419,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2449,15 +2478,15 @@ msgstr "" #: judge/utils/problems.py:75 msgid "Wrong" -msgstr "" +msgstr "Pogrešno" #: judge/utils/problems.py:77 msgid "Timeout" -msgstr "" +msgstr "Istek vremena" #: judge/utils/problems.py:78 msgid "Error" -msgstr "" +msgstr "Greška" #: judge/utils/problems.py:89 msgid "Can't pass both queryset and keyword filters" @@ -2503,7 +2532,7 @@ msgstr[2] "" #: judge/utils/timedelta.py:63 msgctxt "hours and minutes" msgid "%h:%m" -msgstr "" +msgstr "%h:%m" #: judge/views/blog.py:37 #, python-format @@ -2520,9 +2549,9 @@ msgstr "" #: judge/views/comment.py:66 msgid "You already voted." -msgstr "" +msgstr "Već ste glasali" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2530,132 +2559,137 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" -msgstr "" +msgstr "Ne postoji takvo takmičenje " -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." -msgstr "" +msgstr "Takmičenje sa \"%s\" ključem nije pronađeno." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" -msgstr "" +msgstr "Takmičenja" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" -msgstr "" +msgstr "Več na takmičenju " -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." -msgstr "" +msgstr "Već učestvujete na takmičenju: \"%s\"." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" #: judge/views/error.py:14 msgid "404 error" -msgstr "" +msgstr "greška 404" #: judge/views/error.py:15 #, python-format @@ -2677,71 +2711,71 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" -msgstr "" +msgstr "Organizacije" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -2749,7 +2783,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -2757,85 +2791,99 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" -msgstr "" +msgstr "Zadatci" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2906,52 +2954,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" -msgstr "" +msgstr "Željeni jezik" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" -msgstr "" +msgstr "Registracija" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2959,7 +3007,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "" @@ -2967,74 +3015,74 @@ msgstr "" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" -msgstr "" +msgstr "Sva rešenja" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" -msgstr "" +msgstr "Sva moja rešenja" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" -msgstr "" +msgstr "Sva rešenja od %s" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" -msgstr "" +msgstr "Sva rešenja za %s" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" -msgstr "" +msgstr "Moja rešenja za %(problem)s" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" -msgstr "" +msgstr "%(user)sa rešenja za %(problem)s" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" -msgstr "" +msgstr "Moja rešenja u %(contest)s" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" @@ -3051,40 +3099,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3093,87 +3141,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" -msgstr "" +msgstr "Nevažeći ime" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" -msgstr "" +msgstr "Ne postoj takav korisnik" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" -msgstr "" +msgstr "Skini vaše podatke" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3211,12 +3263,12 @@ msgstr "" #: templates/admin/judge/problem/change_form.html:14 msgid "View Submissions" -msgstr "" +msgstr "Vidi Rešenja" #: templates/admin/judge/problem/change_form.html:17 #: templates/user/user-base.html:61 msgid "View submissions" -msgstr "" +msgstr "Vidi rešenja" #: templates/admin/judge/profile/change_form.html:14 #: templates/admin/judge/profile/change_form.html:17 @@ -3232,7 +3284,7 @@ msgstr "" #: templates/base.html:214 #, python-format msgid "Hello, %(username)s." -msgstr "" +msgstr "Zdravo, %(username)s." #: templates/base.html:229 msgid "Log out" @@ -3245,7 +3297,7 @@ msgstr "" #: templates/base.html:239 templates/registration/registration_form.html:175 msgid "or" -msgstr "" +msgstr "ili" #: templates/base.html:240 msgid "Sign up" @@ -3265,7 +3317,7 @@ msgstr "" #: templates/license.html:10 templates/problem/data.html:428 #: templates/problem/editorial.html:14 msgid "Edit" -msgstr "" +msgstr "Edit-uj" #: templates/blog/content.html:27 #, python-format @@ -3291,18 +3343,18 @@ msgstr "" #: templates/blog/list.html:92 msgid "News" -msgstr "" +msgstr "Vesti" #: templates/blog/list.html:106 #, python-brace-format msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3320,7 +3372,7 @@ msgstr "" #: templates/blog/list.html:209 msgid "New problems" -msgstr "" +msgstr "Novi zadaci" #: templates/blog/list.html:226 msgid "My open tickets" @@ -3495,7 +3547,7 @@ msgid "Info" msgstr "" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -3590,15 +3642,15 @@ msgstr "" #: templates/contest/list.html:65 msgid "hidden" -msgstr "" +msgstr "sakriveno" #: templates/contest/list.html:78 msgid "private" -msgstr "" +msgstr "privatno" #: templates/contest/list.html:83 msgid "rated" -msgstr "" +msgstr "rangirano" #: templates/contest/list.html:131 msgid "Spectate" @@ -3606,16 +3658,16 @@ msgstr "" #: templates/contest/list.html:137 msgid "Join" -msgstr "" +msgstr "Pridruži se" #: templates/contest/list.html:147 msgid "Active Contests" -msgstr "" +msgstr "Aktivna takmičenja" #: templates/contest/list.html:151 templates/contest/list.html:193 #: templates/contest/list.html:231 templates/contest/list.html:268 msgid "Contest" -msgstr "" +msgstr "Takmičenje" #: templates/contest/list.html:189 msgid "Ongoing Contests" @@ -3627,7 +3679,7 @@ msgstr "" #: templates/contest/list.html:254 msgid "There are no scheduled contests at this time." -msgstr "" +msgstr "Nema zakazana takmičenja u momentu" #: templates/contest/list.html:260 msgid "Past Contests" @@ -3667,7 +3719,7 @@ msgstr "" #: templates/contest/private.html:5 msgid "This contest is private to specific users." -msgstr "" +msgstr "Ovo takmičenje je privatno za određena korisnika." #: templates/contest/private.html:10 msgid "Additionally, only the following organizations may access this contest:" @@ -3679,7 +3731,7 @@ msgstr "" #: templates/contest/ranking-table.html:7 msgid "Organization" -msgstr "" +msgstr "Organizacija" #: templates/contest/ranking-table.html:27 #, python-brace-format @@ -3698,21 +3750,21 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" -msgstr "" +msgstr "Pokaži organizacije" #: templates/contest/stats.html:38 msgid "Problem Status Distribution" @@ -3747,11 +3799,11 @@ msgstr "" #: templates/newsletter/subscription_update_activated.html:3 #: templates/newsletter/subscription_update_activated.html:6 msgid "activate" -msgstr "" +msgstr "aktiviraj" #: templates/newsletter/subscription_unsubscribe_activated.html:8 msgid "You have successfully been unsubscribed." -msgstr "" +msgstr "Uspešno ste se odjavili." #: templates/newsletter/subscription_unsubscribe_email_sent.html:3 #: templates/newsletter/subscription_unsubscribe_email_sent.html:6 @@ -3770,7 +3822,7 @@ msgstr "" #: templates/newsletter/subscription_unsubscribe_user.html:21 msgid "Unsubscribe" -msgstr "" +msgstr "Odjavite se" #: templates/newsletter/subscription_update.html:3 #: templates/newsletter/subscription_update.html:6 @@ -3855,29 +3907,29 @@ msgstr "" #: templates/organization/requests/detail.html:13 msgid "User:" -msgstr "" +msgstr "Korisnik:" #: templates/organization/requests/detail.html:17 msgid "Organization:" -msgstr "" +msgstr "Organizacija:" #: templates/organization/requests/detail.html:25 msgid "Time:" -msgstr "" +msgstr "Vreme:" #: templates/organization/requests/detail.html:29 msgid "Reason:" -msgstr "" +msgstr "Razlog:" #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" -msgstr "" +msgstr "Stanje" #: templates/organization/requests/log.html:12 #: templates/organization/requests/pending.html:15 msgid "Reason" -msgstr "" +msgstr "Razlog" #: templates/organization/requests/log.html:28 #: templates/organization/requests/pending.html:37 @@ -3911,7 +3963,7 @@ msgstr "" #: templates/organization/requests/tabs.html:13 msgid "Rejected" -msgstr "" +msgstr "Odbijeno" #: templates/organization/users-table.html:15 msgid "Kick" @@ -3931,7 +3983,7 @@ msgstr "" #: templates/problem/data.html:344 msgid "View YAML" -msgstr "" +msgstr "Pogledaj YAML" #: templates/problem/data.html:360 msgid "Show columns:" @@ -3955,7 +4007,7 @@ msgstr "" #: templates/problem/data.html:382 msgid "Type" -msgstr "" +msgstr "Tip" #: templates/problem/data.html:383 msgid "Input file" @@ -3971,7 +4023,7 @@ msgstr "" #: templates/problem/data.html:438 templates/problem/submit.html:258 msgid "Submit!" -msgstr "" +msgstr "Odgovori!" #: templates/problem/data.html:439 msgid "Add new case" @@ -3985,10 +4037,10 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" -msgstr[0] "" +msgstr[0] "Autor:" msgstr[1] "" msgstr[2] "" @@ -3998,12 +4050,12 @@ msgstr "" #: templates/problem/list.html:183 msgid "Hot problems" -msgstr "" +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 msgid "Category" -msgstr "" +msgstr "Kategorija" #: templates/problem/list.html:207 templates/problem/list.html:226 msgid "Types" @@ -4140,7 +4192,7 @@ msgstr "" #: templates/problem/problem.html:168 msgid "Points:" -msgstr "" +msgstr "Poeni:" #: templates/problem/problem.html:171 templates/problem/problem.html:173 msgid "(partial)" @@ -4154,48 +4206,48 @@ msgstr "" msgid "Memory limit:" msgstr "" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" -msgstr "" +msgstr "Dozvoljeni jezici" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" -msgstr[0] "" +msgstr[0] "Sudija:" msgstr[1] "" -msgstr[2] "" +msgstr[2] "Sudije:" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" #: templates/problem/raw.html:62 msgid "Time Limit:" -msgstr "" +msgstr "Vremensko Ograničenje:" #: templates/problem/raw.html:71 msgid "Memory Limit:" -msgstr "" +msgstr "Ograničenje Memorije:" #: templates/problem/search-form.html:2 msgid "Problem search" @@ -4203,7 +4255,7 @@ msgstr "" #: templates/problem/search-form.html:8 msgid "Search problems..." -msgstr "" +msgstr "Traži zadatke..." #: templates/problem/search-form.html:14 msgid "Full text search" @@ -4220,20 +4272,20 @@ msgstr "" #: templates/problem/search-form.html:33 templates/problem/search-form.html:35 #: templates/submission/submission-list-tabs.html:4 msgid "All" -msgstr "" +msgstr "Svi" #: templates/problem/search-form.html:46 msgid "Problem types" -msgstr "" +msgstr "Tipovi zadatka" #: templates/problem/search-form.html:57 msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" -msgstr "" +msgstr "Idi" #: templates/problem/search-form.html:64 msgid "Random" @@ -4278,7 +4330,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "" @@ -4398,12 +4450,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4419,57 +4471,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" -msgstr "" +msgstr "Isključi multi-faktor autentifikaciju" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" -msgstr "" +msgstr "QR kod" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: templates/registration/totp_enable.html:90 +msgid "Refresh Two Factor Authentication" +msgstr "" + +#: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" +msgstr "Omogući multi-faktor autentifikaciju" + +#: templates/registration/totp_enable.html:98 +msgid "Below is a list of one-time use scratch codes." +msgstr "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4484,7 +4572,7 @@ msgstr "" #: templates/status/judge-status-table.html:2 msgid "Judge" -msgstr "" +msgstr "Sudija" #: templates/status/judge-status-table.html:4 msgid "Online" @@ -4515,7 +4603,7 @@ msgstr "" #: templates/status/language-list.html:34 templates/ticket/list.html:259 msgid "ID" -msgstr "" +msgstr "ID" #: templates/status/language-list.html:36 msgid "Runtime Info" @@ -4523,7 +4611,7 @@ msgstr "" #: templates/status/status-tabs.html:4 msgid "Judges" -msgstr "" +msgstr "Sudije" #: templates/status/status-tabs.html:6 msgid "Version Matrix" @@ -4550,15 +4638,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4585,11 +4673,11 @@ msgstr "" #: templates/submission/row.html:71 msgid "admin" -msgstr "" +msgstr "administrator" #: templates/submission/source.html:25 msgid "View status" -msgstr "" +msgstr "Pogledaj status" #: templates/submission/source.html:26 msgid "View raw source" @@ -4775,121 +4863,125 @@ msgstr "" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" -msgstr "" +msgstr "Math engine" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" -msgstr "" +msgstr "Multi-faktor autentifikacija je upaljena" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: templates/user/edit-profile.html:384 +msgid "Two-factor Authentication is disabled" +msgstr "Multi-faktor autentifikacija je ugašena" + +#: templates/user/edit-profile.html:385 msgid "Enable" -msgstr "" +msgstr "Uključi" -#: templates/user/edit-profile.html:387 +#: templates/user/edit-profile.html:392 msgid "API Token" -msgstr "" +msgstr "API Žeton" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" -msgstr "" +msgstr "Izbriši" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" -msgstr "" +msgstr "Dodaj" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" @@ -4952,7 +5044,7 @@ msgstr "" #: templates/user/user-about.html:14 msgid "From" -msgstr "" +msgstr "Od" #: templates/user/user-about.html:25 msgid "Admin Notes" @@ -5044,7 +5136,7 @@ msgstr "" #: templates/user/user-base.html:76 msgid "Rating:" -msgstr "" +msgstr "Rangiranje:" #: templates/user/user-base.html:77 msgid "Volatility:" @@ -5052,11 +5144,11 @@ msgstr "" #: templates/user/user-base.html:78 msgid "Min. rating:" -msgstr "" +msgstr "Min. Rangiranje:" #: templates/user/user-base.html:79 msgid "Max rating:" -msgstr "" +msgstr "Max Rangiranje:" #: templates/user/user-problems.html:37 msgid "Points breakdown" diff --git a/locale/sr_Latn/LC_MESSAGES/djangojs.po b/locale/sr_Latn/LC_MESSAGES/djangojs.po index a06729d694..b40782332b 100644 --- a/locale/sr_Latn/LC_MESSAGES/djangojs.po +++ b/locale/sr_Latn/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-23 00:29\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po index acae66944a..1ebfdd42a2 100644 --- a/locale/tr/LC_MESSAGES/django.po +++ b/locale/tr/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:28\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Ana sayfa" @@ -115,112 +115,112 @@ msgstr "Yorumları göster" msgid "Associated page" msgstr "İlişkili sayfa" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Yarışmalar" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Planlama" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Ayrıntılar" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Derecelendirme" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Demir yumruk" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, 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:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, 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:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "kullanıcı adı" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "sanal" @@ -236,9 +236,9 @@ msgstr "İçerik" msgid "Summary" msgstr "Özet" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "kullanıcı" @@ -246,8 +246,8 @@ msgstr "kullanıcı" msgid "object" msgstr "" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Sitede görüntüle" @@ -255,69 +255,69 @@ msgstr "Sitede görüntüle" msgid "Describe the changes you made (optional)" msgstr "Yaptığın değişiklikleri özetle (isteğe bağlı)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Sosyal Medya" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Tasnif" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Puanlar" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Sınırlar" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Dil" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Geçmiş" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Yazarlar" -#: judge/admin/problem.py:191 +#: 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] "" msgstr[1] "" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:201 +#: 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 problem herkese açık olarak işaretlendi." msgstr[1] "%d problem herkese açık olarak işaretlendi." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Problemleri herkese aç" -#: judge/admin/problem.py:211 +#: 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 problem gizli olarak işaretlendi." msgstr[1] "%d problem gizli olarak işaretlendi." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Problemleri gizle" @@ -325,35 +325,35 @@ msgstr "Problemleri gizle" msgid "timezone" msgstr "saat dilimi" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Kullanıcı" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "E-posta" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Saat dilimi" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "kayıt tarihi" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d kullanıcının puanları yeniden hesaplandı." msgstr[1] "%d kullanıcının puanları yeniden hesaplandı." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Puanları yeniden hesapla" @@ -506,115 +506,116 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "Yarışma güncellemelerine abone ol" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Deneysel özellikleri aç" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "{count} açık organizasyondan daha fazlasına üye olamazsın." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Kullanıcı Adı" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Şifre" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Problem kodu ^[a-z0-9]+$ olmalıdır" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Yarışma ID'si ^[a-z0-9]+$ olmalıdır" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -694,7 +695,7 @@ msgid "comments" msgstr "yorumlar" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "%s problemi için editorial" @@ -735,7 +736,7 @@ msgstr "etiket tanımı" msgid "contest tag" msgstr "yarışma etiketi" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "yarışma etiketleri" @@ -760,410 +761,426 @@ msgid "contest name" msgstr "yarışma adı" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Bu kişiler yarışmayı düzenleyebilecekler." +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +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 msgid "description" msgstr "Tanım" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "problemler" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "başlangıç" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "bitiş" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "zaman sınırı" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "herkese açık" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "Organizasyona özel yarışmalar için de açılmalıdır. Eğer bir yarışma organizasyona özel ise bu seçenek yarışmanın üyelere açılıp açılmayacağını belirler." -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "dereceli yarışma" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Bu yarışma derecelendirilebilir mi?" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "yorum yok" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "Yorumlar yerine açıklama sistemini kullanın." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "herkesi derecelendir" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "Katılan tüm kullanıcıları derecelendir" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "derecelendirme dışı kullanıcılar" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "problem etiketlerini gizle" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "Problem etiketleri varsayılan olarak gizli olmalı mı?" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "yalnızca ön testleri çalıştır" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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'lar yalnızca ön testleri mi çalıştırmalı? Bu seçenek genellikle yarışma sırasında açılır, yarışma bittiğinde kapatılır ve çözümler yeniden puanlanır." -#: judge/models/contest.py:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "organizasyonlara özel" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "organizasyonlar" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "Özel ise, sadece bu organizasyonlar yarışmayı görebilirler" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "OpenGraph resmi" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "anlık katılımcı sayısı" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "yarışma özeti" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "Düz yazı, sosyal medya vb. için \"meta description\" tag'inde görünecektir." -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "erişim kodu" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "Yarışmaya katılabilmek için girilmesi gereken, isteğe bağlı bir kod. Boş bırakılırsa devre dışı kalır." -#: judge/models/contest.py:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "istenmeyen kişiler" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "Özel yarışmaları gör" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "Kendi yarışmalarını düzenle" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "Tüm yarışmaları düzenle" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "Yarışmaları derecelendir" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "Yarışma erişim kodları" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "yarışma" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "yarışmalar" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "ilişkili yarışma" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "puan" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "kümülatif süre" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "sanal katılım ID'si" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "%s, \"%s\" yarışmasında gözlemci" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "%s, \"%s\" yarışmasında, sanal: %d" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s, \"%s\" yarışmasında" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "yarışma katılımı" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "yarışma katılımı" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "puan" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "kısmi" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "ön testli" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "sıra" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "Neden çözüm gönderemediğin bir problemi ekleyesin ki?" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "yarışma problemi" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "yarışma problemleri" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "çözüm" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "katılım" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "Bu çözüm yalnızca pretest'lerde mi çalıştı?" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "yarışma çözümü" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "yarışma çözümleri" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "sıralama" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "derece" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "değişkenlik" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "son derecelendirme" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "yarışma derecesi" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "yarışma derecesi" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1203,7 +1220,7 @@ msgstr "üst nesne" msgid "post title" msgstr "gönderi başlığı" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "yazarlar" @@ -1211,7 +1228,7 @@ msgstr "yazarlar" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "halka açık mı?" @@ -1247,34 +1264,6 @@ msgstr "blog gönderisi" msgid "blog posts" msgstr "blog gönderisi" -#: judge/models/message.py:11 -msgid "message title" -msgstr "mesaj başlığı" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "mesaj içeriği" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "gönderici" - -#: judge/models/message.py:14 -msgid "target" -msgstr "alıcı" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "mesaj zaman damgası(timestamp)" - -#: judge/models/message.py:16 -msgid "read" -msgstr "okundu" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "konudaki mesajlar" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1292,7 +1281,7 @@ msgstr "problem kategorisi adı" msgid "problem type" msgstr "problem tipi" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "problem tipleri" @@ -1304,7 +1293,7 @@ msgstr "problem grup ID'si" msgid "problem group name" msgstr "problem grubu adı" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "problem grubu" @@ -1324,7 +1313,7 @@ msgstr "" msgid "full name" msgstr "Tam ad" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "Kısa ad" @@ -1353,232 +1342,252 @@ msgstr "lisans" msgid "licenses" msgstr "lisans" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "problem kodu" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "problem adı" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "problem içeriği" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "yaratıcılar" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "küratörler" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "testçiler" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "Bu problem için saniye cinsinden zaman sınırı. Küsuratlı saniyeler(örn. 1.5) desteklenmektedir." -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "bellek sınırı" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "Bu problem için kilobayt cinsinden hafıza sınırı. (örn. 64MB = 65536 KB)" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "kısmi puanlama yapılabilir" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "izin verilen diller" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "elle yönetilir" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "yayınlama tarihi" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "Geri uyumluluk sorunundan dolayı oto-yayınlama büyüsü yapılamamaktadır" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "problem özeti" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "Soruyu çoğalt" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "dil" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "çevrilmiş ad" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "çevrilmiş tanım" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "problem çevirisi" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "problem çevirisi" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "açıklık getirilmiş problem" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "açıklama içeriği" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "açıklama zaman damgası(timestamp)" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "Dile özel kaynak sınırı" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "Dile özel kaynak sınırları" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "ilgili problem" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "yayın tarihi" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "problem analizi içeriği" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "çözüm" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "çözümler" @@ -1690,112 +1699,112 @@ msgstr "puan değeri" msgid "case is pretest?" msgstr "ön test mi?" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "organizasyon başlığı" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "Yarışmalar sırasında kullanıcı adının yanında gösterilir" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "organizasyon tanımı" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "Adminler" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "Bu organizasyonu düzenleme yetkisi olanlar " -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "Oluşturulma tarihi" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "Açık organizasyon mu?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "Organizasyona katılmaya izin ver" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "maksimum boyut" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "Bu organizasyondaki maksimum üye sayısı. Sadece özel organizasyonlar için geçerlidir" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "Öğrenci erişim kodu" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "Organizasyon" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "ilişkili kullanıcı" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "hakkında" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "konum" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "tercih edilen dil" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "son erişim" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "son IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "görünen derece" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1804,155 +1813,167 @@ msgstr "" msgid "Admin" msgstr "Yönetici" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "yorum engeli" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "Bazı kullanıcıların sessiz kalması daha iyidir." -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "userscript" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "Site düzenlemesi için kullanıcı tanımlı JavaScript" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "şu anki yarışma" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "matematik motoru" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "matematiksel ifadeleri gösteren program" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "Kullanıcı Profili" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "Kullanıcı Profilleri" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "istek zamanı" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "durum" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "sebep" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "organizasyona katılma isteği" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "organizasyona katılma istekleri" @@ -2108,210 +2129,210 @@ msgstr "judge'lar" msgid "judge" msgstr "" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Kabul edildi" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "Yanlış cevap" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "Zaman Sınırı Aşıldı" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "Bellek Sınırı Aşıldı" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "Çıktı Limiti Aşıldı" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "Geçersiz Dönüş Kodu" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "Çalışma Hatası" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Derleme Hatası" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "İç Hata" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "Kısa devre" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "İptal edildi" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "Sıraya Alındı" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "İşleniyor" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "Puanlanıyor" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "Tamamlandı" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "İç Hata (judge sunucusu hatası)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "çözüm süresi" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "çalışma süresi" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "bellek kullanımı" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "verilen puan" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "çözüm dili" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "statü" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "sonuç" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "derleme hataları" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "kümelenmiş testler" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "test puanı" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "toplam test puanı" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "değerlendirildiği sunucu" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" -msgstr "admin tarafından yeniden değerlendirildi" - #: judge/models/submission.py:83 +msgid "last rejudge date by admin" +msgstr "" + +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "sadece ön testlerde çalıştı" -#: judge/models/submission.py:86 -msgid "lock submission" +#: judge/models/submission.py:87 +msgid "submission lock" msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "çözümler" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "ilişkili çözüm gönderisi" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "kaynak kodu" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "test ID" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "durum kodu" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "alınabilecek puan" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "küme #" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "program çıktısı" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "çözüm testi" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "çözüm testleri" @@ -2359,6 +2380,10 @@ msgstr "bilet" msgid "poster" msgstr "gönderen" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "mesaj içeriği" + #: judge/models/ticket.py:31 msgid "message time" msgstr "mesaj zamanı" @@ -2381,19 +2406,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2506,7 +2535,7 @@ msgstr "" msgid "You already voted." msgstr "Zaten oy verdin." -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "Site aracılığıyla düzenlendi" @@ -2514,125 +2543,130 @@ msgstr "Site aracılığıyla düzenlendi" msgid "Editing comment" msgstr "Yorum düzenleniyor" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "Böyle bir yarışma yok :(" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "\"%s\" anahtarıyla bir yarışma bulunamadı." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "Yarışmalar" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "Yarışma bulunamadı." -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "\"%s\" yarışmasına erişimin yok " -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "Yarışma devam etmiyor" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" şu anda devam etmiyor." -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "Zaten yarışmadasın" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "Zaten bir yarışmadasın: \"%s\"." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "“%s” için erişim kodunu gir" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "\"%s\" yarışmasında değilsin." -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "%(month)s ayındaki yarışmalar" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "%s - Sıralama" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "\"%s\" yarışmasına katılımın" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "%s adlı kullanıcının \"%s\" yarışmasına katılımı" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "Canlı" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Katılım" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "Yarışma etiketi: %s" @@ -2661,163 +2695,177 @@ msgstr "bozuk sayfa \"%s\"" msgid "Runtimes" msgstr "Dil sürümleri" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "Böyle bir organizasyon yok :(" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "\"%s\" anahtarına sahip bir organizasyon bulunamadı." -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "Böyle bir organizasyon bulunamadı." -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizasyonlar" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s üye" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "Organizasyona katılım" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "Bu organizasyonda zaten varsın." -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "Bu organizasyon açık değil." -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "Organizasyondan çık" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "\"%s\" içinde değilsin." -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "%s'ye katılma isteği" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "Katılma isteği detayı" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "%s - Katılım isteklerini yönet" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "Organizasyon yalnızca %d üye daha alabilir. %d üyenin katılımını onaylayamazsın." -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d kullanıcı onaylandı" msgstr[1] "%d kullanıcı onaylandı" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d kullanıcı onaylandı" msgstr[1] "%d kullanıcı onaylandı" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "%s düzenleniyor" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "Bu organizasyon düzenlenemiyor" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "Bu organizasyonu düzenleme yetkisine sahip değilsin." -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "Üyeleri bu organizasyondan atma yetkisine sahip değilsin." -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "Bu üyeyi atamazsın." -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "Atmaya çalıştığın üye bulunamıyor!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "Atmaya çalıştığın üye \"%s\" organizasyonunda değil." -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "Böyle bir problem yok :(" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "\"%s\" anahtarına sahip problem bulunamadı." -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr " {0} - Problem analizi" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} için problem analizi" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Problemler" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "Çözüm gönderme engellendi" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "Bu problem için istenmeyen adam olarak işaretlendin. Çözüm gönderemezsin." -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "Çok fazla çözüm gönderisi" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "Bu soru için çözüm gönderi sınırını geçtin." -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "Checker değişkenleri JSON nesnesi olarak verilmelidir." @@ -2887,52 +2935,52 @@ msgstr "%s için en iyi çözümler" msgid "Best solutions for {0}" msgstr "{0} için en iyi çözümler" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "\"%(problem)s\" için en iyi çözümler - %(contest)s" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "Problem %(number)s için en iyi çözümler - %(contest)s" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "{0} için en iyi çözümler - {2}" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "Problem {0} için en iyi çözümler - {1}" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "Kullanıcı adı harfler, rakamlar veya alt çizgilerden oluşmalıdır" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Tercih edilen dil" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "Haber bültenine abone ol" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "\"%s\" zaten kullanımda. E-posta adresleri yalnızca bir kez kullanılabilir." -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "E-posta sağlayıcın geçmişte yaşanan suistimallerden dolayı geçersizdir. Lütfen bilinen bir e-posta sağlayıcısı kullan." -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Kayıt" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "Kimlik doğrulama hatası" @@ -2940,7 +2988,7 @@ msgstr "Kimlik doğrulama hatası" msgid "Language statistics" msgstr "Dil istatistikleri" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Durum" @@ -2948,74 +2996,74 @@ msgstr "Durum" msgid "Version matrix" msgstr "Sürüm matrisi" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "%(user)s tarafından %(problem)s için gönderilen çözüm" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Tüm çözümler" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "Tüm çözümlerim" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "%s'nin tüm çözümleri" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "%s için tüm çözümler" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "Bir problem tanımlanmalı" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "%(problem)s için çözümlerim" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(user)s tarafından %(problem)s için gönderilen çözümler" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "Bir yarışma tanımlanmalı" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "{0} tarafından {2} için gönderilen çözüm - {4}" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "{0} tarafından problem {2} için gönderilen çözüm - {3}" @@ -3032,40 +3080,40 @@ msgstr "Sorun açıklaması" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "%s için yeni bilet" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "%(title)s - Bilet %(id)d" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "Biletler - Sayfa %(number)d/%(total)d" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "Yeni Bilet: %s" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "#%(id)d, sorumlular: %(users)s" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "," -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "kimse" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3074,87 +3122,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "Böyle bir kullanıcı yok" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "\"%s\" adında bir kullanıcı yok." -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "Hesabım" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "Kullanıcı %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Giriş" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "j M Y, G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "Sitede güncellendi" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Profili düzenle" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Sıralama" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3281,11 +3333,11 @@ msgstr "Haberler" msgid "posted on {time}" msgstr "{time}" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "Açıklamalar" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "Henüz bir açıklama yapılmadı." @@ -3478,7 +3530,7 @@ msgid "Info" msgstr "Hakkında" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "İstatistikler" @@ -3681,19 +3733,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "Kullanıcı katılımını göster" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "Organizasyonları göster" @@ -3968,7 +4020,7 @@ msgstr "" 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 "Bu problem analizini yalnızca takıldığın yerlerde kullanmalısın. Lütfen analizden kod kopyalayıp yapıştırma.

Problemi çözmeden resmi çözümü kopyalayıp yapıştırmak engellenmene neden olabilir." -#: templates/problem/editorial.html:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Yazar" @@ -4135,36 +4187,36 @@ msgstr "Zaman sınırı:" msgid "Memory limit:" msgstr "Bellek sınırı:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "Soru tipi" msgstr[1] "Soru tipleri" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "İzin verilen diller" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "%(lang)s için çevrimiçi judge yok" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "" msgstr[1] "" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "Açıklama talebi" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "Bir sorun bildir" @@ -4209,7 +4261,7 @@ msgstr "Problem tipleri" msgid "Point range" msgstr "Puan aralığı" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "Git" @@ -4256,7 +4308,7 @@ msgid "Invalid username or password." msgstr "Kullanıcı adı veya şifre yanlış" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "Giriş Yap!" @@ -4376,12 +4428,12 @@ msgid "Default language" msgstr "Varsayılan dil" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "Organizasyon üyelikleri" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "Gelecek yarışmalar hakkında beni bilgilendir" @@ -4397,57 +4449,93 @@ msgstr "Şartlar & Koşullar" msgid "Register!" msgstr "Kaydol!" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4528,15 +4616,15 @@ msgstr "Duruma göre filtrele..." msgid "Filter by language..." msgstr "Dile göre filtrele..." -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Çözümleri filtrele" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Bağlantın koptu. Son güncellemeleri görmek için sayfayı yenile." @@ -4752,121 +4840,125 @@ msgstr "Sıralama" msgid "Search by handle..." msgstr "Kullanıcı adı ile ara..." -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "Künye" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "En yakın büyük şehri seç" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "Editör teması" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "Matematik motoru" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "Profil fotoğrafı değiştir" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "Şifre değiştir" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 +msgid "Disable" msgstr "" -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 -msgid "Disable" +#: templates/user/edit-profile.html:367 +msgid "Refresh" msgstr "" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "Userscript" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "Profilini güncelle" diff --git a/locale/tr/LC_MESSAGES/djangojs.po b/locale/tr/LC_MESSAGES/djangojs.po index 901bcbf465..efd4bf5bcd 100644 --- a/locale/tr/LC_MESSAGES/djangojs.po +++ b/locale/tr/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:28\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po index f9e4be6edb..a39f0dca46 100644 --- a/locale/vi/LC_MESSAGES/django.po +++ b/locale/vi/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:28\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "Catalan" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "Tiếng Đức" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "Tiếng Anh" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "Tiếng Tây Ban Nha" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "Tiếng Pháp" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "Tiếng Croatia" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "Tiếng Hung-ga-ri" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "Tiếng Nhật Bản" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "Tiếng Hàn Quốc" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "Tiếng Braxin-Bồ Đào Nha" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "Tiếng Romania" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "Tiếng Nga" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "Tiếng Séc-bi (Latin)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "Tiếng Thổ Nhĩ Kỳ" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "Tiếng Việt" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "Tiếng Trung (Giản thể)" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "Tiếng Trung phồn thể" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "Trang chủ" @@ -113,106 +113,106 @@ msgstr "Bỏ ẩn bình luận" msgid "Associated page" msgstr "Trang liên kết" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "Các cuộc thi" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "Đề bài" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "Cài đặt" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "Kế hoạch" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "Chi tiêt" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "Định dạng" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "Xếp loại" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "Truy cập" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "Luật" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d kỳ thi đã được đánh dấu là có thể thấy." -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "Đánh dấu các kỳ thi là có thể thấy" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d kỳ thi đã được đánh dấu là ẩn." -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "Đánh dấu các kỳ thi là ẩn" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "Đã khóa %d cuộc thi thành công." -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "khóa bài thi" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "Mở khóa %d cuộc thi thành công." -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "gỡ khóa bài thi" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "%d bài nộp đã được lên lịch để chấm lại." -#: judge/admin/contest.py:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d tham gia tính lại." -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "Kết quả tính lại" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "tên người dùng" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "ảo" @@ -228,9 +228,9 @@ msgstr "Nội dung" msgid "Summary" msgstr "Tổng hợp" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "thành viên" @@ -238,8 +238,8 @@ msgstr "thành viên" msgid "object" msgstr "đối tượng" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "Xem trên trang web" @@ -247,66 +247,66 @@ msgstr "Xem trên trang web" msgid "Describe the changes you made (optional)" msgstr "Mô tả những thay đổi bạn đã thực hiện (tùy chọn)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "Mạng Xã hội" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "Phân loại" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Điểm" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "Giới hạn" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "Ngôn ngữ" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "Lịch sử" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "Tác giả" -#: judge/admin/problem.py:191 +#: 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 ngày xuất bản của bài tập đã được cập nhật." -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "Chỉnh thời gian xuất bản đến hiện tại" -#: judge/admin/problem.py:201 +#: 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 bài toán đã được công bố." -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "Công bố đề bài" -#: judge/admin/problem.py:211 +#: 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 bài toán đã được đánh dấu là cá nhân." -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "Đánh dấu bài toán là cá nhân" @@ -314,34 +314,34 @@ msgstr "Đánh dấu bài toán là cá nhân" msgid "timezone" msgstr "múi giờ" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "Thành viên" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "Hộp thư" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "Múi giờ" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "ngày tham gia" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d người dùng có tính lại điểm." -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "Tính lại điểm" @@ -493,115 +493,116 @@ msgstr "IOI" msgid "IOI (pre-2016)" msgstr "IOI (trước năm 2016)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "Mã xác thực 2 lớp phải có 6 chữ số" +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "Mã xác thực không đúng" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "Mã truy cập phải là 16 kí tự hệ 32" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "Đăng ký để nhận các cập nhật về cuộc thi" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Bật các tính năng đang thử nghiệm" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." -msgstr "" +msgstr "Bạn cần phải giải ít nhất một bài trước khi được quyền cập nhật hồ sơ." -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Bạn không thể là thành viên của nhiều hơn {count} tổ chức công khai." -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "Tải các bình luận về?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "Tải xuống các bài nộp?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" -msgstr "" +msgstr "Sắp xếp theo mã bài tập:" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "Hãy để trống để bao gồm mọi bài nộp" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "Lọc theo kết quả:" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "Vui lòng chọn ít nhất một thứ để tải về." -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "Bất kì máy chấm nào" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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 "Tên truy cập" -#: judge/forms.py:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "Mật khẩu" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "Độ dài của bài nộp không hợp lệ." -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "Phản hồi WebAuthn không hợp lệ." -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "Mã xác thực hoặc mã truy cập không hợp lệ." -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Mã đầu bài chỉ bao gồm ^[a-z0-9] + $" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "Mã bài tập đã tồn tại." -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "id cuộc thi phải bao gồm ^[a-z0-9] + $" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "Mã kỳ thi đã tồn tại." @@ -681,7 +682,7 @@ msgid "comments" msgstr "nhận xét" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "Hướng giải cho %s" @@ -722,21 +723,21 @@ msgstr "mô tả thẻ" msgid "contest tag" msgstr "thẻ cuộc thi" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "thẻ cuộc thi" #: judge/models/contest.py:61 msgid "Visible" -msgstr "" +msgstr "Hiển thị" #: judge/models/contest.py:62 msgid "Hidden for duration of contest" -msgstr "" +msgstr "Ẩn trong lúc thi" #: judge/models/contest.py:63 msgid "Hidden for duration of participation" -msgstr "" +msgstr "Ẩn trong lúc tham gia" #: judge/models/contest.py:65 msgid "contest id" @@ -747,410 +748,426 @@ msgid "contest name" msgstr "tên cuộc thi" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "Những người này sẽ có thể chỉnh sửa các cuộc thi." +msgid "These users will be able to edit the contest." +msgstr "Những người dùng này có thể chỉnh sửa cuộc thi." + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "Những người dùng này có thể chỉnh sửa cuộc thi, nhưng sẽ không được liệt kê trong danh sách tác giả." -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:73 +msgid "These users will be able to view the contest, but not edit it." +msgstr "Những người dùng này có thể xem cuộc thi, nhưng không thể chỉnh sửa nó." + +#: judge/models/contest.py:76 judge/models/runtime.py:136 msgid "description" msgstr "mô tả" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "đề bài" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "t. gian b. đầu" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "thời gian kết thúc" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "giới hạn thời gian" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "công khai" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." msgstr "Nên được đặt ngay cả đối với các cuộc thi riêng, nơi nó sẽ xác định xem các cuộc thi chỉ được nhìn thấy bởi các thành viên của tổ chức này." -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "cuộc thi đã được xếp hạng" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "Cho dù cuộc thi này có thể được đánh giá cao." -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "Xem bảng điểm cuộc thi" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "Những người này sẽ có thể xem bảng điểm" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" -msgstr "" +msgstr "Sự hiện thị của bảng điểm" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" -msgstr "" +msgstr "Sự hiện thị của bảng điểm trong cuộc thi" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "không có bình luận gì" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "Đừng comment mà hãy sử dụng hệ thống giải đáp thắc mắc." -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "Xếp loại thấp nhất cho cuộc thi" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "Xếp loại cao nhất cho cuộc thi" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "đánh giá tất cả" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "Đánh giá những người đã tham gia." -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "không xếp hạng" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "riêng tu cho thành viên cụ thể" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "thí sinh riêng tư" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "Nếu là riêng tư, chỉ những người dùng này có thể xem kỳ thi" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "ẩn các thẻ đầu bài" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "Cho dù vấn đề tags nên được ẩn theo mặc định." -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "chỉ chạy các phép thử trước" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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 "Chỉ chấm bài thử. Thường sử dụng trong các cuộc thi, sau đó bỏ để chấm lại các bài chấm ở cuối cuộc thi." -#: judge/models/contest.py:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "dành riêng cho tổ chức" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "tổ chức" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "Nếu là dành riêng, thì chỉ các tổ chức này mới có thể xem cuộc thi" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "Ảnh OpenGraph" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "Ghi đè ảnh Logo" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "Ảnh này sẽ thay thế logo mặc định cho người dùng trong kỳ thi." -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "số lượng người tham gia trực tiếp" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "tổng kết cuộc thi" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "Văn bản thuần tuý, Hiển thị trong thẻ meta, ví dụ như cho các phương tiện truyền thông xã hội." -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "mã truy cập" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "Một mã tùy chọn để nhắc nhở các thí sinh trước khi họ được phép tham gia kỳ thi. Để trống để vô hiệu hóa." -#: judge/models/contest.py:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "cá nhân - không tính điểm" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "Cấm những người dùng đã chọn tham gia kỳ thi này." -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "định dạng kỳ thi" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "Dạng mô đun sử dụng cho kỳ thi." -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "cấu hình dạng kỳ thi" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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 "Một đối tượng JSON dùng để chọn cấu hình định dạng cho mô đun kỳ thi. Để trống nếu không dùng. Định dạng chính xác phụ thuộc vào định dạng kỳ thi được chọn." -#: judge/models/contest.py:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "Khóa cuộc thi." -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." -msgstr "Không cho các bài nộp của cuộc thi này chấm lại" +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." +msgstr "Không cho các bài nộp của cuộc thi này chấm lại sau thời gian này." -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "độ chính xác" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "số chữ số sau dấu chấm phẩy để làm tròn." -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "Xem các kỳ thi riêng tư" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "Sửa các kỳ thi sở hữu" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "Sửa tất cả các kỳ thi" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "Nhân bản kỳ thi" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "Kỳ thi MOSS" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "Đánh gia các kỳ thi" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "Mã truy cập kỳ thi" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "Tạo kỳ thi riêng tư" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "Chỉnh tính công khai của cuộc thi" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" -msgstr "" +msgstr "Chỉnh trạng thái khóa của cuộc thi" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "cuộc thi" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "cuộc thi" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "cuộc thi liên quan" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "điểm" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "thời gian tích lũy" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "bị loại" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "có bị hủy tư cách tham gia" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" -msgstr "" +msgstr "Trường dùng để tie-break" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "mã số tham gia ảo" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 nghĩa là không phải đăng ký ảo, ngược lại là lần đăng ký ảo thứ n" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "định dạng dữ liệu cụ thể của kỳ thi" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "%s spectating trong %s" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "%s trong %s, v%d" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s trong %s" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "tham gia cuộc thi" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "tham gia cuộc thi" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "vấn đề" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "điểm" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "một phần" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "được test trước" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "thứ tự" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "ghi đè độ dài output prefix" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Số lượng tối đa lần nộp cho bài này, hoặc để trống nếu không giới hạn." -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "Tại sao bạn không thể nộp bài cho một bài tập?" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "đề bài của cuộc thi" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "đề bài của cuộc thi" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "nộp bài" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "tham dự" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "Bài nộp này chỉ chỉ chạy trên bài thử." -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "nộp bài thi" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "nộp bài thi" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "hạng" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "đánh giá" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "volative" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "lần xếp hạng cuối" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "xếp hạng cuộc thi" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "xếp hạng cuộc thi" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "kết quả kỳ thi moss" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "kết quả kỳ thi moss" @@ -1190,7 +1207,7 @@ msgstr "mục cha" msgid "post title" msgstr "tiêu đề bài viết" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "tác giả" @@ -1198,7 +1215,7 @@ msgstr "tác giả" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "hiển thị công khai" @@ -1234,38 +1251,10 @@ msgstr "bài đăng blog" msgid "blog posts" msgstr "bài đăng blog" -#: judge/models/message.py:11 -msgid "message title" -msgstr "tiêu đề thông báo" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "nội dung thư" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "người gửi" - -#: judge/models/message.py:14 -msgid "target" -msgstr "mục tiêu" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "nhãn thời gian của tin nhắn" - -#: judge/models/message.py:16 -msgid "read" -msgstr "đọc" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "các tin nhắn trong luồng" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" -msgstr "" +msgstr "Những kí tự bị cấm sử dụng: %(value)s" #: judge/models/problem.py:35 msgid "problem category ID" @@ -1279,7 +1268,7 @@ msgstr "phân loại đề bài" msgid "problem type" msgstr "kiểu vấn đề" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "kiểu vấn đề" @@ -1291,7 +1280,7 @@ msgstr "iD của nhóm đề bài" msgid "problem group name" msgstr "tên nhóm đề bài" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "nhóm đề bài" @@ -1311,7 +1300,7 @@ msgstr "liên kết" msgid "full name" msgstr "tên đầy đủ" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "tên viết tắt" @@ -1340,232 +1329,252 @@ msgstr "giấy phép" msgid "licenses" msgstr "giấy phép" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "mã đầu bài" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "Một mã ngắn duy nhất cho đề bài, sử dụng sau /problem/ trong url" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "tên bài toán" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "Tên đầy đủ của đề bài, được hiển thị trong dánh sách đề bài." -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "bài toán" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "người tạo" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Những người này có thể chỉnh sửa bài tập và được liệt kê trong danh sách tác giả." -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "giám khảo" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Những người này có thể chỉnh sửa bài tập nhưng không được liệt kê trong danh sách tác giả." -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "người kiểm tra" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "Những người này có thể xem bài tập riêng tư nhưng không thể chỉnh sửa chúng." -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "Kiểu của bài tập, được hiển thị trong trang đề bài." -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "Nhóm của bài tập, hiển thị dưới Thể loại trong danh sách bài tập." -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "Giới hạn thời gian (tính bằng giây) cho bài tập này. Phần lẻ giây (chẳng hạn 1.5) cũng được hỗ trợ." -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "giới hạn bộ nhớ" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "Giới hạn bộ nhớ (kilobytes) cho bài tập này (chẳng hạn 64mb = 65536 kilobytes)." -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Điểm thưởng khi hoàn thành bài tập. Điểm được hiển thị với hậu tố 'p' nếu là bài từng phần." -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "cho phép cho điểm từng phần" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "ngôn ngữ cho phép" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "Danh sách các ngôn ngữ cho phép nộp bài." -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "quản lý thủ công" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "Liệu trình chấm có được phép quản lý dữ liệu hay không." -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "ngày xuất bản" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "Không có khả năng tự động công khai vì vấn đề tương thích ngược" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "Cấm những người dùng được chọn nộp bài cho bài tập này." -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "Giấy phép mà theo đó bài tập này được công bố." -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "tổng quan bài tập" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "số thành viên" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "Số thành viên đã giải được bài tập." -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "tỉ lệ giải được" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" +msgstr "Cho phép truy cập hoàn toàn markdown" + +#: judge/models/problem.py:174 +msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "Nếu riêng tư, chỉ những tổ chức này có thể xem bài tập." -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "Xem các bài bị ẩn" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "Sửa đề bài của mình. " -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "Sửa mọi đề bài." -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "Sửa mọi đề bài công khai." -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "Copy sang bài mới" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "Thay đổi trường is_public" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "Thay đổi trường is_manually_managed" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "Xem đề bài riêng của tổ chức" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "ngôn ngữ" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "tên bộ dịch" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "mô tả bộ dịch" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "dịch đầu bài" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "dịch đầu bài" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "bài tập được làm rõ" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "nội dung làm rõ" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "thời gian làm rõ" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "giới hạn tài nguyên theo ngôn ngữ" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "giới hạn tài nguyên theo ngôn ngữ" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "đầu bài liên quan" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "ngày công bố" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "biên tập kỳ thi" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "Xem các lời giải ẩn" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "lời giải" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "lời giải" @@ -1677,112 +1686,112 @@ msgstr "giá trị điểm" msgid "case is pretest?" msgstr "test mẫu?" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "tiêu đề của tổ chức" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "organization slug" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "Tên tổ chức thể hiện trong URL" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "Hiển thị bên cạnh tên trong cuộc thi" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "mô tả tổ chức" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "quản trị viên" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "Những người có thể chỉnh sửa tổ chức" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "ngày tạo" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "là tổ chức mở?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "Cho phép tham gia tổ chức" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "dung lượng tối đa" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "Số người dùng tối đa trong tổ chức này, chỉ áp dụng đối với tổ chức tư nhân" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "Mã truy cập sinh viên" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "Ảnh này sẽ thay thế logo mặc định của trang khi thành viên xem tổ chức." -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "Quản trị các tổ chức" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "Sửa mọi tổ chức" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "tổ chức" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "liên kết với người sử dụng" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "tự mô tả" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "vị trí" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "ngôn ngữ" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "lần truy cập cuối cùng" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "hiển thị xếp hạng" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "Người dùng bình thường" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "Người ra đề" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1791,155 +1800,167 @@ msgstr "Người ra đề" msgid "Admin" msgstr "Quản trị" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "bình luận tắt" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "Một vài người tốt nhất là khi im lặng." -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "thành viên không được liệt kê" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "Thành viên không được xếp hạng." -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "script tự định nghĩa" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "JavaScript tự định nghĩa để tùy chỉnh trang web" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "cuộc thi hiện tại" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "bộ xử lý toán học" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "công cụ được sử dụng để render toán học" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "Xác thực 2 yếu tố TOTP được kích hoạt" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" -msgstr "" +msgstr "đánh dấu để kích hoạt xác minh hai yếu tố TOTP-based" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" -msgstr "" +msgstr "WebAuthn xác thực 2 yếu tố được kích hoạt" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" -msgstr "" +msgstr "đánh dấu để kích hoạt xác minh hai yếu tố dựa trên WebAuthn" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "Mã TOTP" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "mã 32 ký tự base32-encoded cho TOTP" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "Mã TOTP cần rỗng hoặc base32" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "ghi chú nội bộ" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "Ghi chú cho quản trị viên chấm lại cho thành viên này." -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" -msgstr "" +msgstr "thời gian tải dữ liệu cuối cùng" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "Hiển thị những thứ đang được phát triển" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" -msgstr "" +msgstr "Chỉnh sửa cài đặt TOTP " -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "hồ sơ người dùng" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "hồ sơ người dùng" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "Tên thiết bị" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" -msgstr "" +msgstr "thông tin đăng nhập" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "thời gian yêu cầu" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "trạng thái" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "lý do" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "yêu cầu tham gia tổ chức" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "yêu cầu tham gia tổ chức" @@ -2009,7 +2030,7 @@ msgstr "mô tả ngôn ngữ" #: judge/models/runtime.py:43 msgid "Use this field to inform users of quirks with your environment, additional restrictions, etc." -msgstr "" +msgstr "Sử dụng trường này để thông báo cho người dùng những đặc điểm của môi trường, hạn chế bổ sung, vv." #: judge/models/runtime.py:45 msgid "extension" @@ -2095,210 +2116,210 @@ msgstr "chấm điểm" msgid "judge" msgstr "máy chấm" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "Chấp nhận (AC)" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "Kết quả sai (WA)" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "Quá thời gian (TLE)" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "Tràn bộ nhớ (MLE)" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "Kết xuất dữ liệu ra quá nhiều" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "Lỗi khi chạy chương trình (IR)" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "Lỗi Runtime" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "Lỗi dịch (CE)" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "Lỗi Nội Bộ" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "Ngắn mạch" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "Bị hủy bỏ" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "Đang chờ" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "Đang xử lý" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "Chấm điểm" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "Đã Hoàn Thành" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "Lỗi nội bộ (máy chủ chấm bài lỗi)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "ngày nộp bài" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "thời gian thực hiện tối đa" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "bộ nhớ sử dụng" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "điểm được cho" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "ngôn ngữ lập trình" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "trạng thái" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "kết quả" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "lỗi dịch" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "nhóm test" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "điểm cho testcase" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "tổng điểm test case" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "đánh giá trên" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "thời gian chấm của bài nộp" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" -msgstr "được chấm lại bởi admin" - #: judge/models/submission.py:83 +msgid "last rejudge date by admin" +msgstr "ngày cuối cùng được chấm lại bởi admin" + +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "chỉ được chạy bởi test sơ bộ" -#: judge/models/submission.py:86 -msgid "lock submission" -msgstr "khóa bài nộp" +#: judge/models/submission.py:87 +msgid "submission lock" +msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "Ngừng bất kì bài nộp" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "Chấm lại bài nộp" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "Chấm lại nhiều bài nộp" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "Nộp không giới hạn" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "Xem tất cả bài nộp" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "Gửi lại bài nộp của người khác" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "nộp bài" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "bài nộp liên quan" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "mã nguồn" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "mã testcase" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "cờ trạng thái" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "khả năng điểm" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "lô số" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "phản hồi chấm thi" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "lập trình đầu ra" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "test case của bài" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "các test case của bài" @@ -2316,7 +2337,7 @@ msgstr "thời gian tạo" #: judge/models/ticket.py:14 msgid "assignees" -msgstr "" +msgstr "Những người được phân công" #: judge/models/ticket.py:16 msgid "quick notes" @@ -2346,6 +2367,10 @@ msgstr "thẻ" msgid "poster" msgstr "Người đăng" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "nội dung thư" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2358,7 +2383,7 @@ msgstr "Trang [page] /[topage]" #: judge/pdf_problems.py:282 #, python-format msgid "Page %s of %s" -msgstr "" +msgstr "Trang số %s trên %s" #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" @@ -2368,19 +2393,23 @@ msgstr "Đang tính lại điểm của cuộc thi" msgid "Running MOSS" msgstr "Đang chạy MOSS" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "Đang chỉnh sửa các bài nộp" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "Tính lại điểm của người dùng" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "Áp dụng bộ lọc" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" -msgstr "" +msgstr "Đang chuẩn bị dữ liệu bài nộp của bạn" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "Đang chuẩn bị dữ liệu bình luận của bạn" @@ -2490,7 +2519,7 @@ msgstr "Bạn cần phải giải ít nhất một bài trước khi được qu msgid "You already voted." msgstr "Bạn đã bỏ phiếu rồi." -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "Biên tập từ trang web" @@ -2498,125 +2527,130 @@ msgstr "Biên tập từ trang web" msgid "Editing comment" msgstr "Đang chỉnh sửa bình luận" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "Không có cuộc thi như vậy" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Không thể tìm thấy một cuộc thi với khóa \"%s\"." -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "Cuộc thi" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "Không thể tìm thấy các cuộc thi như vậy." -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Truy cập vào cuộc thi \"%s\" từ chối" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" -msgstr "" +msgstr "Nhân bản kỳ thi" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "Cuộc thi được nhân bàn từ %s" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "Cuộc thi không đang diễn ra" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" không đang diễn ra." -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "Đang trong cuộc thi" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "Bạn đang ở một cuộc thi: \"%s\"." -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "Cấm tham gia" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "Nhập mã đăng nhập cho %s" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "Bạn đang không tham gia cuộc thi \"%s\"." -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "Lịch của Contest yêu cầu là năm và tháng là số nguyên" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "Cuộc thi tại %(month)s" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "Thống kê của %s " -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "%s xếp hạng" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "Tham gia của bạn vào %s" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "%s tham gia vào %s" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "Trực tuyến" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Tham gia" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "Kết quả MOSS của %s " -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "Đang chạy MOSS cho %s..." -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "Thẻ cuộc thi %s" @@ -2645,161 +2679,175 @@ msgstr "trang lỗi %s" msgid "Runtimes" msgstr "Đang chạy" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "Không có tổ chức như vậy" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Không thể tìm thấy một tổ chức với khóa \"%s\"." -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "Không thể tìm thấy các tổ chức như vậy." -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Tổ chức" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s thành viên" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "Đang tham gia tổ chức" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "Bạn đã trong tổ chức." -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "Tổ chức này không phải là mở." -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "Rời khỏi tổ chức" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "Bạn đang không ở trong \"%s\"." -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "Yêu cầu tham gia %s" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "Chi tiết yêu cầu tham gia" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "Quản lý các yêu cầu tham gia %s" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "Tổ chức của bạn có thể chỉ nhận được %d thêm các thành viên. Bạn không thể chấp nhận người dùng %d." -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "Chấp nhận %d thành viên." -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "Từ chối %d thành viên." -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "Đang chỉnh sửa %s" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "Không thể chỉnh sửa tổ chức" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "Bạn không có quyền chỉnh sửa tổ chức này." -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "Bạn không có quyền loại người từ tổ chức này." -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "Không thể loại thành viên" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "Thành viên bạn muốn loại không tồn tại!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "Thành viên mà bạn muốn loại không thuộc tổ chức: %s." -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "Không có vấn đề như vậy" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "Không thể tìm thấy một đề bài với mã \"%s\"." -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "Hướng giải của {0}" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "Hướng giải của {0}" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "Đề bài" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "Nộp cho %s" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "Cấm nộp bài" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "Bạn đã được coi là cá nhận không tính điểm cho đề này. Bạn không thể nộp bài." -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "Quá nhiều bài nộp" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "Bạn đã vượt quá giới hạn lần nộp của bài này." -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "Nhân bản bài tập" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "Đối số kiểm tra phải là đối tượng JSON" @@ -2868,52 +2916,52 @@ msgstr "Các giải pháp tốt nhất cho %s" msgid "Best solutions for {0}" msgstr "Các giải pháp tốt nhất cho {0}" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Các giải pháp tốt nhất cho %(problem)s trong %(contest)s" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "Những lời giải tốt nhất cho bài %(number)s trong cuộc thi %(contest)s" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "Các giải pháp tốt nhất cho {0} trong {2}" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "Những lời giải tốt nhất cho bài {0} trong {1}" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "Tên người dùng phải chứa chữ cái, số hoặc dấu gạch chân" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "Ngôn ngữ ưa thích" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "Đăng ký nhận bản tin?" -#: judge/views/register.py:45 +#: judge/views/register.py:44 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "Địa chỉ email \"%s\" đã được sử dụng. Chỉ có một đăng ký được cho phép cho mỗi địa chỉ mail." -#: judge/views/register.py:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "Nhà cung cấp email của bạn không được phép do phát tán thư rác. Xin vui lòng sử dụng một nhà cung cấp email có uy tín." -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "Đăng ký" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "Xác thực không thành công" @@ -2921,7 +2969,7 @@ msgstr "Xác thực không thành công" msgid "Language statistics" msgstr "Thống kê theo ngôn ngữ" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "Trạng thái" @@ -2929,81 +2977,81 @@ msgstr "Trạng thái" msgid "Version matrix" msgstr "Ma trận phiên bản" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Nộp %(problem)s bởi %(user)s" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "Tất cả các bài nộp" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "Tất cả những lần nộp bài của tôi" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "Tất cả các bài nộp bởi %s" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "Tất cả các bài nộp bởi %s" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "Phải giải được 1 bài" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "Các bài nộp của tôi cho %(problem)s" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "bài nộp của %(user)s cho %(problem)s" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "Phải vượt qua một cuộc thi" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "Các bài nộp của tôi trong %(contest)s" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "Các bài nộp của %(user)s trong %(contest)s" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "Các bài nộp của tôi trong {0}" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" -msgstr "" +msgstr "Bài nộp của {0} trong {2}" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "{0} gửi cho {2} trong {4}" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "" #: judge/views/ticket.py:33 judge/views/ticket.py:39 msgid "Ticket title" -msgstr "" +msgstr "Tên thẻ" #: judge/views/ticket.py:40 msgid "Issue description" @@ -3011,133 +3059,137 @@ msgstr "Mô tả vấn đề" #: judge/views/ticket.py:48 msgid "You must solve at least one problem before you can create a ticket." -msgstr "" +msgstr "Bạn cần phải giải ít nhất một bài trước khi được quyền tạo một thẻ mới." -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" -msgstr "" +msgstr "Thẻ mới cho %s" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" -msgstr "" +msgstr "%(title)s - Thẻ %(id)d" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" -msgstr "" +msgstr "Thẻ - Trang số %(number)d trên %(total)d" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" -msgstr "" +msgstr "Thẻ mới: %s" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" -msgstr "" +msgstr "#%(id)d, được gán cho: %(users)s" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr ", " -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "không có ai" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" -msgstr "" +msgstr "Tin nhắn về thẻ mới cho: %s" #: judge/views/two_factor.py:49 msgid "Enable Two-factor Authentication" +msgstr "Kích hoạt xác thực 2 bước" + +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" -msgstr "" +msgstr "Vô hiệu hóa Xác thực 2 bước" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "Tên không hợp lệ" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" -msgstr "" +msgstr "Thực hiện xác thực 2 bước" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "Không có thư mục này" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "Không xử lý người dùng \"%s\"." -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "Tài khoản của tôi" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "Người dùng %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "Đăng nhập" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "M j, Y, G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "Đang chuẩn bị dữ liệu..." -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "Đang tải xuống dữ liệu" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "Cập Nhật trên trang web" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Chỉnh sửa tiểu sử" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Leaderboard" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." -msgstr "" +msgstr "Bạn vừa đăng xuất thành công" #: judge/views/widgets.py:52 judge/views/widgets.py:62 #, python-format @@ -3264,11 +3316,11 @@ msgstr "Tin tức" msgid "posted on {time}" msgstr "đã đăng lúc {time}" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "Làm rõ" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "Chưa có lời làm rõ nào được đưa ra ở thời điểm này." @@ -3461,7 +3513,7 @@ msgid "Info" msgstr "Thông tin" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "Thống kê" @@ -3637,7 +3689,7 @@ msgstr "Cuộc thi này chỉ dành riêng cho một số người dùng." #: templates/contest/private.html:10 msgid "Additionally, only the following organizations may access this contest:" -msgstr "" +msgstr "Thêm vào đó, chỉ có các tổ chức sau có thể truy cập vào cuộc thi này:" #: templates/contest/private.html:12 msgid "Only the following organizations may access this contest:" @@ -3654,7 +3706,7 @@ msgstr "Bắt đầu vào lúc {time}" #: templates/contest/ranking-table.html:30 msgid "Participation ended." -msgstr "" +msgstr "Kết thúc thời gian tham gia." #: templates/contest/ranking-table.html:40 msgid "Un-Disqualify" @@ -3664,19 +3716,19 @@ msgstr "Bỏ loại" msgid "Disqualify" msgstr "Loại" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "Liệu bạn có muốn loại bài tham gia này?" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "Liệu bạn có muốn bỏ loại bài tham gia này?" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "Xem thành viên tham gia" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "Hiển thị các tổ chức" @@ -3777,7 +3829,7 @@ msgstr "Bạn phải tham gia lại để được hiện thị trên bảng x #: templates/organization/home.html:11 msgid "You will have to request membership in order to join again." -msgstr "" +msgstr "Bạn cần phải gửi yêu cầu tham gia để vào lại tổ chức." #: templates/organization/home.html:24 msgid "Leave organization" @@ -3885,15 +3937,15 @@ msgstr "Loại" #: templates/organization/users.html:34 msgid "Are you sure you want to kick this user?" -msgstr "" +msgstr "Bạn có chắc muốn xóa người người dùng này?" #: templates/pagedown.html:10 msgid "Update preview" -msgstr "" +msgstr "Xem trước cập nhật" #: templates/problem/clone.html:37 msgid "Enter a new code for the cloned problem:" -msgstr "" +msgstr "Nhập mã mới cho bài tập đã nhân bản:" #: templates/problem/data.html:344 msgid "View YAML" @@ -3949,9 +4001,9 @@ msgstr "Lưu" #: 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 "" +msgstr "Nhớ rằng hướng dẫn giải này chỉ nên sử dụng khi bế tắc, và tuyệt đối không nên sao chép mã nguồn kèm theo. Hãy tôn trọng tác giả bài tập và người viết hướng dẫn giải.

Nộp mã nguồn lời giải chính thức trước khi giải bài tập đó có thể khiến bạn bị ban." -#: templates/problem/editorial.html:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "Tác giả:" @@ -3980,28 +4032,28 @@ msgstr "AC %%" #: templates/problem/manage_submission.html:55 msgid "Leave empty to not filter by language" -msgstr "" +msgstr "Để trống để không lọc theo ngôn ngữ" #: templates/problem/manage_submission.html:60 msgid "Leave empty to not filter by result" -msgstr "" +msgstr "Để trống để không lọc theo kết quả" #: templates/problem/manage_submission.html:79 msgid "Need valid values for both start and end IDs." -msgstr "" +msgstr "Cần giá trị hợp lệ cho cả ID bắt đầu và kết thúc. " #: templates/problem/manage_submission.html:82 msgid "End ID must be after start ID." -msgstr "" +msgstr "ID kết thúc phải sau ID bắt đầu" #: 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 "" +msgstr "Bạn chuẩn bị chấm lại {count} bài nộp. Bạn có chắc bạn muốn làm việc này?" #: templates/problem/manage_submission.html:96 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" -msgstr "" +msgstr "Bạn chuẩn bị chấm lại một vài bài nộp. Bạn có chắc bạn muốn làm việc này?" #: templates/problem/manage_submission.html:115 msgid "Rejudge Submissions" @@ -4038,12 +4090,12 @@ msgstr "Tính điểm lại mọi thứ" #: templates/problem/manage_submission.html:158 #, python-format msgid "This will rescore %(count)d submissions." -msgstr "" +msgstr "Việc này sẽ chấm lại %(count)d bài nộp." #: templates/problem/manage_submission.html:162 #, python-format msgid "Are you sure you want to rescore %(count)d submissions?" -msgstr "" +msgstr "Bạn có chắc chấm lại %(count)d bài nộp?" #: templates/problem/manage_submission.html:163 msgid "Rescore all submissions" @@ -4116,34 +4168,34 @@ msgstr "Giới hạn thời gian:" msgid "Memory limit:" msgstr "Giới hạn bộ nhớ:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "Loại đề bài" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "Ngôn ngữ cho phép" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "Không có máy chấm %(lang)s đang online" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "Máy chấm" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "đang không khả dụng" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "Gửi thắc mắc" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "Báo cáo vấn đề" @@ -4186,9 +4238,9 @@ msgstr "Kiểu bài tập" #: templates/problem/search-form.html:57 msgid "Point range" -msgstr "" +msgstr "Tầm điểm" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "Tìm" @@ -4210,7 +4262,7 @@ msgstr " Cảnh báo! Ngôn ngữ mặc định của bạn, %(default #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" -msgstr[0] "" +msgstr[0] "Bạn còn %(left)s lần nộp" #: templates/problem/submit.html:220 msgid "You have 0 submissions left" @@ -4234,7 +4286,7 @@ msgid "Invalid username or password." msgstr "Tên người dùng hoặc mật khẩu không hợp lệ." #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "Đăng nhập!" @@ -4280,7 +4332,7 @@ msgstr "Chúng tôi đã gửi bạn những hướng dẫn về việc thiết #: 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 "" +msgstr "Nếu bạn không nhận được email, hãy đảm bảo bạn đã nhập địa chỉ email mà bạn đã dùng để đăng ký, và kiểm tra mục thư rác của bạn." #: templates/registration/password_reset_email.html:9 #, python-format @@ -4354,12 +4406,12 @@ msgid "Default language" msgstr "Ngôn ngữ mặc định" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "Tổ chức đại diện" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "Thông báo cho tôi về các cuộc thi sắp tới" @@ -4375,57 +4427,93 @@ msgstr "Điều khoản & Điều kiện" msgid "Register!" msgstr "Đăng ký!" -#: templates/registration/totp_disable.html:38 +#: templates/registration/totp_disable.html:31 msgid "To protect your account, you must first authenticate before you can disable Two Factor Authentication." msgstr "Để bảo vệ tài khoản của bạn, bạn cần xác thực trước khi bạn có thể vô hiệu hóa 2FA." -#: templates/registration/totp_disable.html:45 +#: 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 "" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" -msgstr "" +msgstr "Vô hiệu hóa Xác thực 2 bước" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "Quét mã này với ứng dụng xác thực của bạn:" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "Mã QR" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "Hoặc nhập mã này thủ công:" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "Nhập mã 6 chữ số sinh ra bởi ứng dụng của bạn:" -#: templates/registration/totp_enable.html:91 +#: templates/registration/totp_enable.html:90 +msgid "Refresh Two Factor Authentication" +msgstr "" + +#: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" +msgstr "Kích hoạt xác thực 2 bước" + +#: templates/registration/totp_enable.html:98 +msgid "Below is a list of one-time use scratch codes." +msgstr "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." -msgstr "" +msgstr "Trình duyệt của bạn không hỗ trợ WebAuthn." #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." -msgstr "" +msgstr "Không thể kết nối với máy chủ." -#: templates/registration/two_factor_auth.html:77 +#: 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 "" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." msgstr "" @@ -4488,7 +4576,7 @@ msgstr "Mã trận phiên bản" #: 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 "Một lỗi hệ thống vừa xảy ra trong quá trình chấm bài, và các quản trị viên của %(SITE_NAME)s đã được thông báo về điều này.
Hãy thử nộp lại sau vài giây." #: templates/submission/internal-error-message.html:8 msgid "An internal error occurred while grading." @@ -4506,15 +4594,15 @@ msgstr "Lọc theo trạng thái..." msgid "Filter by language..." msgstr "Lọc theo ngôn ngữ..." -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Lọc các bài nộp" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Tổng:" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Bạn đã bị ngắt kết nối. Tải lại trang để hiển thị thông tin cập nhật mới nhất." @@ -4533,7 +4621,7 @@ msgstr "chấm lại" #: templates/submission/row.html:64 msgid "This submission has been locked, and cannot be rejudged." -msgstr "" +msgstr "Bài nộp này đã bị khóa và không thể được chấm lại." #: templates/submission/row.html:65 msgid "locked" @@ -4609,7 +4697,7 @@ msgstr "Tài nguyên:" #: templates/submission/status-testcases.html:138 msgid "Maximum runtime on single test case:" -msgstr "" +msgstr "Thời gian chạy tối đa cho một test case:" #: templates/submission/status-testcases.html:143 msgid "Final pretest score:" @@ -4633,7 +4721,7 @@ msgstr "Xem nguồn" #: templates/submission/status.html:100 msgid "Press Ctrl-Enter or Command-Enter to abort." -msgstr "" +msgstr "Nhấn Ctrl-Enter hay Command-Enter để hủy bỏ chương trình" #: templates/submission/status.html:102 msgid "Abort" @@ -4729,121 +4817,125 @@ msgstr "Xếp hạng" msgid "Search by handle..." msgstr "Tìm kiếm theo tên..." -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." -msgstr "" +msgstr "Nó cho phép bạn truy cập tài khoản mà không có xác thực 2 bước" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "Đang tạo..." -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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 "Tạo lại" -#: templates/user/edit-profile.html:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "Gỡ bỏ" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: templates/user/edit-profile.html:148 templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:401 msgid "Generate" msgstr "Tạo" -#: templates/user/edit-profile.html:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "Chọn thành phố lớn gần bạn nhất" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "Giao diện khung viết code" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "Đổi ảnh đại diện của bạn" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "Đổi mật khẩu của bạn" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "Mã xác thực 2 yếu tố đã được kích hoạt" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" -msgstr "Mã xác thực 2 yếu tố đã được vô hiệu hóa" - -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 msgid "Disable" msgstr "Vô hiệu hóa" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:367 +msgid "Refresh" +msgstr "" + +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" -msgstr "" +msgstr "Ẩn" -#: templates/user/edit-profile.html:381 +#: templates/user/edit-profile.html:384 +msgid "Two-factor Authentication is disabled" +msgstr "Mã xác thực 2 yếu tố đã được vô hiệu hóa" + +#: templates/user/edit-profile.html:385 msgid "Enable" -msgstr "" +msgstr "Kích hoạt" -#: templates/user/edit-profile.html:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" -msgstr "" +msgstr "Xóa" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" -msgstr "" +msgstr "Đặt tên cho khóa này" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" -msgstr "" +msgstr "Thêm" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" -msgstr "" +msgstr "script tự định nghĩa" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "Cập nhật profile" @@ -4866,35 +4958,35 @@ msgstr "" #: templates/user/prepare-data.html:64 msgid "Are you sure you want to prepare a download?" -msgstr "" +msgstr "Bạn có chắc muốn tải về?" #: templates/user/prepare-data.html:79 msgid "We are currently preparing your data." -msgstr "" +msgstr "Chúng tôi đang chuẩn bị dữ liệu cho bạn." #: templates/user/prepare-data.html:81 msgid "Track progress" -msgstr "" +msgstr "Theo dõi quá trình" #: templates/user/prepare-data.html:86 msgid "Once your data is ready, you will find a download link on this page." -msgstr "" +msgstr "Khi mà dữ liệu bạn đã sẵn sàng, bạn sẽ tìm thấy link tải trên trang này." #: templates/user/prepare-data.html:103 msgid "Submissions" -msgstr "" +msgstr "Các bài nộp" #: templates/user/prepare-data.html:120 msgid "Prepare new download" -msgstr "" +msgstr "Chuẩn bị cho tải xuống mới" #: templates/user/prepare-data.html:122 msgid "Prepare download" -msgstr "" +msgstr "Chuẩn bị tải xuống" #: templates/user/prepare-data.html:126 msgid "Download prepared data" -msgstr "" +msgstr "Tải dữ liệu đã được chuẩn bị" #: templates/user/prepare-data.html:132 msgid "Your data is ready!" @@ -4902,11 +4994,11 @@ msgstr "Dữ liệu của bạn đã sẵn sàng!" #: templates/user/prepare-data.html:136 msgid "Download data" -msgstr "" +msgstr "Tải dữ liệu" #: templates/user/user-about.html:14 msgid "From" -msgstr "" +msgstr "Từ" #: templates/user/user-about.html:25 msgid "Admin Notes" diff --git a/locale/vi/LC_MESSAGES/djangojs.po b/locale/vi/LC_MESSAGES/djangojs.po index 310234e06c..aff3087877 100644 --- a/locale/vi/LC_MESSAGES/djangojs.po +++ b/locale/vi/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:28\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 5db71cda7e..04f3fdab81 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-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\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:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "加泰隆语" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "德语" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "英语" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "西班牙语" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "法语" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "克罗地亚语" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "匈牙利语" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "日语" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "韩语" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "巴西葡萄牙语" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "罗马尼亚语" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "俄语" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "塞尔维亚文(拉丁字母)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "土耳其语" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "越南语" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "简体中文" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "繁体中文" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "首页" @@ -113,106 +113,106 @@ msgstr "取消隐藏选定评论" msgid "Associated page" msgstr "关联页" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "带标签的竞赛" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "题目" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "设置" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "时间计划" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "详细信息" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "格式" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "评分" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "访问权限" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "司法" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d个竞赛已成功公开。" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "标记竞赛为可见" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d个竞赛已成功隐藏。" -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "隐藏选定竞赛" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d个竞赛锁定成功" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "锁定竞赛提交" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d个竞赛解锁成功。" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "解锁竞赛提交" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "重新计算了 %d 个参与。" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "重新计算结果" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "用户名" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "模拟竞赛" @@ -228,9 +228,9 @@ msgstr "内容" msgid "Summary" msgstr "概要" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "用户" @@ -238,8 +238,8 @@ msgstr "用户" msgid "object" msgstr "对象" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "查看" @@ -247,66 +247,66 @@ msgstr "查看" msgid "Describe the changes you made (optional)" msgstr "描述所你所做的更改 (可选)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "社交媒体" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "分类" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "分数" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "限制" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "语言" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "编辑历史" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "作者" -#: judge/admin/problem.py:191 +#: 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 个问题的发表日期更新成功。" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "设发表日期为现在。" -#: judge/admin/problem.py:201 +#: 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 个题目已被成功地公开。" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "公开题目" -#: judge/admin/problem.py:211 +#: 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 个题目已被成功地隐藏。" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "隐藏题目" @@ -314,34 +314,34 @@ msgstr "隐藏题目" msgid "timezone" msgstr "时区" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "用户" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "电子邮箱" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "时区" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "加入日期" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d 个用户的总分已被重新计算。" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "重新计算总分" @@ -493,115 +493,116 @@ msgstr "国际信息学奥林匹克竞赛" msgid "IOI (pre-2016)" msgstr "IOI (2016年之前)" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." -msgstr "双重验证号码必须是 6 位数。" +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." +msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "无效的双重验证码。" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "一次性双重验证码必须是16个32十进制字符。" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "无效的一次性代码。" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "订阅有关于竞赛的资讯" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "允许使用实验性功能" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "您投票前必须解决至少一个问题。" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "你不能参与超过 {count} 个组织" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "下载评论?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "下载提交?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "按问题代码glob过滤:" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "留空以包含所有提交" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "以结果过滤" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "请选择下载至少一个东西。" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "任何裁判服务器" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "密码" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "无效的代码长度。" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "WebAuthn回复无效。" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "未发出WebAuthn质疑。" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "无效的WebAuthn凭据ID。" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "无效的双重验证码或者一次性代码。" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "必须指定 totp_token 或 webauthn_response。" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "题目代码必须匹配 ^[a-z0-9]+$" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "代码已经存在问题。" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "竞赛标识必须匹配 ^[a-z0-9]+$" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "有这个代码的竞赛已经存在" @@ -681,7 +682,7 @@ msgid "comments" msgstr "评论" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "%s 的题解" @@ -722,21 +723,21 @@ msgstr "标签说明" msgid "contest tag" msgstr "竞赛标签" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "竞赛标签" #: judge/models/contest.py:61 msgid "Visible" -msgstr "" +msgstr "可见" #: judge/models/contest.py:62 msgid "Hidden for duration of contest" -msgstr "" +msgstr "在竞赛持续时间内隐藏" #: judge/models/contest.py:63 msgid "Hidden for duration of participation" -msgstr "" +msgstr "在参与期间隐藏" #: judge/models/contest.py:65 msgid "contest id" @@ -747,410 +748,426 @@ msgid "contest name" msgstr "竞赛名称" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "这些人将可以编辑竞赛。" +msgid "These users will be able to edit the contest." +msgstr "" + +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +msgid "These users will be able to view the contest, but not edit it." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:76 judge/models/runtime.py:136 msgid "description" msgstr "描述" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "题目" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "开始时间" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "结束时间" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "时间限制" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "公开" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "竞赛参与评分" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "竞赛是否参与用户评分" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "查看竞赛记分板" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "这些用户将能够查看记分板。" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "没有评论" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "请使用澄清系统,而不是评论" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "竞赛最低评分" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "竞赛最高评分" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "为所有用户评分" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "所有参与竞赛的用户,包含没有提交任何程序的用户,都将被评分。" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "不会被评分" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "私密给特定用户" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "秘密参赛者" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "如果是私密的,只有这些用户可以看到比赛" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "隐藏题目标签" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "设置竞赛内题目标签是否默认被隐藏。" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "只运行预测试" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "只对组织可见" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "组织" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "隐藏时,只对选择的组织才可见" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "OpenGraph 图像" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "覆盖标志的图片" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "此图片将替换比赛中用户的默认网站标识。" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "实时参与者数" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "竞赛简介" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "在meta description标签内显示的纯文本介绍。" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "访问码" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "不受欢迎人物" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "禁止这些用户加入这个比赛。" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "竞赛格式" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "使用的竞赛格式模块。" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "竞赛格式配置" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "竞赛锁定" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." -msgstr "阻止重新评分该竞赛的提交。" +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." +msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "精度" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "将分数四舍五入到第几位。" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "查看私人竞赛" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "编辑我的竞赛" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "编辑全部竞赛" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "复制竞赛" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "MOSS竞赛" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "计算积分的比赛" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "比赛访问码" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "创建私人竞赛" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "更改竞赛可见性" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "编辑竞赛问题标签脚本" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "更改竞赛锁定状态" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "竞赛" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "竞赛" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "关联的竞赛" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "得分" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "累积时间" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "已被取消资格" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "此参与是否被取消资格。" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "以这个抢七" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "虚拟参与信息编号" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 表示正式参与,否则表示第n次虚拟参与。" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "竞赛格式特有的数据" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "%s旁观%s中" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "%s于%s的第%d次虚拟参与" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "%s参与%s中" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "竞赛参与信息" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "竞赛参与信息" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "题目" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "分" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "部分" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "仅通过预测试" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "顺序" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "输出前缀替换" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "此问题的最大提交数量,或留空白而表示无限制" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "为什么包括一个你不能提交的问题?" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "竞赛题目" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "竞赛题目" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "提交信息" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "参与" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "该程序是否只通过预测试。" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "竞赛提交信息" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "竞赛提交历史" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "排名" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "评分" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "波动性" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "上次评分" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "竞赛评分信息" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "竞赛评分历史" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "竞赛MOSS结果" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "竞赛MOSS结果" @@ -1190,7 +1207,7 @@ msgstr "父项" msgid "post title" msgstr "文章标题" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "作者" @@ -1198,7 +1215,7 @@ msgstr "作者" msgid "slug" msgstr "网址标志" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "公共可见性" @@ -1234,34 +1251,6 @@ msgstr "博客文章" msgid "blog posts" msgstr "博客文章" -#: judge/models/message.py:11 -msgid "message title" -msgstr "消息标题" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "消息正文" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "发件人" - -#: judge/models/message.py:14 -msgid "target" -msgstr "目标" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "消息时间戳" - -#: judge/models/message.py:16 -msgid "read" -msgstr "查看" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "话题中的消息" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1279,7 +1268,7 @@ msgstr "题目类型名称" msgid "problem type" msgstr "题目类型" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "题目类型" @@ -1291,7 +1280,7 @@ msgstr "题目组标识符" msgid "problem group name" msgstr "题目组名称" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "题目组" @@ -1311,7 +1300,7 @@ msgstr "链接" msgid "full name" msgstr "全名字" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "简称" @@ -1340,232 +1329,252 @@ msgstr "许可证" msgid "licenses" msgstr "许可证" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "题目代码" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "一个简短,独特的问题代码,将在URL里/problem/之后显示" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "题目名称" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "问题列表中显示的问题全名。" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "题目正文" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "作者" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "这些用户将能够编辑问题并被列为提问者。" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "管理员" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "这些用户将可以编辑这个问题,但不会公开显示为提问者。" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "测试人员" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "这些用户将能查看这个隐藏的问题,但无法编辑。" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "在问题页面显示的问题类型。" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "在问题列表显示的问题组" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "这个问题的时间限制(以秒为单位。支持小数秒计时方式(例如1.5)。" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "内存限制" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "此问题的存储限制,以kb为单位(例如 64mb = 65536 kb)" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "完成问题得分的分数,如果有部分分数而显示'p'结尾。" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "允许部分分数" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "允许的语言" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "允许提交语言。" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "手动管理" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "是否允许裁判管理数据" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "公开日期" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "无法自动在时间后公开题目" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "禁止这些用户对该题目提交答案。" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "此问题的許可證。" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "问题摘要" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "用户数" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "解决这个问题的用户数量。" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "通过率" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "允许使用所有markup" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "隐藏时,只对选择的组织才可见" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "查看隐藏问题" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "编辑自己的问题" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "编辑所有问题" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "编辑所有公共问题" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "使用所有markup来编辑问题" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "复制题目" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "改变is_public领域" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "改变is_manually_managed领域" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "查看对组织私有的问题" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "语言" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "翻译题目名" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "翻译题目正文" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "题目翻译" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "题目翻译" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "已澄清的问题" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "澄清的身体" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "澄清时间戳" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "语言特定资源限制" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "语言特定资源限制" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "关联的题目" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "发布日期" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "可编辑的内容" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "查看隐藏的解答" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "题目讲解" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "题目讲解" @@ -1677,112 +1686,112 @@ msgstr "分数" msgid "case is pretest?" msgstr "是否为预测试?" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "组织名称" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "组织代码" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "组织名称在 URL 中显示" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "竞赛时显示在用户名旁边" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "组织描述" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "管理员" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "这些用户可以编辑此组织" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "创建日期" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "是开放的组织吗?" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "允许加入组织" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "最大大小" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "这个组织用户最大数量,只适用于私人组织" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "学生访问码" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "此图片将替换访问该组织的用户的默认网站标识。" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "管理组织" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "编辑所有组织" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "组织" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "关联的用户" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "自我描述" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "位置" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "首选语言" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "上次访问时间" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "上次访问 IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "显示排名" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "普通用户" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "问题作家" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1791,155 +1800,167 @@ msgstr "问题作家" msgid "Admin" msgstr "管理" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "禁止评论" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "某些用户在沉默时表现最佳。" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "未列出用户" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "用户将不被排名。" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "用户脚本" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "用户自定义 JavaScript。" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "当前竞赛" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "数学引擎" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "数学渲染使用的引擎" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "TOTP 2FA 已启用" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "打钩以启用TOTP双重验证" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn 2FA 已启用" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "打钩以启用WebAuthn双重验证" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "TOTP 密钥" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "TOTP的32字符,32进制密钥" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "TOTP 密钥必须为空或三十二进制" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "一次性代码:" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "含有16字符的32进制代码的JSON数组" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "一次性代码必须是空的或者是一个含有32进制代码的JSON数组" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "API令牌" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "64 个字符hex编码的API访问令牌" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "API 令牌必须是莫或十六进制的" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "内部备注" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "此用户的管理员备注。" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "上次数据下载时间" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "显示正在开发的内容" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "编辑 TOTP 设置" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "用户信息" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "用户信息" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "设备名称" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "凭据ID" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "公钥" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "签名数量" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "请求时间" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "状态" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "原因" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "组织加入请求" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "组织加入请求" @@ -2095,210 +2116,210 @@ msgstr "裁判服务器" msgid "judge" msgstr "裁判服务器" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "接受" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "答案错误" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "超出时间限制" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "超出内存限制" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "超出输出限制" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "错误退出代码" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "运行错误" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "编译错误" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "内部错误" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "跳过" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "中止" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "等待中" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "处理中" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "评分中" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "完成" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "内部错误 (裁判服务器错误)" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "提交时间" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "执行时间" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "内存使用" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "获得分数" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "提交语言" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "状态" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "结果" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "编译错误" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "测试组" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "测试点分值" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "测试用例总分" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "裁判服务器" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "提交评论时间" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" -msgstr "被管理员重新评分" - #: judge/models/submission.py:83 +msgid "last rejudge date by admin" +msgstr "" + +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "只进行过预测试" -#: judge/models/submission.py:86 -msgid "lock submission" -msgstr "锁定提交" +#: judge/models/submission.py:87 +msgid "submission lock" +msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "中止任何提交" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "重新评分提交" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "重新评分很多提交" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "不受限制提交" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "查看所有提交" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "重新提交他人的提交" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "更改提交锁定状态" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "提交历史" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "相关提交" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "源码" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "测试编号" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "状态标志" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "满分" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "批号" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "评测反馈" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "延长的裁判反馈" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "程序输出" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "程序测试" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "程序测试" @@ -2346,6 +2367,10 @@ msgstr "票" msgid "poster" msgstr "海报" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "消息正文" + #: judge/models/ticket.py:31 msgid "message time" msgstr "消息时间" @@ -2368,19 +2393,23 @@ msgstr "正在重新计算比赛分数" msgid "Running MOSS" msgstr "正在运行 MOSS。" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "正在改变提交" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "正在重新计算用户分数" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "正在准备您的提交资料" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "正在准备您的评论资料" @@ -2490,7 +2519,7 @@ msgstr "您投票前必须解决至少一个问题。" msgid "You already voted." msgstr "你已经投了票。" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "从网站中上编辑" @@ -2498,125 +2527,130 @@ msgstr "从网站中上编辑" msgid "Editing comment" msgstr "编辑评论" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "该竞赛不存在" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "找不到标识符为“%s“的竞赛。" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "竞赛" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "找不到该竞赛。" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "对竞赛”%s“的访问被拒绝" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "复制竞赛" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "竞赛不在进行" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "“%s“不在进行。" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "已经参与了竞赛" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "您已经参与了竞赛:”%s“。" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "禁止加入" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "您在该竞赛不受欢迎。您被永久禁止参加该竞赛。" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "输入”%s“的访问码" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "你不是在竞赛\"%s\"中。" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "ContestCalender 需要整数年份和月份" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "%(month)s的竞赛" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "Y年n月" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "%s 数据" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "%s 排行榜" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "你在%s中的参与历史" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "%s在%s中的参与历史" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "实时" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "参与历史" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "%s MOSS 结果" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "正在为 %s 运行 MOSS..." -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "竞赛标签:%s" @@ -2645,161 +2679,175 @@ msgstr "页面错误 %s" msgid "Runtimes" msgstr "语言" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "无该组织" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "找不到标识符为”%s“的组织。" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "找不到该组织。" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "组织" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "%s 成员列表" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "加入组织" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "你已经是该组织的成员。" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "该组织不开放。" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "离开组织" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "你不是是“%s”的成员。" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "请求加入 %s" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "组织加入请求详细信息" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "管理 %s 的加入请求" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "你的组织只能再接受%d个用户,无法接受%d个。" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "批准了%d个用户。" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "拒绝了%d个用户。" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "编辑 %s" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "无法编辑组织" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "您没有编辑该组织的权利。" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "你没有踢组织成员的权利。" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "无法踢用户" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "你想踢的用户不存在!" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "你想踢的用户不是组织成员:%s" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "无该题目" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "找不到代码为“%s”的题目。" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} 的题解" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "{0}的题解" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "题目" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "提交给 %s" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "禁止提交" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "您在该题目不受欢迎。您被永久禁止为该题目提交解决程序。" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "提交太多了" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "您已超出此问题的提交限制。" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "复制问题" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "检查器参数必须是一个 JSON 对象" @@ -2868,52 +2916,52 @@ msgstr "%s 排行榜" msgid "Best solutions for {0}" msgstr "{0} 排行榜" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "竞赛 %(contest)s 中 %(problem)s 排行榜" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "%(contest)s 第 %(number)s 题的最佳解决方案" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "竞赛 {2}{0} 排行榜" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "{1} 第 {0} 题的最佳解决方案" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "用户名只能包含字母、 数字或下划线。" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "首选语言" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "订阅简讯" -#: judge/views/register.py:45 +#: 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:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "由于滥用历史,我们不允许您的电子邮件提供商。请使用有信誉的电子邮件提供商。" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "注册" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "身份验证失败" @@ -2921,7 +2969,7 @@ msgstr "身份验证失败" msgid "Language statistics" msgstr "语言统计信息" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "状态" @@ -2929,74 +2977,74 @@ msgstr "状态" msgid "Version matrix" msgstr "版本矩阵" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "%(user)s 在 %(problem)s 的提交结果" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "所有提交历史" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "我提交的程序" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "%s 的提交历史" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "%s 的提交历史" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "必须给予题目" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "我对 %(problem)s 提交的程序" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(user)s 在 %(problem)s 的提交历史" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "必须给予竞赛" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "我在 %(contest)s 的提交" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "%(user)s 在 %(contest)s 的提交历史" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "我在 {0}的提交" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "{0}{2}的提交" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "{4}{0}{2} 的提交历史" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "{0}{3} 第 {2} 题提交的程序" @@ -3013,40 +3061,40 @@ msgstr "问题说明" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "新工单:%s" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "%(title)s -工单 %(id)d" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "工单 - 第 %(number)d 页,共 %(total)d 页" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "新工单:%s" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "#%(id)d, 分配给: %(users)s" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr ", " -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "没人" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "%s的新工单消息" @@ -3055,87 +3103,91 @@ msgstr "%s的新工单消息" msgid "Enable Two-factor Authentication" msgstr "启用双因素身份认证" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "禁用双因素身份认证" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "WebAuthn回复无效" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "名称无效" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "员工不能禁用 2FA" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "执行双因素身份认证" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "无该用户" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "无名为“%s“的用户" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "我的帐户" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "用户 %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "登录" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "Y年n月j日 G:i" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "正在准备您的数据..." -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "下载您的数据" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "在网站上更新" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "编辑个人资料" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "为用户生成 API 令牌" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "为用户清除API令牌" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "为用户生成一次性代码" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "排行榜" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3264,11 +3316,11 @@ msgstr "新闻" msgid "posted on {time}" msgstr "贴在 {time}" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "澄清" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "目前还没有作出任何澄清。" @@ -3464,7 +3516,7 @@ msgid "Info" msgstr "资料和信息" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "统计数据" @@ -3667,19 +3719,19 @@ msgstr "取消取消资格" msgid "Disqualify" msgstr "取消资格" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "您确定要取消此参与资格吗?" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "您确定要取消取消此参与资格吗?" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "查看用户参与历史" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "显示机构" @@ -3955,7 +4007,7 @@ msgstr "保存" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "作者:" @@ -4120,34 +4172,34 @@ msgstr "时间限制:" msgid "Memory limit:" msgstr "内存限制:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "题目类型" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "允许的语言" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "没有支持 %(lang)s 的裁判服务器。" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "裁判服务器" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "无可用项" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "提出问题" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "反馈问题" @@ -4192,7 +4244,7 @@ msgstr "题目类型" msgid "Point range" msgstr "分数范围" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "搜索" @@ -4238,7 +4290,7 @@ msgid "Invalid username or password." msgstr "无效的用户名或密码!" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "登录!" @@ -4360,12 +4412,12 @@ msgid "Default language" msgstr "默认语言" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "关联的组织" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "通过Email发送未来竞赛的通知" @@ -4381,57 +4433,93 @@ msgstr "使用条款" msgid "Register!" msgstr "注册!" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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位一次性代码:" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "禁用两因素认证。" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "使用身份验证应用扫描这个二维码" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "二维码" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "或者手动输入此代码:" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "输入您应用生成的6位数代码:" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: 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:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "联系服务器失败。" -#: templates/registration/two_factor_auth.html:77 +#: 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位数代码或者一个16位一次性代码:" -#: templates/registration/two_factor_auth.html:83 +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" +msgstr "" + +#: templates/registration/two_factor_auth.html:89 msgid "Use security key" msgstr "使用安全密钥" -#: templates/registration/two_factor_auth.html:89 +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, 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。" @@ -4512,15 +4600,15 @@ msgstr "按状态过滤" msgid "Filter by language..." msgstr "按语言筛选......" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "提交筛选" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "总计:" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "您处于离线状态。刷新以显示最近的更新。" @@ -4735,121 +4823,125 @@ msgstr "排名" msgid "Search by handle..." msgstr "用户名搜索…" -#: templates/user/edit-profile.html:109 +#: 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:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "这将使任何之前的 API 令牌无效。" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "它还允许不需要双重身份验证而访问您的帐户。" -#: templates/user/edit-profile.html:112 +#: 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:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "正在生成…" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "删除" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "您确定要删除您的API令牌吗?" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "您确定要删除此安全密钥吗?" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "自我描述" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "选择离您最近的主要城市" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "编辑主题" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "数学引擎" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "修改头像" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "更改密码" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "已激活双元素认证" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" -msgstr "已禁用双元素认证" - -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 msgid "Disable" msgstr "禁用" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:367 +msgid "Refresh" +msgstr "刷新" + +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "一次性代码:" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "隐藏" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "API令牌" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "安全密钥" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "删除" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "输入此密钥的名称" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "添加" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "用户脚本" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "更新资料" diff --git a/locale/zh_Hans/LC_MESSAGES/djangojs.po b/locale/zh_Hans/LC_MESSAGES/djangojs.po index 963fb77b5b..1991925989 100644 --- a/locale/zh_Hans/LC_MESSAGES/djangojs.po +++ b/locale/zh_Hans/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 90cc35b790..8970ece69e 100644 --- a/locale/zh_Hant/LC_MESSAGES/django.po +++ b/locale/zh_Hant/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2021-04-24 19:15+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"POT-Creation-Date: 2021-06-17 01:38+0000\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -17,75 +17,75 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:364 +#: dmoj/settings.py:365 msgid "Catalan" msgstr "加泰隆語" -#: dmoj/settings.py:365 +#: dmoj/settings.py:366 msgid "German" msgstr "德文" -#: dmoj/settings.py:366 +#: dmoj/settings.py:367 msgid "English" msgstr "英文" -#: dmoj/settings.py:367 +#: dmoj/settings.py:368 msgid "Spanish" msgstr "西班牙文" -#: dmoj/settings.py:368 +#: dmoj/settings.py:369 msgid "French" msgstr "法文" -#: dmoj/settings.py:369 +#: dmoj/settings.py:370 msgid "Croatian" msgstr "克羅地亞文" -#: dmoj/settings.py:370 +#: dmoj/settings.py:371 msgid "Hungarian" msgstr "匈牙利文" -#: dmoj/settings.py:371 +#: dmoj/settings.py:372 msgid "Japanese" msgstr "日語" -#: dmoj/settings.py:372 +#: dmoj/settings.py:373 msgid "Korean" msgstr "韓文" -#: dmoj/settings.py:373 +#: dmoj/settings.py:374 msgid "Brazilian Portuguese" msgstr "巴西葡萄牙語" -#: dmoj/settings.py:374 +#: dmoj/settings.py:375 msgid "Romanian" msgstr "羅馬尼亞文" -#: dmoj/settings.py:375 +#: dmoj/settings.py:376 msgid "Russian" msgstr "俄文" -#: dmoj/settings.py:376 +#: dmoj/settings.py:377 msgid "Serbian (Latin)" msgstr "塞爾維亞文 (拉丁語系)" -#: dmoj/settings.py:377 +#: dmoj/settings.py:378 msgid "Turkish" msgstr "土耳其文" -#: dmoj/settings.py:378 +#: dmoj/settings.py:379 msgid "Vietnamese" msgstr "越南文" -#: dmoj/settings.py:379 +#: dmoj/settings.py:380 msgid "Simplified Chinese" msgstr "簡體中文" -#: dmoj/settings.py:380 +#: dmoj/settings.py:381 msgid "Traditional Chinese" msgstr "繁体中文" -#: dmoj/urls.py:103 templates/base.html:190 +#: dmoj/urls.py:104 templates/base.html:190 msgid "Home" msgstr "首頁" @@ -113,106 +113,106 @@ msgstr "取消隱藏回應" msgid "Associated page" msgstr "關聯頁" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:32 msgid "Included contests" msgstr "帶標籤的競賽" -#: judge/admin/contest.py:65 templates/contest/contest.html:83 +#: judge/admin/contest.py:66 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/problem/list.html:204 #: templates/problem/list.html:219 templates/user/user-problems.html:58 #: templates/user/user-problems.html:100 msgid "Problem" msgstr "題目" -#: judge/admin/contest.py:114 +#: judge/admin/contest.py:117 msgid "Settings" msgstr "设置" -#: judge/admin/contest.py:116 +#: judge/admin/contest.py:120 msgid "Scheduling" msgstr "排程" -#: judge/admin/contest.py:117 +#: judge/admin/contest.py:121 msgid "Details" msgstr "詳細資訊" -#: judge/admin/contest.py:118 +#: judge/admin/contest.py:122 msgid "Format" msgstr "格式" -#: judge/admin/contest.py:119 templates/contest/ranking-table.html:5 +#: judge/admin/contest.py:123 templates/contest/ranking-table.html:5 msgid "Rating" msgstr "評分" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:124 msgid "Access" msgstr "权限" -#: judge/admin/contest.py:122 judge/admin/problem.py:134 +#: judge/admin/contest.py:126 judge/admin/problem.py:135 msgid "Justice" msgstr "司法" -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:215 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d個競賽已成功公開。" -#: judge/admin/contest.py:214 +#: judge/admin/contest.py:218 msgid "Mark contests as visible" msgstr "標記競賽為可見" -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:224 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d個競賽已成功隱藏。" -#: judge/admin/contest.py:223 +#: judge/admin/contest.py:227 msgid "Mark contests as hidden" msgstr "標記競賽為隐藏" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:233 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d個競賽鎖定成功" -#: judge/admin/contest.py:232 +#: judge/admin/contest.py:236 msgid "Lock contest submissions" msgstr "鎖定競賽提交" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:242 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" -#: judge/admin/contest.py:241 +#: judge/admin/contest.py:245 msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:262 judge/admin/submission.py:170 +#: judge/admin/contest.py:266 judge/admin/submission.py:170 #, 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:337 +#: judge/admin/contest.py:341 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d位選手的分數被重判了" -#: judge/admin/contest.py:340 +#: judge/admin/contest.py:344 msgid "Recalculate results" msgstr "" -#: judge/admin/contest.py:344 judge/admin/organization.py:63 +#: judge/admin/contest.py:348 judge/admin/organization.py:63 msgid "username" msgstr "使用者名稱" -#: judge/admin/contest.py:349 templates/base.html:258 +#: judge/admin/contest.py:353 templates/base.html:258 msgid "virtual" msgstr "模擬競賽" @@ -228,9 +228,9 @@ msgstr "内容" msgid "Summary" msgstr "概要" -#: judge/admin/interface.py:113 judge/models/contest.py:383 -#: judge/models/contest.py:509 judge/models/profile.py:244 -#: judge/models/profile.py:268 +#: judge/admin/interface.py:113 judge/models/contest.py:419 +#: judge/models/contest.py:546 judge/models/profile.py:261 +#: judge/models/profile.py:292 msgid "user" msgstr "使用者" @@ -238,8 +238,8 @@ msgstr "使用者" msgid "object" msgstr "对象" -#: judge/admin/organization.py:32 judge/admin/problem.py:181 -#: judge/admin/profile.py:82 +#: judge/admin/organization.py:32 judge/admin/problem.py:182 +#: judge/admin/profile.py:92 msgid "View on site" msgstr "" @@ -247,66 +247,66 @@ msgstr "" msgid "Describe the changes you made (optional)" msgstr "解釋你所做的改變(可選)" -#: judge/admin/problem.py:129 +#: judge/admin/problem.py:130 msgid "Social Media" msgstr "社交媒體" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:131 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:131 templates/contest/contest.html:84 +#: judge/admin/problem.py:132 templates/contest/contest.html:84 #: templates/problem/data.html:385 templates/problem/list.html:209 #: templates/problem/list.html:230 templates/user/base-users-table.html:10 #: templates/user/user-problems.html:60 msgid "Points" msgstr "分數" -#: judge/admin/problem.py:132 +#: judge/admin/problem.py:133 msgid "Limits" msgstr "限制" -#: judge/admin/problem.py:133 judge/admin/submission.py:238 -#: templates/stats/base.html:14 templates/submission/list.html:320 -#: templates/user/edit-profile.html:292 +#: judge/admin/problem.py:134 judge/admin/submission.py:238 +#: templates/stats/base.html:14 templates/submission/list.html:319 +#: templates/user/edit-profile.html:296 msgid "Language" msgstr "語言" -#: judge/admin/problem.py:135 +#: judge/admin/problem.py:136 msgid "History" msgstr "歷史記錄" -#: judge/admin/problem.py:178 +#: judge/admin/problem.py:179 msgid "Authors" msgstr "作者" -#: judge/admin/problem.py:191 +#: 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個問題的發布日期被成功更新" -#: judge/admin/problem.py:195 +#: judge/admin/problem.py:196 msgid "Set publish date to now" msgstr "把上傳日期變成今天" -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:202 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "" -#: judge/admin/problem.py:205 +#: judge/admin/problem.py:206 msgid "Mark problems as public" msgstr "把問題設置成公開的" -#: judge/admin/problem.py:211 +#: judge/admin/problem.py:212 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "" -#: judge/admin/problem.py:215 +#: judge/admin/problem.py:216 msgid "Mark problems as private" msgstr "把問題應藏" @@ -314,34 +314,34 @@ msgstr "把問題應藏" msgid "timezone" msgstr "時區" -#: judge/admin/profile.py:88 judge/admin/submission.py:217 +#: judge/admin/profile.py:98 judge/admin/submission.py:217 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 #: templates/ticket/list.html:261 msgid "User" msgstr "使用者" -#: judge/admin/profile.py:93 templates/registration/registration_form.html:143 +#: judge/admin/profile.py:103 templates/registration/registration_form.html:143 msgid "Email" msgstr "電子郵件" -#: judge/admin/profile.py:98 judge/views/register.py:29 +#: judge/admin/profile.py:108 judge/views/register.py:28 #: templates/registration/registration_form.html:171 -#: templates/user/edit-profile.html:288 +#: templates/user/edit-profile.html:292 msgid "Timezone" msgstr "時區" -#: judge/admin/profile.py:103 +#: judge/admin/profile.py:113 msgid "date joined" msgstr "" -#: judge/admin/profile.py:110 +#: judge/admin/profile.py:120 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d個用戶的分數被重判了" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:123 msgid "Recalculate scores" msgstr "" @@ -493,115 +493,116 @@ msgstr "國際信息學奧林匹克競賽" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:26 -msgid "Two-factor authentication tokens must be 6 decimal digits." +#: judge/forms.py:27 +#, python-brace-format +msgid "Two-factor authentication tokens must be {TOTP_CODE_LENGTH} decimal digits." msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:30 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:32 +#: judge/forms.py:33 msgid "Scratch codes must be 16 base32 characters." msgstr "" -#: judge/forms.py:34 +#: judge/forms.py:35 judge/forms.py:264 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:45 +#: judge/forms.py:46 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:71 +#: judge/forms.py:72 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:127 +#: judge/forms.py:81 judge/views/organization.py:126 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "您不可以同時在多餘{count}的公共組織" -#: judge/forms.py:96 +#: judge/forms.py:97 msgid "Download comments?" msgstr "下載評論?" -#: judge/forms.py:97 +#: judge/forms.py:98 msgid "Download submissions?" msgstr "下載提交紀錄?" -#: judge/forms.py:98 +#: judge/forms.py:99 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:102 +#: judge/forms.py:103 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:105 templates/problem/manage_submission.html:142 +#: judge/forms.py:106 templates/problem/manage_submission.html:142 msgid "Filter by result:" msgstr "" -#: judge/forms.py:111 +#: judge/forms.py:112 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:137 +#: judge/forms.py:138 msgid "Any judge" msgstr "" -#: judge/forms.py:167 judge/views/register.py:26 +#: 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:168 templates/registration/registration_form.html:149 +#: judge/forms.py:160 templates/registration/registration_form.html:149 #: templates/registration/registration_form.html:163 msgid "Password" msgstr "密碼" -#: judge/forms.py:201 +#: judge/forms.py:192 msgid "Invalid code length." msgstr "" -#: judge/forms.py:219 +#: judge/forms.py:223 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:222 +#: judge/forms.py:226 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:228 +#: judge/forms.py:232 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:257 +#: judge/forms.py:262 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:259 +#: judge/forms.py:266 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:263 judge/models/problem.py:105 +#: judge/forms.py:270 judge/models/problem.py:119 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:268 +#: judge/forms.py:275 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:273 judge/models/contest.py:66 +#: judge/forms.py:280 judge/models/contest.py:66 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:278 +#: judge/forms.py:285 msgid "Contest with key already exists." msgstr "" @@ -681,7 +682,7 @@ msgid "comments" msgstr "評論" #: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:484 +#: judge/models/problem.py:511 #, python-format msgid "Editorial for %s" msgstr "" @@ -722,7 +723,7 @@ msgstr "" msgid "contest tag" msgstr "禁賽標籤" -#: judge/models/contest.py:53 judge/models/contest.py:117 +#: judge/models/contest.py:53 judge/models/contest.py:126 msgid "contest tags" msgstr "" @@ -747,410 +748,426 @@ msgid "contest name" msgstr "" #: judge/models/contest.py:68 -msgid "These people will be able to edit the contest." -msgstr "這些人將有權更改競賽" +msgid "These users will be able to edit the contest." +msgstr "" -#: judge/models/contest.py:70 judge/models/runtime.py:136 +#: judge/models/contest.py:70 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "" + +#: judge/models/contest.py:73 +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 msgid "description" msgstr "" -#: judge/models/contest.py:71 judge/models/problem.py:431 +#: judge/models/contest.py:77 judge/models/problem.py:458 #: judge/models/runtime.py:138 msgid "problems" msgstr "題目" -#: judge/models/contest.py:72 judge/models/contest.py:384 +#: judge/models/contest.py:78 judge/models/contest.py:420 msgid "start time" msgstr "開始時間" -#: judge/models/contest.py:73 +#: judge/models/contest.py:79 msgid "end time" msgstr "結束時間" -#: judge/models/contest.py:74 judge/models/problem.py:126 -#: judge/models/problem.py:455 +#: judge/models/contest.py:80 judge/models/problem.py:140 +#: judge/models/problem.py:482 msgid "time limit" msgstr "時間限制" -#: judge/models/contest.py:75 judge/models/problem.py:144 +#: judge/models/contest.py:81 judge/models/problem.py:158 msgid "publicly visible" msgstr "" -#: judge/models/contest.py:76 +#: judge/models/contest.py:82 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:79 +#: judge/models/contest.py:85 msgid "contest rated" msgstr "次競賽會被評判" -#: judge/models/contest.py:79 +#: judge/models/contest.py:85 msgid "Whether this contest can be rated." msgstr "" -#: judge/models/contest.py:81 +#: judge/models/contest.py:87 msgid "view contest scoreboard" msgstr "查看競賽排行榜" -#: judge/models/contest.py:83 +#: judge/models/contest.py:89 msgid "These users will be able to view the scoreboard." msgstr "這些用戶可以看排行榜" -#: judge/models/contest.py:84 +#: judge/models/contest.py:90 msgid "scoreboard visibility" msgstr "" -#: judge/models/contest.py:85 +#: judge/models/contest.py:91 msgid "Scoreboard visibility through the duration of the contest" msgstr "" -#: judge/models/contest.py:87 +#: judge/models/contest.py:93 msgid "no comments" msgstr "" -#: judge/models/contest.py:88 +#: judge/models/contest.py:94 msgid "Use clarification system instead of comments." msgstr "" -#: judge/models/contest.py:90 +#: judge/models/contest.py:96 msgid "Rating floor for contest" msgstr "" -#: judge/models/contest.py:92 +#: judge/models/contest.py:98 msgid "Rating ceiling for contest" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "rate all" msgstr "" -#: judge/models/contest.py:94 +#: judge/models/contest.py:100 msgid "Rate all users who joined." msgstr "" -#: judge/models/contest.py:95 +#: judge/models/contest.py:101 msgid "exclude from ratings" msgstr "" -#: judge/models/contest.py:97 +#: judge/models/contest.py:103 msgid "private to specific users" msgstr "" -#: judge/models/contest.py:98 +#: judge/models/contest.py:104 msgid "private contestants" msgstr "" -#: judge/models/contest.py:99 +#: judge/models/contest.py:105 msgid "If private, only these users may see the contest" msgstr "" -#: judge/models/contest.py:101 +#: judge/models/contest.py:107 msgid "hide problem tags" msgstr "" -#: judge/models/contest.py:102 +#: judge/models/contest.py:108 msgid "Whether problem tags should be hidden by default." msgstr "" -#: judge/models/contest.py:104 +#: judge/models/contest.py:110 +msgid "hide problem authors" +msgstr "" + +#: judge/models/contest.py:111 +msgid "Whether problem authors should be hidden by default." +msgstr "" + +#: judge/models/contest.py:113 msgid "run pretests only" msgstr "" -#: judge/models/contest.py:105 +#: judge/models/contest.py:114 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:109 judge/models/problem.py:166 +#: judge/models/contest.py:118 judge/models/problem.py:183 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:110 judge/models/problem.py:164 -#: judge/models/profile.py:83 +#: judge/models/contest.py:119 judge/models/problem.py:181 +#: judge/models/profile.py:86 msgid "organizations" msgstr "" -#: judge/models/contest.py:111 +#: judge/models/contest.py:120 msgid "If private, only these organizations may see the contest" msgstr "" -#: judge/models/contest.py:112 judge/models/problem.py:153 +#: judge/models/contest.py:121 judge/models/problem.py:167 msgid "OpenGraph image" msgstr "" -#: judge/models/contest.py:113 judge/models/profile.py:54 +#: judge/models/contest.py:122 judge/models/profile.py:57 msgid "Logo override image" msgstr "" -#: judge/models/contest.py:115 +#: judge/models/contest.py:124 msgid "This image will replace the default site logo for users inside the contest." msgstr "" -#: judge/models/contest.py:118 +#: judge/models/contest.py:127 msgid "the amount of live participants" msgstr "" -#: judge/models/contest.py:119 +#: judge/models/contest.py:128 msgid "contest summary" msgstr "" -#: judge/models/contest.py:120 judge/models/problem.py:155 +#: judge/models/contest.py:129 judge/models/problem.py:169 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:121 judge/models/profile.py:53 +#: judge/models/contest.py:130 judge/models/profile.py:56 msgid "access code" msgstr "" -#: judge/models/contest.py:122 +#: judge/models/contest.py:131 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:124 judge/models/problem.py:149 +#: judge/models/contest.py:133 judge/models/problem.py:163 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:125 +#: judge/models/contest.py:134 msgid "Bans the selected users from joining this contest." msgstr "" -#: judge/models/contest.py:126 +#: judge/models/contest.py:135 msgid "contest format" msgstr "競賽格式" -#: judge/models/contest.py:127 +#: judge/models/contest.py:136 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:128 +#: judge/models/contest.py:137 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:129 +#: judge/models/contest.py:138 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:136 +#: judge/models/contest.py:145 msgid "contest lock" msgstr "" -#: judge/models/contest.py:137 -msgid "Prevent submissions from this contest from being rejudged." +#: judge/models/contest.py:146 +msgid "Prevent submissions from this contest from being rejudged after this date." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:148 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:150 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:362 +#: judge/models/contest.py:398 msgid "See private contests" msgstr "" -#: judge/models/contest.py:363 +#: judge/models/contest.py:399 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:364 +#: judge/models/contest.py:400 msgid "Edit all contests" msgstr "編輯所有競賽" -#: judge/models/contest.py:365 +#: judge/models/contest.py:401 msgid "Clone contest" msgstr "複製競賽" -#: judge/models/contest.py:366 templates/contest/moss.html:74 +#: judge/models/contest.py:402 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:367 +#: judge/models/contest.py:403 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:368 +#: judge/models/contest.py:404 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:369 +#: judge/models/contest.py:405 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:370 +#: judge/models/contest.py:406 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:371 +#: judge/models/contest.py:407 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:372 +#: judge/models/contest.py:408 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:374 judge/models/contest.py:472 -#: judge/models/contest.py:510 judge/models/contest.py:532 -#: judge/models/submission.py:84 +#: judge/models/contest.py:410 judge/models/contest.py:508 +#: judge/models/contest.py:547 judge/models/contest.py:569 +#: judge/models/submission.py:85 msgid "contest" msgstr "競賽" -#: judge/models/contest.py:375 +#: judge/models/contest.py:411 msgid "contests" msgstr "競賽" -#: judge/models/contest.py:382 +#: judge/models/contest.py:418 msgid "associated contest" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:421 msgid "score" msgstr "得分" -#: judge/models/contest.py:386 +#: judge/models/contest.py:422 msgid "cumulative time" msgstr "累計時間" -#: judge/models/contest.py:387 +#: judge/models/contest.py:423 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:388 +#: judge/models/contest.py:424 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:425 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:426 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:427 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:428 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:458 +#: judge/models/contest.py:494 #, python-format msgid "%s spectating in %s" msgstr "" -#: judge/models/contest.py:460 +#: judge/models/contest.py:496 #, python-format msgid "%s in %s, v%d" msgstr "" -#: judge/models/contest.py:461 +#: judge/models/contest.py:497 #, python-format msgid "%s in %s" msgstr "" -#: judge/models/contest.py:464 +#: judge/models/contest.py:500 msgid "contest participation" msgstr "" -#: judge/models/contest.py:465 +#: judge/models/contest.py:501 msgid "contest participations" msgstr "" -#: judge/models/contest.py:471 judge/models/contest.py:494 -#: judge/models/contest.py:533 judge/models/problem.py:430 -#: judge/models/problem.py:435 judge/models/problem.py:453 +#: judge/models/contest.py:507 judge/models/contest.py:531 +#: judge/models/contest.py:570 judge/models/problem.py:457 +#: judge/models/problem.py:462 judge/models/problem.py:480 #: judge/models/problem_data.py:35 msgid "problem" msgstr "題目" -#: judge/models/contest.py:473 judge/models/contest.py:498 -#: judge/models/problem.py:137 +#: judge/models/contest.py:509 judge/models/contest.py:535 +#: judge/models/problem.py:151 msgid "points" msgstr "分" -#: judge/models/contest.py:474 +#: judge/models/contest.py:510 msgid "partial" msgstr "部分" -#: judge/models/contest.py:475 judge/models/contest.py:499 +#: judge/models/contest.py:511 judge/models/contest.py:536 msgid "is pretested" msgstr "" -#: judge/models/contest.py:476 judge/models/interface.py:43 +#: judge/models/contest.py:512 judge/models/interface.py:43 msgid "order" msgstr "順序" -#: judge/models/contest.py:477 +#: judge/models/contest.py:513 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:515 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "此問題的最大提交數量,或留空白而表示無限制。" -#: judge/models/contest.py:482 +#: judge/models/contest.py:518 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:487 +#: judge/models/contest.py:523 msgid "contest problem" msgstr "" -#: judge/models/contest.py:488 +#: judge/models/contest.py:524 msgid "contest problems" msgstr "" -#: judge/models/contest.py:492 judge/models/submission.py:207 +#: judge/models/contest.py:529 judge/models/submission.py:218 msgid "submission" msgstr "提交訊息" -#: judge/models/contest.py:496 judge/models/contest.py:511 +#: judge/models/contest.py:533 judge/models/contest.py:548 msgid "participation" msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:537 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:504 +#: judge/models/contest.py:541 msgid "contest submission" msgstr "" -#: judge/models/contest.py:505 +#: judge/models/contest.py:542 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:513 +#: judge/models/contest.py:550 msgid "rank" msgstr "排名" -#: judge/models/contest.py:514 +#: judge/models/contest.py:551 msgid "rating" msgstr "評分" -#: judge/models/contest.py:515 +#: judge/models/contest.py:552 msgid "volatility" msgstr "" -#: judge/models/contest.py:516 +#: judge/models/contest.py:553 msgid "last rated" msgstr "" -#: judge/models/contest.py:520 +#: judge/models/contest.py:557 msgid "contest rating" msgstr "" -#: judge/models/contest.py:521 +#: judge/models/contest.py:558 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:540 +#: judge/models/contest.py:577 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:541 +#: judge/models/contest.py:578 msgid "contest moss results" msgstr "" @@ -1190,7 +1207,7 @@ msgstr "" msgid "post title" msgstr "" -#: judge/models/interface.py:67 judge/models/problem.py:473 +#: judge/models/interface.py:67 judge/models/problem.py:500 msgid "authors" msgstr "作者" @@ -1198,7 +1215,7 @@ msgstr "作者" msgid "slug" msgstr "網址標誌" -#: judge/models/interface.py:69 judge/models/problem.py:471 +#: judge/models/interface.py:69 judge/models/problem.py:498 msgid "public visibility" msgstr "" @@ -1234,34 +1251,6 @@ msgstr "" msgid "blog posts" msgstr "" -#: judge/models/message.py:11 -msgid "message title" -msgstr "" - -#: judge/models/message.py:12 judge/models/ticket.py:30 -msgid "message body" -msgstr "" - -#: judge/models/message.py:13 -msgid "sender" -msgstr "發件人" - -#: judge/models/message.py:14 -msgid "target" -msgstr "目標" - -#: judge/models/message.py:15 -msgid "message timestamp" -msgstr "" - -#: judge/models/message.py:16 -msgid "read" -msgstr "查看" - -#: judge/models/message.py:20 -msgid "messages in the thread" -msgstr "" - #: judge/models/problem.py:30 #, python-format msgid "Disallowed characters: %(value)s" @@ -1279,7 +1268,7 @@ msgstr "" msgid "problem type" msgstr "題目類型" -#: judge/models/problem.py:44 judge/models/problem.py:121 +#: judge/models/problem.py:44 judge/models/problem.py:135 msgid "problem types" msgstr "題目類型" @@ -1291,7 +1280,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:56 judge/models/problem.py:124 +#: judge/models/problem.py:56 judge/models/problem.py:138 msgid "problem group" msgstr "" @@ -1311,7 +1300,7 @@ msgstr "链接" msgid "full name" msgstr "" -#: judge/models/problem.py:65 judge/models/profile.py:41 +#: judge/models/problem.py:65 judge/models/profile.py:44 #: judge/models/runtime.py:24 msgid "short name" msgstr "" @@ -1340,232 +1329,252 @@ msgstr "許可證" msgid "licenses" msgstr "許可證" -#: judge/models/problem.py:104 +#: judge/models/problem.py:112 +msgid "Follow global setting" +msgstr "" + +#: judge/models/problem.py:113 +msgid "Always visible" +msgstr "" + +#: judge/models/problem.py:114 +msgid "Visible if problem solved" +msgstr "" + +#: judge/models/problem.py:115 +msgid "Only own submissions" +msgstr "" + +#: judge/models/problem.py:118 msgid "problem code" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:120 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:122 msgid "problem name" msgstr "題目名稱" -#: judge/models/problem.py:109 +#: judge/models/problem.py:123 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:125 msgid "problem body" msgstr "" -#: judge/models/problem.py:112 +#: judge/models/problem.py:126 msgid "creators" msgstr "建立者" -#: judge/models/problem.py:113 +#: judge/models/problem.py:127 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:115 +#: judge/models/problem.py:129 msgid "curators" msgstr "" -#: judge/models/problem.py:116 +#: judge/models/problem.py:130 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:132 msgid "testers" msgstr "測試人員" -#: judge/models/problem.py:120 +#: judge/models/problem.py:134 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:136 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:139 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:141 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "這個問題的時間限制(以秒為單位。支持小數秒計時方式(例如1.5)。" -#: judge/models/problem.py:131 judge/models/problem.py:458 +#: judge/models/problem.py:145 judge/models/problem.py:485 msgid "memory limit" msgstr "記憶體限制" -#: judge/models/problem.py:132 +#: judge/models/problem.py:146 msgid "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 kilobytes)." msgstr "此問題的記憶體限制,以kb為單位 ( 例如 64mb = 65536 kb)" -#: judge/models/problem.py:138 +#: judge/models/problem.py:152 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "完成問題得分的分數,如果有部分分數而顯示'p'結尾。" -#: judge/models/problem.py:141 +#: judge/models/problem.py:155 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:156 msgid "allowed languages" msgstr "允許的語言" -#: judge/models/problem.py:143 +#: judge/models/problem.py:157 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:159 msgid "manually managed" msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:160 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:161 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:162 msgid "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:164 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:166 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:154 +#: judge/models/problem.py:168 msgid "problem summary" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:170 msgid "number of users" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:171 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:158 +#: judge/models/problem.py:172 msgid "solve rate" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:173 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:174 +msgid "submission source visibility" +msgstr "" + +#: judge/models/problem.py:182 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:447 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:421 +#: judge/models/problem.py:448 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:422 +#: judge/models/problem.py:449 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:423 +#: judge/models/problem.py:450 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:451 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:425 templates/problem/problem.html:161 +#: judge/models/problem.py:452 templates/problem/problem.html:161 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:426 +#: judge/models/problem.py:453 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:427 +#: judge/models/problem.py:454 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:428 +#: judge/models/problem.py:455 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:436 judge/models/problem.py:454 +#: judge/models/problem.py:463 judge/models/problem.py:481 #: judge/models/runtime.py:111 msgid "language" msgstr "語言" -#: judge/models/problem.py:437 +#: judge/models/problem.py:464 msgid "translated name" msgstr "" -#: judge/models/problem.py:438 +#: judge/models/problem.py:465 msgid "translated description" msgstr "" -#: judge/models/problem.py:442 +#: judge/models/problem.py:469 msgid "problem translation" msgstr "" -#: judge/models/problem.py:443 +#: judge/models/problem.py:470 msgid "problem translations" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:474 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:448 +#: judge/models/problem.py:475 msgid "clarification body" msgstr "" -#: judge/models/problem.py:449 +#: judge/models/problem.py:476 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:464 +#: judge/models/problem.py:491 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:465 +#: judge/models/problem.py:492 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:469 +#: judge/models/problem.py:496 msgid "associated problem" msgstr "" -#: judge/models/problem.py:472 +#: judge/models/problem.py:499 msgid "publish date" msgstr "" -#: judge/models/problem.py:474 +#: judge/models/problem.py:501 msgid "editorial content" msgstr "" -#: judge/models/problem.py:497 +#: judge/models/problem.py:524 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:499 +#: judge/models/problem.py:526 msgid "solution" msgstr "題解" -#: judge/models/problem.py:500 +#: judge/models/problem.py:527 msgid "solutions" msgstr "題解" @@ -1677,112 +1686,112 @@ msgstr "分數" msgid "case is pretest?" msgstr "" -#: judge/models/profile.py:38 +#: judge/models/profile.py:41 msgid "organization title" msgstr "" -#: judge/models/profile.py:39 +#: judge/models/profile.py:42 msgid "organization slug" msgstr "" -#: judge/models/profile.py:40 +#: judge/models/profile.py:43 msgid "Organization name shown in URL" msgstr "" -#: judge/models/profile.py:42 +#: judge/models/profile.py:45 msgid "Displayed beside user name during contests" msgstr "" -#: judge/models/profile.py:43 +#: judge/models/profile.py:46 msgid "organization description" msgstr "" -#: judge/models/profile.py:44 +#: judge/models/profile.py:47 msgid "administrators" msgstr "管理員" -#: judge/models/profile.py:45 +#: judge/models/profile.py:48 msgid "Those who can edit this organization" msgstr "" -#: judge/models/profile.py:46 +#: judge/models/profile.py:49 msgid "creation date" msgstr "" -#: judge/models/profile.py:47 +#: judge/models/profile.py:50 msgid "is open organization?" msgstr "" -#: judge/models/profile.py:48 +#: judge/models/profile.py:51 msgid "Allow joining organization" msgstr "" -#: judge/models/profile.py:49 +#: judge/models/profile.py:52 msgid "maximum size" msgstr "" -#: judge/models/profile.py:50 +#: judge/models/profile.py:53 msgid "Maximum amount of users in this organization, only applicable to private organizations" msgstr "這個組織用戶最大數量,只適用於私人組織" -#: judge/models/profile.py:52 +#: judge/models/profile.py:55 msgid "Student access code" msgstr "" -#: judge/models/profile.py:56 +#: judge/models/profile.py:59 msgid "This image will replace the default site logo for users viewing the organization." msgstr "此圖片將替換訪問該組織的用戶的默認網站標識。" -#: judge/models/profile.py:79 +#: judge/models/profile.py:82 msgid "Administer organizations" msgstr "" -#: judge/models/profile.py:80 +#: judge/models/profile.py:83 msgid "Edit all organizations" msgstr "" -#: judge/models/profile.py:82 judge/models/profile.py:99 -#: judge/models/profile.py:269 +#: judge/models/profile.py:85 judge/models/profile.py:102 +#: judge/models/profile.py:293 msgid "organization" msgstr "" -#: judge/models/profile.py:87 +#: judge/models/profile.py:90 msgid "user associated" msgstr "" -#: judge/models/profile.py:88 +#: judge/models/profile.py:91 msgid "self-description" msgstr "" -#: judge/models/profile.py:89 +#: judge/models/profile.py:92 msgid "location" msgstr "位置" -#: judge/models/profile.py:91 +#: judge/models/profile.py:94 msgid "preferred language" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:100 msgid "last access time" msgstr "" -#: judge/models/profile.py:98 +#: judge/models/profile.py:101 msgid "last IP" msgstr "上一訪問 IP" -#: judge/models/profile.py:101 +#: judge/models/profile.py:104 msgid "display rank" msgstr "顯示排名" -#: judge/models/profile.py:103 +#: judge/models/profile.py:106 msgid "Normal User" msgstr "" -#: judge/models/profile.py:104 +#: judge/models/profile.py:107 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:105 templates/base.html:220 +#: judge/models/profile.py:108 templates/base.html:220 #: templates/comments/list.html:99 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:49 #: templates/problem/problem-list-tabs.html:6 @@ -1791,155 +1800,167 @@ msgstr "" msgid "Admin" msgstr "管理員" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "comment mute" msgstr "" -#: judge/models/profile.py:106 +#: judge/models/profile.py:109 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:111 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:111 +#: judge/models/profile.py:114 msgid "user script" msgstr "" -#: judge/models/profile.py:112 +#: judge/models/profile.py:115 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:116 msgid "current contest" msgstr "目前競賽" -#: judge/models/profile.py:115 +#: judge/models/profile.py:118 msgid "math engine" msgstr "" -#: judge/models/profile.py:117 +#: judge/models/profile.py:120 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:118 +#: judge/models/profile.py:121 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:122 msgid "check to enable TOTP-based two-factor authentication" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:123 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:121 +#: judge/models/profile.py:124 msgid "check to enable WebAuthn-based two-factor authentication" msgstr "" -#: judge/models/profile.py:122 +#: judge/models/profile.py:125 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:123 +#: judge/models/profile.py:126 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:125 +#: judge/models/profile.py:128 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:126 +#: judge/models/profile.py:129 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:127 +#: judge/models/profile.py:130 msgid "JSON array of 16 character base32-encoded codes for scratch codes" msgstr "含有16字符的32進制代碼的JSON數組" -#: judge/models/profile.py:131 +#: judge/models/profile.py:134 msgid "Scratch codes must be empty or a JSON array of 16-character base32 codes" msgstr "一次性代碼必須是空的或者是一個含有32進制代碼的JSON數組" -#: judge/models/profile.py:133 +#: judge/models/profile.py:136 +msgid "last TOTP timecode" +msgstr "" + +#: judge/models/profile.py:137 msgid "API token" msgstr "API 令牌" -#: judge/models/profile.py:134 +#: judge/models/profile.py:138 msgid "64 character hex-encoded API access token" msgstr "" -#: judge/models/profile.py:136 +#: judge/models/profile.py:140 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:137 +#: judge/models/profile.py:141 msgid "internal notes" msgstr "" -#: judge/models/profile.py:138 +#: judge/models/profile.py:142 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:139 +#: judge/models/profile.py:143 msgid "last data download time" msgstr "" -#: judge/models/profile.py:236 +#: judge/models/profile.py:253 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:237 +#: judge/models/profile.py:254 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:239 +#: judge/models/profile.py:256 msgid "user profile" msgstr "使用者個人檔案" -#: judge/models/profile.py:240 +#: judge/models/profile.py:257 msgid "user profiles" msgstr "使用者個人檔案" -#: judge/models/profile.py:246 +#: judge/models/profile.py:263 msgid "device name" msgstr "" -#: judge/models/profile.py:247 +#: judge/models/profile.py:264 msgid "credential ID" msgstr "" -#: judge/models/profile.py:248 +#: judge/models/profile.py:265 msgid "public key" msgstr "" -#: judge/models/profile.py:249 +#: judge/models/profile.py:266 msgid "sign counter" msgstr "" -#: judge/models/profile.py:271 +#: judge/models/profile.py:287 +msgid "WebAuthn credential" +msgstr "" + +#: judge/models/profile.py:288 +msgid "WebAuthn credentials" +msgstr "" + +#: judge/models/profile.py:295 msgid "request time" msgstr "" -#: judge/models/profile.py:272 +#: judge/models/profile.py:296 msgid "state" msgstr "狀態" -#: judge/models/profile.py:277 +#: judge/models/profile.py:301 msgid "reason" msgstr "原因" -#: judge/models/profile.py:280 +#: judge/models/profile.py:304 msgid "organization join request" msgstr "" -#: judge/models/profile.py:281 +#: judge/models/profile.py:305 msgid "organization join requests" msgstr "" @@ -2095,210 +2116,210 @@ msgstr "裁判服務器" msgid "judge" msgstr "裁判服務器" -#: judge/models/submission.py:20 judge/models/submission.py:47 +#: judge/models/submission.py:21 judge/models/submission.py:48 #: judge/utils/problems.py:74 msgid "Accepted" msgstr "接受" -#: judge/models/submission.py:21 judge/models/submission.py:48 +#: judge/models/submission.py:22 judge/models/submission.py:49 msgid "Wrong Answer" msgstr "錯誤答案" -#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Time Limit Exceeded" msgstr "超出了時間限制" -#: judge/models/submission.py:23 judge/models/submission.py:51 +#: judge/models/submission.py:24 judge/models/submission.py:52 msgid "Memory Limit Exceeded" msgstr "超出了記憶體限制" -#: judge/models/submission.py:24 judge/models/submission.py:52 +#: judge/models/submission.py:25 judge/models/submission.py:53 msgid "Output Limit Exceeded" msgstr "超出了輸出限制" -#: judge/models/submission.py:25 judge/models/submission.py:53 +#: judge/models/submission.py:26 judge/models/submission.py:54 msgid "Invalid Return" msgstr "" -#: judge/models/submission.py:26 judge/models/submission.py:54 +#: judge/models/submission.py:27 judge/models/submission.py:55 msgid "Runtime Error" msgstr "運行時錯誤" -#: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:76 +#: judge/models/submission.py:28 judge/models/submission.py:42 +#: judge/models/submission.py:56 judge/utils/problems.py:76 msgid "Compile Error" msgstr "編譯錯誤" -#: judge/models/submission.py:28 judge/models/submission.py:40 +#: judge/models/submission.py:29 judge/models/submission.py:41 msgid "Internal Error" msgstr "內部錯誤" -#: judge/models/submission.py:29 +#: judge/models/submission.py:30 msgid "Short circuit" msgstr "" -#: judge/models/submission.py:30 judge/models/submission.py:42 -#: judge/models/submission.py:61 +#: judge/models/submission.py:31 judge/models/submission.py:43 +#: judge/models/submission.py:62 msgid "Aborted" msgstr "中止" -#: judge/models/submission.py:36 judge/models/submission.py:57 +#: judge/models/submission.py:37 judge/models/submission.py:58 msgid "Queued" msgstr "已排入佇列" -#: judge/models/submission.py:37 judge/models/submission.py:58 +#: judge/models/submission.py:38 judge/models/submission.py:59 msgid "Processing" msgstr "正在處理" -#: judge/models/submission.py:38 judge/models/submission.py:59 +#: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Grading" msgstr "評分中" -#: judge/models/submission.py:39 judge/models/submission.py:60 +#: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Completed" msgstr "已完成" -#: judge/models/submission.py:56 +#: judge/models/submission.py:57 msgid "Internal Error (judging server error)" msgstr "" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "提交時間" -#: judge/models/submission.py:67 judge/models/submission.py:227 +#: judge/models/submission.py:68 judge/models/submission.py:238 msgid "execution time" msgstr "執行時間" -#: judge/models/submission.py:68 judge/models/submission.py:228 +#: judge/models/submission.py:69 judge/models/submission.py:239 msgid "memory usage" msgstr "記憶體使用量" -#: judge/models/submission.py:69 judge/models/submission.py:229 +#: judge/models/submission.py:70 judge/models/submission.py:240 msgid "points granted" msgstr "獲得分數" -#: judge/models/submission.py:70 +#: judge/models/submission.py:71 msgid "submission language" msgstr "提交語言" -#: judge/models/submission.py:71 +#: judge/models/submission.py:72 msgid "status" msgstr "狀態" -#: judge/models/submission.py:72 +#: judge/models/submission.py:73 msgid "result" msgstr "結果" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "compile errors" msgstr "編譯錯誤" -#: judge/models/submission.py:76 +#: judge/models/submission.py:77 msgid "batched cases" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "test case points" msgstr "" -#: judge/models/submission.py:78 +#: judge/models/submission.py:79 msgid "test case total points" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "judged on" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:82 -msgid "was rejudged by admin" +#: judge/models/submission.py:83 +msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:83 +#: judge/models/submission.py:84 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:86 -msgid "lock submission" -msgstr "鎖定提交" +#: judge/models/submission.py:87 +msgid "submission lock" +msgstr "" -#: judge/models/submission.py:199 +#: judge/models/submission.py:210 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:200 +#: judge/models/submission.py:211 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:201 +#: judge/models/submission.py:212 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:202 +#: judge/models/submission.py:213 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:203 +#: judge/models/submission.py:214 msgid "View all submission" msgstr "檢視所有提交紀錄" -#: judge/models/submission.py:204 +#: judge/models/submission.py:215 msgid "Resubmit others' submission" msgstr "重新提交他人的提交紀錄" -#: judge/models/submission.py:205 +#: judge/models/submission.py:216 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:208 templates/contest/moss.html:58 +#: judge/models/submission.py:219 templates/contest/moss.html:58 msgid "submissions" msgstr "" -#: judge/models/submission.py:212 judge/models/submission.py:223 +#: judge/models/submission.py:223 judge/models/submission.py:234 msgid "associated submission" msgstr "" -#: judge/models/submission.py:214 +#: judge/models/submission.py:225 msgid "source code" msgstr "源碼" -#: judge/models/submission.py:225 +#: judge/models/submission.py:236 msgid "test case ID" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:237 msgid "status flag" msgstr "" -#: judge/models/submission.py:230 +#: judge/models/submission.py:241 msgid "points possible" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:242 msgid "batch number" msgstr "" -#: judge/models/submission.py:232 +#: judge/models/submission.py:243 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:233 +#: judge/models/submission.py:244 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:234 +#: judge/models/submission.py:245 msgid "program output" msgstr "" -#: judge/models/submission.py:242 +#: judge/models/submission.py:253 msgid "submission test case" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:254 msgid "submission test cases" msgstr "" @@ -2346,6 +2367,10 @@ msgstr "票" msgid "poster" msgstr "海報" +#: judge/models/ticket.py:30 +msgid "message body" +msgstr "" + #: judge/models/ticket.py:31 msgid "message time" msgstr "" @@ -2368,19 +2393,23 @@ msgstr "" msgid "Running MOSS" msgstr "" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:58 msgid "Recalculating user points" msgstr "" -#: judge/tasks/user.py:50 +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "" + +#: judge/tasks/user.py:64 msgid "Preparing your submission data" msgstr "" -#: judge/tasks/user.py:81 +#: judge/tasks/user.py:95 msgid "Preparing your comment data" msgstr "" @@ -2490,7 +2519,7 @@ msgstr "" msgid "You already voted." msgstr "" -#: judge/views/comment.py:129 judge/views/organization.py:298 +#: judge/views/comment.py:129 judge/views/organization.py:297 msgid "Edited from site" msgstr "" @@ -2498,125 +2527,130 @@ msgstr "" msgid "Editing comment" msgstr "" -#: judge/views/contests.py:56 judge/views/contests.py:201 -#: judge/views/contests.py:204 judge/views/contests.py:382 +#: judge/views/contests.py:57 judge/views/contests.py:210 +#: judge/views/contests.py:213 judge/views/contests.py:395 msgid "No such contest" msgstr "" -#: judge/views/contests.py:57 judge/views/contests.py:202 +#: judge/views/contests.py:58 judge/views/contests.py:211 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" -#: judge/views/contests.py:70 +#: judge/views/contests.py:71 msgid "Contests" msgstr "競賽" -#: judge/views/contests.py:205 +#: judge/views/contests.py:214 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:208 +#: judge/views/contests.py:217 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:244 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:301 +#: judge/views/contests.py:278 +#, python-format +msgid "Cloned contest from %s" +msgstr "" + +#: judge/views/contests.py:314 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:302 +#: judge/views/contests.py:315 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:306 +#: judge/views/contests.py:319 msgid "Already in contest" msgstr "" -#: judge/views/contests.py:307 +#: judge/views/contests.py:320 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "" -#: judge/views/contests.py:310 +#: judge/views/contests.py:323 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:311 +#: judge/views/contests.py:324 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "您在該競賽不受歡迎。您被永久禁止參加該競賽。" -#: judge/views/contests.py:372 +#: judge/views/contests.py:385 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:383 +#: judge/views/contests.py:396 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:402 +#: judge/views/contests.py:415 msgid "ContestCalendar requires integer year and month" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:442 +#: judge/views/contests.py:455 msgid "F Y" msgstr "Y年n月" -#: judge/views/contests.py:489 +#: judge/views/contests.py:502 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:662 +#: judge/views/contests.py:675 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:670 +#: judge/views/contests.py:683 msgid "???" msgstr "???" -#: judge/views/contests.py:686 +#: judge/views/contests.py:699 #, python-format msgid "Your participation in %s" msgstr "" -#: judge/views/contests.py:687 +#: judge/views/contests.py:700 #, python-format msgid "%s's participation in %s" msgstr "" -#: judge/views/contests.py:694 +#: judge/views/contests.py:707 msgid "Live" msgstr "實時" -#: judge/views/contests.py:706 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:719 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:750 +#: judge/views/contests.py:763 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:777 +#: judge/views/contests.py:790 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:800 +#: judge/views/contests.py:813 #, python-format msgid "Contest tag: %s" msgstr "" @@ -2645,161 +2679,175 @@ msgstr "" msgid "Runtimes" msgstr "語言" -#: judge/views/organization.py:44 judge/views/organization.py:47 +#: judge/views/organization.py:43 judge/views/organization.py:46 msgid "No such organization" msgstr "" -#: judge/views/organization.py:45 +#: judge/views/organization.py:44 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:48 +#: judge/views/organization.py:47 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:72 judge/views/register.py:34 +#: judge/views/organization.py:71 judge/views/register.py:33 #: templates/organization/list.html:15 templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:93 +#: judge/views/organization.py:92 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:118 judge/views/organization.py:121 -#: judge/views/organization.py:126 +#: judge/views/organization.py:117 judge/views/organization.py:120 +#: judge/views/organization.py:125 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:117 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:121 +#: judge/views/organization.py:120 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:138 +#: judge/views/organization.py:137 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:162 +#: judge/views/organization.py:161 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:180 +#: judge/views/organization.py:179 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:208 +#: judge/views/organization.py:207 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:239 +#: judge/views/organization.py:238 #, python-format msgid "Your organization can only receive %d more members. You cannot approve %d users." msgstr "你的組織只能再接受%d個用戶,無法接受%d個。" -#: judge/views/organization.py:251 +#: judge/views/organization.py:250 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" -#: judge/views/organization.py:252 +#: judge/views/organization.py:251 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" -#: judge/views/organization.py:282 +#: judge/views/organization.py:281 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:306 judge/views/organization.py:314 +#: judge/views/organization.py:305 judge/views/organization.py:313 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:307 +#: judge/views/organization.py:306 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:315 +#: judge/views/organization.py:314 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:320 judge/views/organization.py:324 +#: judge/views/organization.py:319 judge/views/organization.py:323 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:321 +#: judge/views/organization.py:320 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:325 +#: judge/views/organization.py:324 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:67 +#: judge/views/problem.py:68 msgid "No such problem" msgstr "沒有這個題目" -#: judge/views/problem.py:68 +#: judge/views/problem.py:69 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:110 +#: judge/views/problem.py:111 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:113 +#: judge/views/problem.py:114 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:283 templates/contest/contest.html:79 +#: judge/views/problem.py:133 +msgid "No such editorial" +msgstr "" + +#: judge/views/problem.py:134 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "" + +#: judge/views/problem.py:289 templates/contest/contest.html:79 #: templates/user/user-tabs.html:5 templates/user/users-table.html:23 msgid "Problems" msgstr "問題" -#: judge/views/problem.py:556 judge/views/problem.py:564 +#: judge/views/problem.py:562 judge/views/problem.py:570 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:613 +#: judge/views/problem.py:619 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:614 +#: judge/views/problem.py:620 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting this problem." msgstr "您在該題目不受歡迎。您被永久禁止為該題目提交解決程序。" -#: judge/views/problem.py:618 +#: judge/views/problem.py:624 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:619 +#: judge/views/problem.py:625 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:681 +#: judge/views/problem.py:693 msgid "Clone Problem" msgstr "" +#: judge/views/problem.py:720 +#, python-format +msgid "Cloned problem from %s" +msgstr "" + #: judge/views/problem_data.py:37 msgid "Checker arguments must be a JSON object" msgstr "" @@ -2868,52 +2916,52 @@ msgstr "" msgid "Best solutions for {0}" msgstr "" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:82 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:85 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:89 +#: judge/views/ranked_submission.py:91 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" -#: judge/views/ranked_submission.py:92 +#: judge/views/ranked_submission.py:94 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "" -#: judge/views/register.py:27 +#: judge/views/register.py:26 msgid "A username must contain letters, numbers, or underscores" msgstr "" -#: judge/views/register.py:31 +#: judge/views/register.py:30 msgid "Preferred language" msgstr "" -#: judge/views/register.py:38 +#: judge/views/register.py:37 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:45 +#: 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:51 +#: judge/views/register.py:50 msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." msgstr "由於濫用歷史,我們不允許您的電子郵件提供商。請使用有信譽的電子郵件提供商。" -#: judge/views/register.py:57 judge/views/register.py:95 +#: judge/views/register.py:56 judge/views/register.py:94 msgid "Registration" msgstr "" -#: judge/views/register.py:106 +#: judge/views/register.py:105 msgid "Authentication failure" msgstr "" @@ -2921,7 +2969,7 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:24 templates/submission/list.html:311 +#: judge/views/status.py:24 templates/submission/list.html:310 msgid "Status" msgstr "狀態" @@ -2929,74 +2977,74 @@ msgstr "狀態" msgid "Version matrix" msgstr "" -#: judge/views/submission.py:53 judge/views/submission.py:60 +#: judge/views/submission.py:55 judge/views/submission.py:62 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:203 judge/views/submission.py:204 +#: judge/views/submission.py:205 judge/views/submission.py:206 #: templates/problem/problem.html:127 msgid "All submissions" msgstr "全部的提交紀錄" -#: judge/views/submission.py:349 +#: judge/views/submission.py:355 msgid "All my submissions" msgstr "我的提交紀錄" -#: judge/views/submission.py:350 +#: judge/views/submission.py:356 #, python-format msgid "All submissions by %s" msgstr "%s 的提交" -#: judge/views/submission.py:381 +#: judge/views/submission.py:387 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:400 +#: judge/views/submission.py:410 msgid "Must pass a problem" msgstr "" -#: judge/views/submission.py:439 +#: judge/views/submission.py:449 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:440 +#: judge/views/submission.py:450 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:536 +#: judge/views/submission.py:546 msgid "Must pass a contest" msgstr "" -#: judge/views/submission.py:544 +#: judge/views/submission.py:554 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:545 +#: judge/views/submission.py:555 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:559 +#: judge/views/submission.py:569 #, python-brace-format msgid "My submissions in {0}" msgstr "" -#: judge/views/submission.py:561 +#: judge/views/submission.py:571 #, python-brace-format msgid "{0}'s submissions in {2}" msgstr "" -#: judge/views/submission.py:585 +#: judge/views/submission.py:597 #, python-brace-format msgid "{0}'s submissions for {2} in {4}" msgstr "{4}{0}{2}< /a> 的提交歷史" -#: judge/views/submission.py:590 +#: judge/views/submission.py:602 #, python-brace-format msgid "{0}'s submissions for problem {2} in {3}" msgstr "{0}{3} 第 {2} 題提交的程序" @@ -3013,40 +3061,40 @@ msgstr "" msgid "You must solve at least one problem before you can create a ticket." msgstr "" -#: judge/views/ticket.py:87 judge/views/ticket.py:90 +#: judge/views/ticket.py:91 judge/views/ticket.py:94 #, python-format msgid "New ticket for %s" msgstr "" -#: judge/views/ticket.py:144 +#: judge/views/ticket.py:148 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "" -#: judge/views/ticket.py:249 +#: judge/views/ticket.py:253 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "" -#: judge/views/ticket.py:298 +#: judge/views/ticket.py:302 #, python-format msgid "New Ticket: %s" msgstr "" -#: judge/views/ticket.py:299 +#: judge/views/ticket.py:303 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "" -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid ", " msgstr "," -#: judge/views/ticket.py:301 +#: judge/views/ticket.py:305 msgid "no one" msgstr "沒人" -#: judge/views/ticket.py:321 +#: judge/views/ticket.py:325 #, python-format msgid "New Ticket Message For: %s" msgstr "" @@ -3055,87 +3103,91 @@ msgstr "" msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:99 +#: judge/views/two_factor.py:108 +msgid "Refresh Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:116 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:148 +#: judge/views/two_factor.py:165 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:151 +#: judge/views/two_factor.py:168 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:204 +#: judge/views/two_factor.py:221 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:216 +#: judge/views/two_factor.py:229 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 msgid "No such user" msgstr "" -#: judge/views/user.py:79 +#: judge/views/user.py:78 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:83 +#: judge/views/user.py:82 msgid "My account" msgstr "我的帳戶" -#: judge/views/user.py:84 +#: judge/views/user.py:83 #, python-format msgid "User %s" msgstr "用戶 %s" -#: judge/views/user.py:132 +#: judge/views/user.py:131 msgid "Login" msgstr "登入" -#: judge/views/user.py:173 +#: judge/views/user.py:172 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:307 +#: judge/views/user.py:306 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:311 templates/user/edit-profile.html:348 +#: judge/views/user.py:310 templates/user/edit-profile.html:352 msgid "Download your data" msgstr "" -#: judge/views/user.py:367 +#: judge/views/user.py:366 msgid "Updated on site" msgstr "" -#: judge/views/user.py:400 templates/admin/auth/user/change_form.html:14 +#: 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 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:415 +#: judge/views/user.py:414 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:427 +#: judge/views/user.py:426 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:437 +#: judge/views/user.py:436 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:443 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:442 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:504 +#: judge/views/user.py:503 msgid "You have been successfully logged out." msgstr "" @@ -3262,11 +3314,11 @@ msgstr "新聞 " msgid "posted on {time}" msgstr "" -#: templates/blog/list.html:130 templates/problem/problem.html:309 +#: templates/blog/list.html:130 templates/problem/problem.html:311 msgid "Clarifications" msgstr "" -#: templates/blog/list.html:146 templates/problem/problem.html:320 +#: templates/blog/list.html:146 templates/problem/problem.html:322 msgid "No clarifications have been made at this time." msgstr "" @@ -3462,7 +3514,7 @@ msgid "Info" msgstr "資料和信息" #: templates/contest/contest-tabs.html:6 templates/stats/base.html:9 -#: templates/submission/list.html:337 +#: templates/submission/list.html:336 msgid "Statistics" msgstr "統計数据" @@ -3665,19 +3717,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:169 +#: templates/contest/ranking.html:173 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:174 +#: templates/contest/ranking.html:178 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:246 +#: templates/contest/ranking.html:250 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:250 +#: templates/contest/ranking.html:254 msgid "Show organizations" msgstr "" @@ -3952,7 +4004,7 @@ msgstr "" 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:27 templates/problem/problem.html:209 +#: templates/problem/editorial.html:27 templates/problem/problem.html:210 msgid "Author:" msgid_plural "Authors:" msgstr[0] "作者:" @@ -4117,34 +4169,34 @@ msgstr "時間限制:" msgid "Memory limit:" msgstr "記憶體限制:" -#: templates/problem/problem.html:224 +#: templates/problem/problem.html:226 msgid "Problem type" msgid_plural "Problem types" msgstr[0] "題目類型" -#: templates/problem/problem.html:237 +#: templates/problem/problem.html:239 msgid "Allowed languages" msgstr "允許的語言" -#: templates/problem/problem.html:245 +#: templates/problem/problem.html:247 #, python-format msgid "No %(lang)s judge online" msgstr "" -#: templates/problem/problem.html:256 +#: templates/problem/problem.html:258 msgid "Judge:" msgid_plural "Judges:" msgstr[0] "裁判服務器:" -#: templates/problem/problem.html:273 +#: templates/problem/problem.html:275 msgid "none available" msgstr "" -#: templates/problem/problem.html:298 +#: templates/problem/problem.html:300 msgid "Request clarification" msgstr "" -#: templates/problem/problem.html:300 +#: templates/problem/problem.html:302 msgid "Report an issue" msgstr "" @@ -4189,7 +4241,7 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:63 templates/submission/list.html:329 +#: templates/problem/search-form.html:63 templates/submission/list.html:328 #: templates/ticket/list.html:248 msgid "Go" msgstr "搜索" @@ -4235,7 +4287,7 @@ msgid "Invalid username or password." msgstr "" #: templates/registration/login.html:53 -#: templates/registration/two_factor_auth.html:86 +#: templates/registration/two_factor_auth.html:92 msgid "Login!" msgstr "登錄!" @@ -4355,12 +4407,12 @@ msgid "Default language" msgstr "" #: templates/registration/registration_form.html:184 -#: templates/user/edit-profile.html:310 +#: templates/user/edit-profile.html:314 msgid "Affiliated organizations" msgstr "" #: templates/registration/registration_form.html:190 -#: templates/user/edit-profile.html:324 +#: templates/user/edit-profile.html:328 msgid "Notify me about upcoming contests" msgstr "" @@ -4376,57 +4428,93 @@ msgstr "" msgid "Register!" msgstr "" -#: templates/registration/totp_disable.html:38 +#: 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:45 +#: 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位一次性代碼:" -#: templates/registration/totp_disable.html:48 +#: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" msgstr "" -#: templates/registration/totp_enable.html:75 +#: templates/registration/totp_enable.html:72 msgid "Scan this code with your authenticator app:" msgstr "" -#: templates/registration/totp_enable.html:76 +#: templates/registration/totp_enable.html:73 msgid "QR code" msgstr "二維碼" -#: templates/registration/totp_enable.html:77 +#: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" msgstr "" -#: templates/registration/totp_enable.html:88 +#: templates/registration/totp_enable.html:85 msgid "Enter the 6-digit code generated by your app:" msgstr "" -#: templates/registration/totp_enable.html:91 +#: 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 "" + +#: 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 "" + +#: 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/two_factor_auth.html:33 -#: templates/user/edit-profile.html:161 +#: templates/user/edit-profile.html:165 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:185 +#: templates/user/edit-profile.html:189 msgid "Failed to contact server." msgstr "" -#: templates/registration/two_factor_auth.html:77 +#: 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位數代碼或者一個16位一次性代碼:" -#: templates/registration/two_factor_auth.html:83 -msgid "Use security key" +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" msgstr "" #: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "" + +#: templates/registration/two_factor_auth.html:97 #, 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。" @@ -4507,15 +4595,15 @@ msgstr "" msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:307 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:343 +#: templates/submission/list.html:342 msgid "Total:" msgstr "總計:" -#: templates/submission/list.html:353 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -4730,121 +4818,125 @@ msgstr "排名" msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:109 +#: templates/user/edit-profile.html:113 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:110 +#: templates/user/edit-profile.html:114 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:111 +#: templates/user/edit-profile.html:115 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:116 msgid "You will not be able to view your api token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:113 templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:117 templates/user/edit-profile.html:211 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:121 templates/user/edit-profile.html:243 -#: templates/user/edit-profile.html:371 templates/user/edit-profile.html:390 +#: 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:127 templates/user/edit-profile.html:392 +#: templates/user/edit-profile.html:131 templates/user/edit-profile.html:397 msgid "Remove" msgstr "刪除" -#: templates/user/edit-profile.html:137 +#: templates/user/edit-profile.html:141 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:144 templates/user/edit-profile.html:375 -#: templates/user/edit-profile.html:396 +#: 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:190 +#: templates/user/edit-profile.html:194 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:280 +#: templates/user/edit-profile.html:284 msgid "Self-description" msgstr "" -#: templates/user/edit-profile.html:287 +#: templates/user/edit-profile.html:291 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:296 +#: templates/user/edit-profile.html:300 msgid "Editor theme" msgstr "" -#: templates/user/edit-profile.html:301 +#: templates/user/edit-profile.html:305 msgid "Math engine" msgstr "" -#: templates/user/edit-profile.html:335 templates/user/edit-profile.html:337 +#: templates/user/edit-profile.html:339 templates/user/edit-profile.html:341 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:342 +#: templates/user/edit-profile.html:346 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:356 +#: templates/user/edit-profile.html:359 msgid "Two-factor Authentication is enabled" msgstr "" -#: templates/user/edit-profile.html:358 -msgid "Two-factor Authentication is disabled" -msgstr "" - -#: templates/user/edit-profile.html:363 templates/user/edit-profile.html:365 +#: templates/user/edit-profile.html:362 templates/user/edit-profile.html:365 msgid "Disable" msgstr "禁用" -#: templates/user/edit-profile.html:368 +#: templates/user/edit-profile.html:367 +msgid "Refresh" +msgstr "" + +#: templates/user/edit-profile.html:370 msgid "Scratch Codes:" msgstr "" -#: templates/user/edit-profile.html:372 templates/user/edit-profile.html:393 +#: templates/user/edit-profile.html:374 templates/user/edit-profile.html:398 msgid "Hidden" msgstr "隱藏" -#: templates/user/edit-profile.html:381 +#: 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:387 +#: templates/user/edit-profile.html:392 msgid "API Token" msgstr "API令牌" -#: templates/user/edit-profile.html:404 +#: templates/user/edit-profile.html:409 msgid "Security keys" msgstr "" -#: templates/user/edit-profile.html:414 +#: templates/user/edit-profile.html:419 msgid "Delete" msgstr "刪除" -#: templates/user/edit-profile.html:421 +#: templates/user/edit-profile.html:426 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:422 +#: templates/user/edit-profile.html:427 msgid "Add" msgstr "添加" -#: templates/user/edit-profile.html:430 +#: templates/user/edit-profile.html:435 msgid "User-script" msgstr "" -#: templates/user/edit-profile.html:434 +#: templates/user/edit-profile.html:439 msgid "Update profile" msgstr "" diff --git a/locale/zh_Hant/LC_MESSAGES/djangojs.po b/locale/zh_Hant/LC_MESSAGES/djangojs.po index 73ca4feb17..2af6d8aef2 100644 --- a/locale/zh_Hant/LC_MESSAGES/djangojs.po +++ b/locale/zh_Hant/LC_MESSAGES/djangojs.po @@ -3,7 +3,7 @@ msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-01 23:12+0000\n" -"PO-Revision-Date: 2021-04-25 00:08\n" +"PO-Revision-Date: 2021-07-07 00:27\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n"