From 826d06cf51489504388e003331dffa3622144341 Mon Sep 17 00:00:00 2001 From: dmoj-build Date: Tue, 23 Jan 2024 05:41:56 +0000 Subject: [PATCH] i18n: update translations from Crowdin --- locale/ar/LC_MESSAGES/django.po | 1714 ++++--- locale/ar/LC_MESSAGES/djangojs.po | 8 +- locale/ca/LC_MESSAGES/django.po | 1750 ++++--- locale/ca/LC_MESSAGES/djangojs.po | 8 +- locale/de/LC_MESSAGES/django.po | 1710 ++++--- locale/de/LC_MESSAGES/djangojs.po | 8 +- locale/el/LC_MESSAGES/django.po | 1836 +++---- locale/el/LC_MESSAGES/djangojs.po | 28 +- locale/en/LC_MESSAGES/django.po | 1732 ++++--- locale/en/LC_MESSAGES/djangojs.po | 6 +- locale/es/LC_MESSAGES/django.po | 1790 ++++--- locale/es/LC_MESSAGES/djangojs.po | 8 +- locale/fr/LC_MESSAGES/django.po | 1898 +++---- locale/fr/LC_MESSAGES/djangojs.po | 12 +- locale/hr/LC_MESSAGES/django.po | 1766 ++++--- locale/hr/LC_MESSAGES/djangojs.po | 8 +- locale/hu/LC_MESSAGES/django.po | 1738 ++++--- locale/hu/LC_MESSAGES/djangojs.po | 8 +- locale/it/LC_MESSAGES/django.po | 1726 ++++--- locale/it/LC_MESSAGES/djangojs.po | 8 +- locale/ja/LC_MESSAGES/django.po | 1744 ++++--- locale/ja/LC_MESSAGES/djangojs.po | 8 +- locale/kk/LC_MESSAGES/django.po | 6260 ++++++++++++++++++++++++ locale/kk/LC_MESSAGES/djangojs.po | 82 + locale/ko/LC_MESSAGES/django.po | 1740 ++++--- locale/ko/LC_MESSAGES/djangojs.po | 8 +- locale/lt/LC_MESSAGES/django.po | 1710 ++++--- locale/lt/LC_MESSAGES/djangojs.po | 8 +- locale/nl/LC_MESSAGES/django.po | 1706 ++++--- locale/nl/LC_MESSAGES/djangojs.po | 8 +- locale/pl/LC_MESSAGES/django.po | 1798 ++++--- locale/pl/LC_MESSAGES/djangojs.po | 8 +- locale/pt/LC_MESSAGES/django.po | 1706 ++++--- locale/pt/LC_MESSAGES/djangojs.po | 8 +- locale/ro/LC_MESSAGES/django.po | 1752 ++++--- locale/ro/LC_MESSAGES/djangojs.po | 8 +- locale/ru/LC_MESSAGES/django.po | 3012 ++++++------ locale/ru/LC_MESSAGES/djangojs.po | 28 +- locale/sr_Latn/LC_MESSAGES/django.po | 2036 ++++---- locale/sr_Latn/LC_MESSAGES/djangojs.po | 52 +- locale/tr/LC_MESSAGES/django.po | 1820 +++---- locale/tr/LC_MESSAGES/djangojs.po | 8 +- locale/vi/LC_MESSAGES/django.po | 1982 ++++---- locale/vi/LC_MESSAGES/djangojs.po | 20 +- locale/zh_Hans/LC_MESSAGES/django.po | 1756 ++++--- locale/zh_Hans/LC_MESSAGES/djangojs.po | 18 +- locale/zh_Hant/LC_MESSAGES/django.po | 1920 ++++---- locale/zh_Hant/LC_MESSAGES/djangojs.po | 8 +- 48 files changed, 29543 insertions(+), 19433 deletions(-) create mode 100644 locale/kk/LC_MESSAGES/django.po create mode 100644 locale/kk/LC_MESSAGES/djangojs.po diff --git a/locale/ar/LC_MESSAGES/django.po b/locale/ar/LC_MESSAGES/django.po index db47f1667d..80eee1307d 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:48\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Arabic, Saudi Arabia\n" "Language: ar_SA\n" @@ -17,99 +17,103 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "الكاتالونية" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "الألمانية" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "الانجليزية" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "الإسبانية" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "الفرنسية" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "الكرواتية" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "الهنغارية" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "يابانية" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "الكورية" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "البرتغالية" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "محتوى" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." @@ -120,11 +124,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/comments.py:43 -msgid "Hide comments" +#: judge/admin/comments.py:47 +msgid "Unhide comments" msgstr "" -#: judge/admin/comments.py:47 +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." @@ -135,12 +139,9 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "" #: judge/admin/contest.py:31 @@ -148,22 +149,22 @@ msgid "Included contests" msgstr "" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "مسألة" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "" @@ -195,7 +196,11 @@ msgstr "الولوج" msgid "Justice" msgstr "العدالة" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -206,11 +211,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -221,11 +226,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -236,11 +241,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -251,11 +256,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -266,7 +267,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -277,39 +282,36 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "اسم المستخدم" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "افتراضي" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "سبيل الرابط" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "ملخص" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "مستخدم" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "عنصر" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "" @@ -330,8 +332,8 @@ msgid "Taxonomy" msgstr "" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -340,9 +342,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "" @@ -350,11 +351,16 @@ msgstr "" msgid "History" msgstr "" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -365,11 +371,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -380,11 +386,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/problem.py:207 -msgid "Mark problems as public" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -395,43 +401,31 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" +#: judge/admin/profile.py:119 +msgid "date joined" msgstr "" -#: judge/admin/profile.py:113 -msgid "date joined" +#: judge/admin/profile.py:123 +msgid "Recalculate scores" msgstr "" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." @@ -442,30 +436,26 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "" @@ -497,19 +487,23 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -520,38 +514,38 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "" -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:222 +msgid "time" msgstr "" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:226 +msgid "memory" msgstr "" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:238 -msgid "Memory" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" msgstr "" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -575,7 +569,8 @@ msgstr "" msgid "Comment body" msgstr "" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -676,7 +671,7 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." @@ -687,31 +682,31 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." @@ -722,83 +717,91 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -807,108 +810,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" +#: judge/models/choices.py:24 +msgid "Follow site theme" msgstr "" #: judge/models/choices.py:60 -msgid "SVG only" +msgid "Leave as LaTeX" msgstr "" #: judge/models/choices.py:61 -msgid "MathML only" +msgid "SVG only" msgstr "" #: judge/models/choices.py:62 -msgid "MathJax with SVG fallback" +msgid "MathML only" msgstr "" #: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "" + +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -964,16 +973,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -981,7 +985,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -1017,12 +1021,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "" @@ -1030,12 +1034,12 @@ msgstr "" msgid "end time" msgstr "" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1155,11 +1159,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1189,7 +1193,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1209,7 +1213,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1222,7 +1226,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1270,213 +1274,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1528,7 +1532,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1581,7 +1585,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1593,7 +1597,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1630,7 +1634,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1654,280 +1658,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1953,7 +1944,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -2000,7 +1991,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -2048,6 +2039,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2125,7 +2128,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "" @@ -2166,7 +2169,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2191,26 +2194,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2220,200 +2227,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2656,15 +2663,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2672,141 +2679,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2870,16 +2877,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2936,40 +2933,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -3036,45 +3057,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3083,111 +3104,111 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3216,76 +3237,76 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." @@ -3296,7 +3317,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." @@ -3307,7 +3328,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -3318,7 +3339,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -3329,152 +3350,160 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3505,51 +3534,51 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3561,77 +3590,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3686,102 +3715,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3807,13 +3891,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3833,49 +3917,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -4075,15 +4160,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4164,7 +4249,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4391,7 +4476,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4399,7 +4484,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4568,19 +4653,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4751,6 +4836,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4767,7 +4863,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4803,59 +4899,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4877,86 +4981,86 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." @@ -4967,7 +5071,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" @@ -4978,7 +5082,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -5059,11 +5163,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "" @@ -5108,14 +5212,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5153,8 +5249,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5163,7 +5259,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5175,20 +5271,20 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -5199,11 +5295,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5316,6 +5412,76 @@ msgstr[5] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" +msgstr[4] "" +msgstr[5] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5419,7 +5585,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5432,36 +5598,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5495,7 +5665,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5503,17 +5673,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5522,7 +5692,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5540,12 +5710,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5614,7 +5784,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5639,27 +5809,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5696,7 +5866,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5782,15 +5952,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5823,23 +5993,23 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5849,11 +6019,11 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5904,152 +6074,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/ar/LC_MESSAGES/djangojs.po b/locale/ar/LC_MESSAGES/djangojs.po index 57b4abeb27..0c7125f53a 100644 --- a/locale/ar/LC_MESSAGES/djangojs.po +++ b/locale/ar/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Arabic, Saudi Arabia\n" "Language: ar_SA\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" @@ -28,7 +28,7 @@ msgstr[3] "" msgstr[4] "" msgstr[5] "" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr " " diff --git a/locale/ca/LC_MESSAGES/django.po b/locale/ca/LC_MESSAGES/django.po index 09559a19fa..85f437d0cd 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:51\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Catalan\n" "Language: ca_ES\n" @@ -17,145 +17,146 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Català" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Alemany" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Grec" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Anglès" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Castellà" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Francès" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Croat" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Hongarès" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japonès" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Coreà" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Portuguès (Brasil)" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Romanès" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Rus" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Serbi (llatí)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turc" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnamita" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Xinès simplificat" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Xinès tradicional" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Inici" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Contingut" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Amagar comentaris" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "Comentari %d ocultat amb èxit." msgstr[1] "Comentaris %d ocultats amb èxit." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Amagar comentaris" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Deixa d'amagar els comentaris" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "Comentari %d mostrat amb èxit." msgstr[1] "Comentaris %d mostrats amb èxit." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Deixa d'amagar els comentaris" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Pàgina associada" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "pàgina associada" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Concursos inclosos" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Problema" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Problemes" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Rejutjar" @@ -187,97 +188,98 @@ msgstr "Accés" msgid "Justice" msgstr "Justícia" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Fer els concursos visibles" + +#: judge/admin/contest.py:230 #, 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:232 -msgid "Mark contests as visible" -msgstr "Fer els concursos visibles" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Fer els concursos invisibles" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, 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:241 -msgid "Mark contests as hidden" -msgstr "Fer els concursos invisibles" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Bloqueja els enviaments al concurs" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, 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:250 -msgid "Lock contest submissions" -msgstr "Bloqueja els enviaments al concurs" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Desbloqueja els enviaments al concurs" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, 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:259 -msgid "Unlock contest submissions" -msgstr "Desbloqueja els enviaments al concurs" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Recalcular els resultats" + +#: judge/admin/contest.py:359 #, 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:359 -msgid "Recalculate results" -msgstr "Recalcular els resultats" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "nom d'usuari" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "virtual" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "path a l'enllaç" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Resum" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "usuari" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "objecte" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Veure-ho al lloc web" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "Taxonomia" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Punts" @@ -308,9 +310,8 @@ msgstr "Punts" msgid "Limits" msgstr "Límits" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Llenguatge" @@ -318,106 +319,95 @@ msgstr "Llenguatge" msgid "History" msgstr "Historial" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Autors/es" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "autors/es" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Posa la data de publicació a ara" -#: judge/admin/problem.py:193 +#: 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:197 -msgid "Set publish date to now" -msgstr "Posa la data de publicació a ara" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Marca els problemes com a públics" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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:207 -msgid "Mark problems as public" -msgstr "Marca els problemes com a públics" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Marca els problemes com a privats" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "Marca els problemes com a privats" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "problema" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "zona horària" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Usuari" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Correu electrònic" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Zona horària" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "correu electrònic" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "data quan es va unir" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Recalcular les puntuacions" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had 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:123 -msgid "Recalculate scores" -msgstr "Recalcular les puntuacions" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "Regenera" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Descripció" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Informació" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Característiques" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Cap" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s en %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Rejutja els enviaments seleccionats" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "No tens permís per rejutjar enviaments." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "No tens permís per rejutjar TANTS enviaments." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Rejutja els enviaments seleccionats" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Requalifica els enviaments seleccionats" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "Enviament %d ha estat requalificat amb èxit." msgstr[1] "Enviaments %d han estat requalificats amb èxit." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Requalifica els enviaments seleccionats" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "codi del problema" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Codi del problema" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "nom del problema" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Nom del problema" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "temps" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Temps" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "memòria" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Memòria" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "llenguatge" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "Bloquejat" @@ -523,7 +517,8 @@ msgstr "Jutge Online" msgid "Comment body" msgstr "Cos del comentari" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "No se suposa que hagis de parlar, patufet." @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "IOI (abans del 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "Els tokens d'autenticació en dos passos han de ser d'{count} dígit decimal." msgstr[1] "Els tokens d'autenticació en dos passos han de ser de {count} dígits decimals." -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Token d'autenticació en dos passos invàlid." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "Els codis Scratch han de ser de 16 caràcters en Base32." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "El codi Scratch no és vàlid." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Subscriure's als canvis en els concursos" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Activa les actualitzacions experimentals" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "No pots formar part de més d'{count} organització pública." msgstr[1] "No pots formar part de més de {count} organitzacions públiques." -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Descarregar comentaris?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Descarregar enviaments?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "Filtrar per el glob del codi de problema:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "Deixar-ho buit per a incluir tots els enviaments" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Filtra per resultats:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "Siusplau, seleccioneu com a mínim una cosa a descarregar." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Qualsevol jutge" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Nom d'usuari" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Contrasenya" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Longitud del codi invàlida." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Resposta WebAuthn invàlida." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "No hi ha hagut resposta WebAuthn." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "Credencial WebAuthn invàlida." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "Token d'autenticació en dos passos o codi Scratch invàlid." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "S'ha d'especificar un totp_token o una webauthn_response." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "El codi del problema ha de ser ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Ja existeix un problema amb aquest codi." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "La id del concurs ha de ser ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Ja existeix un concurs amb aquesta clau." @@ -739,108 +742,114 @@ msgstr "Ja existeix un concurs amb aquesta clau." msgid "N j, Y, g:i a" msgstr "j N Y, G:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "en {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Deixar-ho com LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Només SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Només MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax amb SVG en cas d'errada" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Detectar la millor qualitat" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "El codi de la pàgina ha de ser ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "comentarista" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "publicat a les" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "pàgina associada" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "vots" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "cos del comentari" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "ocult" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "pare" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "revisions" + +#: judge/models/comment.py:39 msgid "comment" msgstr "comentari" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "comentaris" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Editorial de %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "vot del comentari" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "vots del comentari" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "Ignora el bloqueig del comentari" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -896,16 +905,11 @@ msgstr "id de concurs" msgid "contest name" msgstr "nom del concurs" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "autors/es" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "conservadors/es" @@ -913,7 +917,7 @@ msgstr "conservadors/es" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "testers" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "descripció" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "problemes" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "hora d'inici" @@ -962,12 +966,12 @@ msgstr "hora d'inici" msgid "end time" msgstr "hora de finalització" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "límit de temps" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "visible públicament" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "privat per a organitzacions" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "organitzacions" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "imatge OpenGraph" @@ -1141,7 +1145,7 @@ msgstr "la quantitat de participans en viu" msgid "contest summary" msgstr "resum del concurs" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 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." @@ -1154,7 +1158,7 @@ msgstr "codi d'accés" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "persones non grates" @@ -1202,213 +1206,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Veure concursos privats" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Editar els concursos propis" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Editar tots els concursos" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "Clonar concurs" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "Passar el MOSS al concurs" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Puntuar concursos" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "Codi d'accés al concurs" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "Crear concursos privats" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "Canviar la visibilitat d'un concurs" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "Editar el script d'etiquetat del problema d'un concurs" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "Canviar el estatus de bloqueig del concurs" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "concurs" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "concursos" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "concurs associat" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "puntuació" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "temps acumulat" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "està desqualificat" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "Si aquest participant ha estat desqualificat." -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "camp de desempat" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "id de participació virtual" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 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:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "dades específiques del format del concurs" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "participació al concurs" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "participacions al concurs" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "punts" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "parcial" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "s'han passat els casos de prova preliminars" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "ordre" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "sobreescriptura de la longitud de prefix de sortida" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 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:595 +#: judge/models/contest.py:604 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:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "problema del concurs" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "problemes del concurs" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "enviament" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "participació" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 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:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "enviament de concurs" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "enviaments de concurs" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "classificació" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "puntuació" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "última puntuació" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "puntuació del concurs" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "puntuacions del concurs" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "resultat del MOSS del concurs" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "resultats del MOSS del concurs" @@ -1460,7 +1464,7 @@ msgstr "títol de l'entrada" msgid "slug" msgstr "identificador únic" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "visibilitat pública" @@ -1513,7 +1517,7 @@ msgstr "nom de la categoria del problema" msgid "problem type" msgstr "tipus del problema" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "tipus de problemes" @@ -1525,7 +1529,7 @@ msgstr "ID del grup del problema" msgid "problem group name" msgstr "nom del grup del problema" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "grup del problema" @@ -1562,7 +1566,7 @@ msgstr "URL de la icona." msgid "license text" msgstr "text de la llicència" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "llicència" @@ -1586,280 +1590,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "codi del problema" - #: judge/models/problem.py:119 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 l'URL després de /problem/" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "nom del problema" - #: judge/models/problem.py:121 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:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "cos del problema" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "creadors/es" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 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:127 +#: judge/models/problem.py:128 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:131 +#: judge/models/problem.py:132 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:133 +#: judge/models/problem.py:134 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:135 +#: judge/models/problem.py:136 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:137 +#: judge/models/problem.py:138 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:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "límit de memòria" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "El límit de memòria per aquest problema, en kilobytes (p.e. 256mb = 262144 kilobytes)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "curt circuit" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 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:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "permetre punts parcials" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "llenguatges permesos" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "Llista de llenguatges d'enviament permesos." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "operat manualment" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 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:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "data de publicació" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the 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:161 +#: judge/models/problem.py:162 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:163 +#: judge/models/problem.py:164 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:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "resum del problema" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "nombre d'usuaris" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "El nombre d'usuaris que ha resolt aquest problema." -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "percentatge d'usuaris que han resolt el problema" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "permet fer servir la llibreria sencera de Markdown" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 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:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "Veure problemes ocults" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "Editar problemes propis" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "Editar tots els problemes" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "Editar tots els problemes públics" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "Editar problemes amb accés total a markup" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Clonar problema" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "Cambiar camp is_public" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "Cambiar camp is_manually_managed" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "Veure els problemes privats per a organitzacions" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "llenguatge" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "nom traduït" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "descripció traduïda" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "traducció del problema" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "traduccions del problema" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "problema aclarit" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "cos de l'aclariment" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "marca de temps de l'aclariment" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "límit de recursos específics per llenguatge" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "límits de recursos específics per llenguatge" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "problema associat" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "data de publicació" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "contingut de l'editorial" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "Veure solucions ocultes" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "solució" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "solucions" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "votant" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "nota" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "vot del problema" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "vots del problema" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,8 +1876,8 @@ msgid "Non-trailing spaces" msgstr "Espais que no estan al principi ni al final" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "No-ordenat" +msgid "Sorted" +msgstr "Ordenat" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1932,7 +1923,7 @@ msgstr "" msgid "checker arguments" msgstr "arguments del verificador" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Arguments del verificador como un objecte JSON." @@ -1980,6 +1971,18 @@ msgstr "nombre de punts" msgid "case is pretest?" msgstr "és un cas preliminar?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "arguments del verificador como un objecte JSON" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "títol de l'organització" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "Edita totes les organitzacions" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organització" @@ -2098,7 +2101,7 @@ msgstr "membres" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "data últim accés" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "última IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "mostrar rang" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "Usuari Normal" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "Creador de Problemes" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "Creador de Problemes" msgid "Admin" msgstr "Administrador" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "silenciar el comentari" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "Alguns usuaris son més macos callats." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "usuari desllistat" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "Aquest usuari no serà classificat." -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "script d'usuari" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "JavaScript definit per l'usuari per a la personalització del lloc." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "concurs actual" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "motor matemàtic" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "El motor fet servir per a representar les matemàtiques." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "TOTP 2FA activat" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "Fes clic per a activar l'Autenticació de dos passos basada en TOTP." -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn 2FA activat" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "Fes clic per a activar l'Autenticació de dos passos basada en WebAuthn." -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "clau TOTP" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "Clau de 32 caràcters en Base32 per a TOTP." -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "La clau TOTP ha d'estar buida o ser Base32." -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "codis Scratch" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 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:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "Els codis Scratch han d'estar buits o ser un Array JSON de codis de 16 caràcters en Base32." -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "Token de l'API" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 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:203 +#: judge/models/profile.py:204 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:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "notes internes" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "Notes dels administradors sobre aquest usuari." -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "última data de descàrrega de dades" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "Mostra coses de desenvolupament en progrès" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "Editar ajustos de TOTP" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "perfil d'usuari" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "perfils d'usuaris" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "nom de dispositiu" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "ID de la credencial" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "clau pública" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "comptador de firmes" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "data de solicitud" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "estat" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "Pendent" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Aprovat" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Rebutjat" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "motiu" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "petició d'unir-se a organització" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "peticions d'unir-se a organització" @@ -2588,15 +2595,15 @@ msgstr "Error Intern (error en el servidor del jutge)" msgid "submission time" msgstr "temps d'enviament" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "temps d'execució" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "ús de memòria" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "punts atorgats" @@ -2604,141 +2611,141 @@ msgstr "punts atorgats" msgid "submission language" msgstr "llenguatge de l'enviament" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "estat" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "resultat" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "errors de compilació" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "casos en lot (batch)" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "punts del cas de proves" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "punts totals del cas de proves" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "jutjat en" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "temps per a jutjar l'enviament" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "només s'han passat casos de proves preliminars" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "Enviament %(id)d de %(problem)s per %(user)s" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "Avortar qualsevol enviament" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "Rejutjar l'enviament" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "Rejutjar molts enviaments" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "Enviar sense límit" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "Veure tots els enviaments" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "Reenviar l'enviament d'un altre" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "Canviar l'estat de bloqueig d'un enviament" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "enviaments" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "enviament associat" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "codi font" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "Id del cas de proves" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "flag d'estat" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "punts possibles" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "nombre de lot (batch)" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "resultat del jutge" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "resultat extés del jutge" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "sortida del programa" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "cas de prova de l'enviament" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "casos de prova de l'enviament" @@ -2802,16 +2809,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "Pàgina [page] de [topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "Pàgina %s de %s" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2868,40 +2865,64 @@ msgstr "Preparant les dades del teu enviament" msgid "Preparing your comment data" msgstr "Preparant les dades del teu comentari" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +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/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "Pàgina {page_number} de {total_pages}" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "No es permeten lots buits." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "Els punts han de ser definits per a aquest cas #%d que no és d'un lot." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "L'arxiu d'entrada per el cas %d no existeix: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "L'arxiu de sortida per el cas %d no existeix: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "El cas #%d d'inici de lot necessita punts." -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "Intent d'acabar un batch fora d'un en el cas #%d." -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "Com has corromput el path al zip?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "Com has corromput el path al generador?" @@ -2956,45 +2977,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "Pàgina %d d'Entradres" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "Toquetejant-me el programa, eh?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "Has de resoldre com a mínim un problema abans de poder votar." -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Ja has votat." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Editat des de'l lloc web" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "Editant comentari" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "No es troba aquest concurs" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "No s'ha pogut trobar un concurs amb la clau \"%s\"." @@ -3003,111 +3024,111 @@ msgstr "No s'ha pogut trobar un concurs amb la clau \"%s\"." msgid "Contests" msgstr "Concursos" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "No es troba aquest concurs." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "S'ha denegat l'accés al concurs \"%s\"" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "Clonar Concurs" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "El concurs no està en curs" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" no està en curs actualment." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "BANEJAT" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 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:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "Entra el codi d'accés per a \"%s\"" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "No estas en el concurs \"%s\"." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "Concursos en %(month)s" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "Estadístiques de %s" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "Classificacions de %s" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "La teva participació en %(contest)s" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "Participació de %(user)s en %(contest)s" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "En directe" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Participació" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "Resultats del MOSS per a %s" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "Executant sistema anticòpia MOSS per a %s..." -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "Etiqueta de concurs: %s" @@ -3136,249 +3157,257 @@ msgstr "pàgina corrupta %s" msgid "Runtimes" msgstr "Execucions" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "No s'ha trobat aquesta organització" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, 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:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "No s'ha trobat aquesta organització." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organitzacions" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "Membres de %s" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Unint-se a l'organització" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Ja estàs en l'organització." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Aquesta organització no està oberta." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Abandonant l'organització" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "No estas en \"%s\"." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Sol·licitud d'unir-se a %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Detall de la sol·licitud" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "Administrants sol·licituds per a %s" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "La teva organització només pot tenir %d membre més." msgstr[1] "La teva organització només pot tenir %d membres més." -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "No pots aprovar %d usuari." msgstr[1] "No pots aprovar %d usuaris." -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, 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:313 +#: judge/views/organization.py:340 #, 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:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "Editant %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "No es pot editar l'organització" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "No tens permisos per editar aquesta organització." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 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:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "No pots fer fora a aquest usuari" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "L'usuari que estas intentant expulsar no existeix!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, 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/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "No existeix aquest problema" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, 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:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "Editorial per a {0}" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "èxit" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "Enviar a %s" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "Banejat de fer enviaments" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "Has estat declarat persona non grata per aquest problema. Estàs vetat permanentment de fer enviaments." -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Masses enviaments" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 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:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Clonar Problema" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "Els arguments del verificador han de ser un objecte JSON." -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "Els arguments del verificador és un objecte JSON invàlid." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "Aquest arxiu zip es invàlid!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "Comparant enviaments per a {0}" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "Editant dades per a {0}" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "Editant dades per a %s" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "init.yml generat per a %s" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "Enviament %d temporitzat per a ser rejutjat amb èxit." msgstr[1] "Enviaments %d temporitzats per a ser rejutjats amb èxit." -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "Millor solucions per a %s" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, 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:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, 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/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "El nom d'usuari només pot contenir lletres, números i guions baixos." -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Zona horària" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Llenguatge preferit" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "Subscriu-te al nostre butlletí?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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: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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Registra't" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "Clau d'Activació Invàlida" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Error d'autenticació" @@ -3461,77 +3490,77 @@ msgstr "" msgid "Language statistics" msgstr "Estadístiques de llenguatge" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Estat" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Matriu de versions" +msgid "Version" +msgstr "Versió" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Enviament de %(problem)s per %(user)s" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Tots els enviaments" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Tots els meus enviaments" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Tots els enviaments per %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Tots els enviaments per a %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "Els meus enviaments per a %(problem)s" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Els enviaments de %(user)s per a %(problem)s" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "Els meus enviaments per a %(contest)s" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "Els enviaments de %(user)s per a %(contest)s" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "Els enviaments de {user} per {problem} en {contest}" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "Els enviaments de {user} per al problema {number} en {contest}" @@ -3586,102 +3615,157 @@ msgstr "ningú" msgid "New Ticket Message For: %s" msgstr "Nou missatge de Ticket per a: %s" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "Activar Autenticació en Dos Passos" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "Deshabilitar l'Autenticació en Dos Passos" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "Resposta WebAuthn invàlida" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "Nom invàlid" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 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:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "Realitzeu Autenticació en Dos Passos" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "No hi ha tal usuari" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "No hi ha cap usuari amb la id \"%s\"." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "El meu compte" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Usuari %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Iniciar sessió" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j M Y, G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "Preparant les teves dates..." -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "Descarrega les teves dades" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "No es pot editar el perfil" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Actualitzat al lloc web" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Edita el perfil" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "Token API de l'usuari generat" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "Token API de l'usuari esborrat" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "Codis Scratch de l'usuari generat" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Taula de classificació" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "Esteu segur que voleu rejutjar TOTS els enviaments?" @@ -3707,13 +3791,13 @@ msgstr "Acaba" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "Inhabilita" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "Habilita" @@ -3733,49 +3817,50 @@ msgstr "" msgid "Edit user" msgstr "Editar usuari" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Hola, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Tanca la sessió" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Iniciar sessió" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "o" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "Registra't" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "espectador" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "Aquesta aplicació funciona millor amb JavaScript activat." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Editar" @@ -3975,15 +4060,15 @@ msgstr "Puntuació" msgid "No votes" msgstr "Sense vots" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4064,7 +4149,7 @@ msgstr "Calendari" msgid "Info" msgstr "Informació" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Estadístiques" @@ -4279,7 +4364,7 @@ msgstr "Tasa de AC" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Usuaris" @@ -4287,7 +4372,7 @@ msgstr "Usuaris" msgid "Editorials" msgstr "Editorials" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "Editorial" @@ -4452,19 +4537,19 @@ msgstr "Eliminar la Descalificació" msgid "Disqualify" msgstr "Descalificar" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "Estàs segur que vols descalificar aquesta participació?" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 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:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "Veure la participació de l'usuari" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Mostrar organitzacions" @@ -4635,6 +4720,17 @@ msgstr "Data:" msgid "Reason:" msgstr "Motiu:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Usuari" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Temps" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "No hi ha cap solicitud per a aprovar." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "Esborrar?" @@ -4687,59 +4783,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "Entra un nou codi per al problema clonat:" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "Veure el YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "Mostra les columnes:" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "Prefixe de sortida" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "Límit de sortida" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "Verificador" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "Arguments del generador" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Tipus" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "Fitxer d'entrada" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "Fitxer de sortida" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "Casos de prova preliminars?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Envia!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "Afegeix nou cas" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "Autor/a:" msgstr[1] "Autors/es:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "Filtra per tipus..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "Problemes populars" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Categoria" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Tipus" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "Deixa-ho buit per no filtrar per llenguatge" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "Deixa-ho buit per no filtrar per resultat" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "Es necessiten valors vàlids per les ID d'inici i de finalització." -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "La ID de finalització ha de ser posterior a la d'inici." -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, python-brace-format msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" msgstr "Esteu a punt de rejutjar {count} enviaments. Segur?" -#: templates/problem/manage_submission.html:96 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "Esteu a punt de rejutjar uns quants enviaments. Segur?" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "Rejutjar Enviaments" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "Filtra per ID:" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "ID d'inici:" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "ID de final:" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "Aquest rang inclou ambdós punts." -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "Filtra per llenguatge:" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "Rejutja els enviaments seleccionats" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "Recalifica Tot" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "Això repuntuarà %(count)s enviament." msgstr[1] "Això repuntuarà %(count)s enviaments." -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "Estàs segur que vols repuntuar %(count)s enviament?" msgstr[1] "Estàs segur que vols repuntuar %(count)s enviaments?" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "Repuntua tots els enviaments" @@ -4927,11 +5031,11 @@ msgstr "Punts:" msgid "(partial)" msgstr "(parcial)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Temps límit:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Límit de memòria:" @@ -4968,14 +5072,6 @@ msgstr "Demanar aclariment" msgid "Report an issue" msgstr "Notifica un problema" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Temps Límit:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Límit de Memòria:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Cerca de problema" @@ -5013,8 +5109,8 @@ msgstr "Tipus de problemes" msgid "Point range" msgstr "Rang de punts" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Vés" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "Aleatori" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5035,31 +5131,31 @@ msgstr "Resultat" msgid "Date" msgstr "Data" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "El teu codi pot contenir com a màxim 65536 caràcters." -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "Atenció!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "El teu llenguatge per defecte, %(language)s, no està disponible per aquest problema i ha estat deseleccionat." -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "Tens 0 enviaments disponibles" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "No hi ha cap jutge disponible per a aquest problema." @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "Nom d'usurari o contrasenya incorrecte." @@ -5267,7 +5425,7 @@ msgstr "L'equip de %(site_name)s" msgid "Password reset on %(site_name)s" msgstr "Reinici de contrasenya en %(site_name)s" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Continua >" @@ -5280,36 +5438,40 @@ msgstr "El registre està tancat actualment. Siusplau contacta amb un administra msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." msgstr "T'has registrat amb èxit. Un correu ha estat enviat a l'adreça que has proporcionat per a confirmar el teu registre." -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Correu electrònic" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(de nou, per confirmar)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(tria la ciutat més propera)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "tria del mapa" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "Llenguatge per defecte" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "Organitzacions afiliades" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "Avisa'm sobre concursos vinents" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "Registra't!" @@ -5343,7 +5505,7 @@ 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:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5351,17 +5513,17 @@ msgid "Enable Two Factor Authentication" msgstr "Activar Autenticació en Dos Passos" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 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:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "No s'ha pogut connectar amb el servidor." @@ -5462,8 +5624,8 @@ msgid "Judges" msgstr "Jutges" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Matriu de Versions" +msgid "Versions" +msgstr "Versions" #: templates/submission/info-base.html:8 #, python-format @@ -5487,27 +5649,27 @@ msgstr "S'ha produït un error intern mentres es puntuava." msgid "Error information" msgstr "Informació d'error" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "Estàs segur que vols rejutjar?" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "Filtra per estat..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "Filtra per llenguatge..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Filtra enviaments" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Total:" -#: templates/submission/list.html:350 +#: 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." @@ -5544,7 +5706,7 @@ msgstr "Mostra l'estat" msgid "View raw source" msgstr "Veure el codi font" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Torna-ho a enviar" @@ -5630,15 +5792,15 @@ msgstr "Passar les proves preliminars no guaranteix el mateix resultat en els ca msgid "Submission aborted!" msgstr "Enviament avortat!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Veure el codi font" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "Prem Ctrl-Enter o Command-Enter per a avortar." -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "Avorta" @@ -5671,33 +5833,33 @@ msgstr "Reobert: " msgid "Closed: " msgstr "Tancat: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "Activar les notificacions d'escriptori" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "Mostra només els meus tickets" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "Usuari remitent" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "Títol" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "Destinataris" @@ -5748,152 +5910,152 @@ msgstr "Notes de la persona assignada" msgid "Nothing here." msgstr "Aquí no hi ha res." -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Classificació" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "Cerca per l'adreça..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 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:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "Això invalidarà qualsevol token API anterior." -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 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:115 +#: templates/user/edit-profile.html:110 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:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "Generant..." -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "Elimina" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 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:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "Generar" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 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:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "No podràs veure els teus codis Scratch després de que deixis aquesta pàgina!" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Autodescripció:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "Tria la ciutat més propera" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Zona horària:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Llenguatge:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "Tema de l'editor:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Motor matemàtic:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "Organitzacions afiliades:" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "Canviar avatar" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "Canvia la teva contrasenya" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "S'ha activat l'autenticació de dos passos:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "Token de l'API:" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "Ocult" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "S'ha activat l'autenticació de dos passos:" + +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "Codis Scratch:" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "Ocult" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "S'ha desactivat l'autenticació de dos passos:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "Token de l'API:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "Claus de seguretat:" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "Eliminar" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "Entreu un nom per a aquesta clau" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "Afegir" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "Script d'usuari:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "Actualitzar perfil" diff --git a/locale/ca/LC_MESSAGES/djangojs.po b/locale/ca/LC_MESSAGES/djangojs.po index c8e6d1c6c2..c6be9021ba 100644 --- a/locale/ca/LC_MESSAGES/djangojs.po +++ b/locale/ca/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Catalan\n" "Language: ca_ES\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d dia %h:%m:%s" msgstr[1] "%d dies %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/de/LC_MESSAGES/django.po b/locale/de/LC_MESSAGES/django.po index 0747eaa223..1817c8f1db 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:49\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -17,122 +17,123 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Katalanisch" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Deutsch" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Englisch" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Spanisch" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Französisch" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Kroatisch" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Ungarisch" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japanisch" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Koreanisch" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Brasilianisches Portugiesisch" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Rumänisch" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Russisch" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Serbisch (Lateinisches Alphabet)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Türkisch" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnamesisch" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Chinesisch (vereinfacht)" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Chinesisch (traditionell)" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "Aktivierung Erfolgreich!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "Registrierung abgeschlossen" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "Registrierung nicht erlaubt" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Startseite" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Kommentare verstecken" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d Kommentar erfolgreich versteckt." msgstr[1] "%d Kommentare erfolgreich versteckt." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Kommentare verstecken" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "" #: judge/admin/contest.py:31 @@ -140,22 +141,22 @@ msgid "Included contests" msgstr "" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Problem" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "" @@ -187,97 +188,98 @@ msgstr "Zugang" msgid "Justice" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "Systematik" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -308,9 +310,8 @@ msgstr "" msgid "Limits" msgstr "Grenzen" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Programmiersprache" @@ -318,106 +319,95 @@ msgstr "Programmiersprache" msgid "History" msgstr "" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Autoren" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "" -#: judge/admin/problem.py:193 +#: 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:197 -msgid "Set publish date to now" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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 -msgid "Mark problems as public" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" +#: judge/admin/profile.py:119 +msgid "date joined" msgstr "" -#: judge/admin/profile.py:113 -msgid "date joined" +#: judge/admin/profile.py:123 +msgid "Recalculate scores" msgstr "" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Nicht" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "" -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:222 +msgid "time" msgstr "" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:226 +msgid "memory" msgstr "" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:238 -msgid "Memory" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" msgstr "" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -523,7 +517,8 @@ msgstr "" msgid "Comment body" msgstr "" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -739,108 +742,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" +#: judge/models/choices.py:24 +msgid "Follow site theme" msgstr "" #: judge/models/choices.py:60 -msgid "SVG only" +msgid "Leave as LaTeX" msgstr "" #: judge/models/choices.py:61 -msgid "MathML only" +msgid "SVG only" msgstr "" #: judge/models/choices.py:62 -msgid "MathJax with SVG fallback" +msgid "MathML only" msgstr "" #: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "" + +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -896,16 +905,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -913,7 +917,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "" @@ -962,12 +966,12 @@ msgstr "" msgid "end time" msgstr "" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1141,7 +1145,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1154,7 +1158,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1202,213 +1206,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1460,7 +1464,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1513,7 +1517,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1525,7 +1529,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1562,7 +1566,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1586,280 +1590,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,7 +1876,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1932,7 +1923,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -1980,6 +1971,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "" @@ -2098,7 +2101,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2588,15 +2595,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2604,141 +2611,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2802,16 +2809,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2868,40 +2865,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2956,45 +2977,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3003,111 +3024,111 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3136,249 +3157,257 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "erfolgreich" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3461,77 +3490,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3586,102 +3615,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3707,13 +3791,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3733,49 +3817,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -3975,15 +4060,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4064,7 +4149,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4279,7 +4364,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4287,7 +4372,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4452,19 +4537,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4635,6 +4720,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4687,59 +4783,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "" msgstr[1] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4927,11 +5031,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "" @@ -4968,14 +5072,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5013,8 +5109,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5035,31 +5131,31 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5267,7 +5425,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5280,36 +5438,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5343,7 +5505,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5351,17 +5513,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5462,7 +5624,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5487,27 +5649,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5544,7 +5706,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5630,15 +5792,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5671,33 +5833,33 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5748,152 +5910,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/de/LC_MESSAGES/djangojs.po b/locale/de/LC_MESSAGES/djangojs.po index 47a3764a81..b4d4c6eebc 100644 --- a/locale/de/LC_MESSAGES/djangojs.po +++ b/locale/de/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: German\n" "Language: de_DE\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 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:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "" diff --git a/locale/el/LC_MESSAGES/django.po b/locale/el/LC_MESSAGES/django.po index be4d314149..316c53880c 100644 --- a/locale/el/LC_MESSAGES/django.po +++ b/locale/el/LC_MESSAGES/django.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -17,145 +17,146 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Καταλανικά" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Γερμανικά" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Ελληνικά" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Αγγλικά" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Ισπανικά" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Γαλλικά" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Κροάτικα" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Ουγγρικά" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Ιαπωνικά" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Κορεατικά" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Πορτογαλικά Βραζιλίας" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Ρουμανικά" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Ρωσικά" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Σερβικά (Λατινικά)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Τουρκικά" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Βιετναμέζικα" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Απλοποιημένα Κινέζικα" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Παραδοσιακά Κινέζικα" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "Επιτυχής Ενεργοποίηση!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "Η Εγγραφή Ολοκληρώθηκε" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "Δεν Επιτρέπεται Εγγραφή" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Αρχική" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Περιεχόμενο" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Απόκρυψη σχολίων" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d σχόλιο αποκρύφθηκε επιτυχώς." msgstr[1] "%d σχόλια αποκρύφθηκαν επιτυχώς." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Απόκρυψη σχολίων" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Επανεμφάνιση σχολίων" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d σχόλιο επανεμφανίστηκε επιτυχώς." msgstr[1] "%d σχόλια επανεμφανίστηκαν επιτυχώς." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Επανεμφάνιση σχολίων" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Συσχετιζόμενη σελίδα" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "συσχετιζόμενη σελίδα" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Συμπεριλαμβανόμενοι διαγωνισμοί" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Πρόβλημα" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Προβλήματα" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Κρίση εκ νέου" @@ -187,97 +188,98 @@ msgstr "Πρόσβαση" msgid "Justice" msgstr "Δικαιοσύνη" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Σήμανση διαγωνισμών ως ορατών" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d διαγωνισμός επισημάνθηκε επιτυχώς ως ορατός." msgstr[1] "%d διαγωνισμοί επισημάνθηκαν επιτυχώς ως ορατοί." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Σήμανση διαγωνισμών ως ορατών" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Σήμανση διαγωνισμών ως κρυφών" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d διαγωνισμός επισημάνθηκε επιτυχώς ως κρυφός." msgstr[1] "%d διαγωνισμοί επισημάνθηκαν επιτυχώς ως κρυφοί." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "Σήμανση διαγωνισμών ως κρυφών" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Κλείδωμα υποβολής διαγωνισμών" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d διαγωνισμός κλειδώθηκε επιτυχώς." msgstr[1] "%d διαγωνισμοί κλειδώθηκαν επιτυχώς." -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "Κλείδωμα υποβολής διαγωνισμών" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Ξεκλείδωμα υποβολής διαγωνισμών" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d διαγωνισμός ξεκλειδώθηκε επιτυχώς." msgstr[1] "%d διαγωνισμοί ξεκλειδώθηκαν επιτυχώς." -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "Ξεκλείδωμα υποβολής διαγωνισμών" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." msgstr[0] "%d υποβολή προγραμματίστηκε επιτυχώς για επανεξέταση." msgstr[1] "%d υποβολές προγραμματίστηκαν επιτυχώς για επανεξέταση." -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Επανυπολογισμός αποτελεσμάτων" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d συμμετοχή επανυπολογίστηκε." msgstr[1] "%d συμμετοχές επανυπολογίστηκαν." -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "Επανυπολογισμός αποτελεσμάτων" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "όνομα χρήστη" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "εικονικό" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "διαδρομή συνδέσμου" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Περίληψη" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "χρήστης" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "αντικείμενο" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Προβολή στην ιστοσελίδα" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "Ταξινομία" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Πόντοι" @@ -308,9 +310,8 @@ msgstr "Πόντοι" msgid "Limits" msgstr "Όρια" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Γλώσσα" @@ -318,106 +319,95 @@ msgstr "Γλώσσα" msgid "History" msgstr "Ιστορικό" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Συγγραφείς" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "συγγραφείς" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Ορισμός ημερομηνίας δημοσίευσης ως τώρα" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "Η ημερομηνία δημοσίευσης %d του προβλήματος ενημερώθηκε επιτυχώς." msgstr[1] "Η ημερομηνία δημοσίευσης %d των προβλημάτων ενημερώθηκε επιτυχώς." -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "Ορισμός ημερομηνίας δημοσίευσης ως τώρα" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Επισήμανση προβλημάτων ως δημόσια" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "%d πρόβλημα επισημάνθηκε επιτυχώς ως δημόσιο." msgstr[1] "%d προβλήματα επισημάνθηκαν επιτυχώς ως δημόσια." -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "Επισήμανση προβλημάτων ως δημόσια" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Επισήμανση προβλημάτων ως ιδιωτικό" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "%d πρόβλημα επισημάνθηκε επιτυχώς ως ιδιωτικό." msgstr[1] "%d προβλήματα επισημάνθηκαν επιτυχώς ως απόρρητα." -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "Επισήμανση προβλημάτων ως ιδιωτικό" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "πρόβλημα" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "ζώνη ώρας" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Χρήστης" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "email" -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Email" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Ζώνη ώρας" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "ημερ/νία εγγραφής" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Επανυπολογισμός βαθμολογίας" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d χρήστης επανυπολογίζει τη βαθμολογία του." msgstr[1] "%d χρήστες επανυπολογίζουν τη βαθμολογία τους." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Επανυπολογισμός βαθμολογίας" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "Αναπαραγωγή" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Περιγραφή" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Πληροφορίες" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Δυνατότητες" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Κανένα" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s σε %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Επανεξέταση των επιλεγμένων υποβολών" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Δεν έχετε την άδεια να επανεξετάσετε υποβολές." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Δεν έχετε την άδεια να επανεξετάσετε ΤΟΣΕΣ πολλές υποβολές." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Επανεξέταση των επιλεγμένων υποβολών" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Αναβαθμολόγηση των επιλεγμένων υποβολών" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d υποβολή αναβαθμολογήθηκε επιτυχώς." msgstr[1] "%d υποβολές αναβαθμολογήθηκαν επιτυχώς." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Αναβαθμολόγηση των επιλεγμένων υποβολών" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "κωδικός προβλήματος" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Κωδικός προβλήματος" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "όνομα προβλήματος" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Όνομα προβλήματος" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "ώρα" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Ώρα" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "μνήμη" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Μνήμη" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "γλώσσα" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "Κλειδωμένο" @@ -523,7 +517,8 @@ msgstr "Διαδικτυακός Κριτής" msgid "Comment body" msgstr "Σώμα σχολίου" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Το κομμάτι σου είναι σιωπηλό, μικρέ βάτραχε." @@ -616,121 +611,129 @@ msgstr "Ισοπαλίες θα σπάνε από το σύνολο χρόνων msgid "IOI (pre-2016)" msgstr "IOI (προ του 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "Τα διακριτικά ελέγχου ταυτότητας δύο παραγόντων πρέπει να είναι {count} δεκαδικό ψηφίο." msgstr[1] "Τα διακριτικά ελέγχου ταυτότητας δύο παραγόντων πρέπει να είναι {count} δεκαδικά ψηφία." -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Μη έγκυρο διακριτικό ελέγχου ταυτότητας δύο παραγόντων." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "Οι κωδικοί scratch πρέπει να είναι 16 χαρακτήρες βάσης32." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "Μη έγκυρος κωδικός scratch." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Εγγραφείτε σε ενημερώσεις διαγωνισμού" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Ενεργοποίηση πειραματικών λειτουργιών" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "Πρέπει να λύσετε τουλάχιστον ένα πρόβλημα πριν να έχετε τη δυνατότητα να ενημερώσετε το προφίλ σας." -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "Δεν μπορείτε να είστε μέρος σε περισσότερους από {count} δημόσιου οργανισμού." msgstr[1] "Δεν μπορείτε να είστε μέλος σε περισσότερους από {count} δημόσιους οργανισμούς." -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Λήψη σχολίων;" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Λήψη υποβολών;" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "Φιλτράρισμα ανά glob κώδικα προγράμματος:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "Αφήστε κενό για να συμπεριλάβετε όλες τις υποβολές" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Φιλτράρισμα κατά αποτέλεσμα:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "Παρακαλώ επιλέξτε τουλάχιστον ένα πράγμα για λήψη." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Οποιοσδήποτε κριτής" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Όνομα Χρήστη" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Κωδικόs πρόσβασης" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Μη έγκυρο μήκος κωδικού." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Άκυρη WebAuthn απάντηση." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "Δεν υπάρχει πρόκληση WebAuthn." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "Μη έγκυρο αναγνωριστικό ID διαπιστευτηρίου WebAuthn." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "Μη έγκυρο διακριτικό ελέγχου ταυτότητας δύο παραγόντων ή κωδικού scratch." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "Πρέπει να καθορίσετε είτε totp_token ή webauthn_response." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Ο κωδικός προβλήματος πρέπει να είναι ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Πρόβλημα με αυτόν τον κωδικό υπάρχει ήδη." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Το αναγνωριστικό του διαγωνισμού πρέπει να είναι ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Διαγωνισμός με αυτό το κλειδί υπάρχει ήδη." @@ -739,108 +742,114 @@ msgstr "Διαγωνισμός με αυτό το κλειδί υπάρχει ή msgid "N j, Y, g:i a" msgstr "j N Y, g:i a" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "στις {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "Μη αξιολογημένο" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "Ακολούθησε το θέμα του συστήματος" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Αφήστε ως LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "SVG μόνο" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "MathML μόνο" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax με SVG εναλλακτική" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Ανίχνευση καλύτερης ποιότητας" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "Ακολουθήστε το προεπιλεγμένο σύστημα" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Φωτεινό" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Σκοτεινό" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "Ο κωδικός σελίδας πρέπει να είναι ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "σχολιαστής" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "ώρα δημοσίευσης" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "συσχετιζόμενη σελίδα" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "ψήφοι" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "σώμα σχολίου" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "κρυφό" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "γονέας" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "αναθεωρήσεις" + +#: judge/models/comment.py:39 msgid "comment" msgstr "σχόλιο" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "σχόλια" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Εξήγηση για %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "ψήφος σχολίου" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "ψήφοι σχολίου" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "Παράκαμψη κλειδώματος σχολίου" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "κλείδωμα σχολίου" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "κλειδαριές σχολίων" @@ -896,16 +905,11 @@ msgstr "αναγνωριστικό διαγωνισμού" msgid "contest name" msgstr "όνομα διαγωνισμού" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "συγγραφείς" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργαστούν το διαγωνισμό." -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "επιμελητές" @@ -913,7 +917,7 @@ msgstr "επιμελητές" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργαστούν το διαγωνισμό, αλλά δεν θα εμφανίζονται ως συγγραφείς." -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "δοκιμαστές" @@ -949,12 +953,12 @@ msgstr "Αυτοί οι χρήστες θα είναι σε θέση να παρ msgid "description" msgstr "περιγραφή" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "προβλήματα" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "ώρα έναρξης" @@ -962,12 +966,12 @@ msgstr "ώρα έναρξης" msgid "end time" msgstr "ώρα λήξης" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "χρονικό όριο" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "δημόσια ορατό" @@ -1021,7 +1025,7 @@ msgstr "χαμηλότερη αξιολόγηση" #: judge/models/contest.py:113 msgid "Do not rate users who have a lower rating." -msgstr "" +msgstr "Να μην αξιολογούνται οι χρήστες που έχουν χαμηλότερη βαθμολογία." #: judge/models/contest.py:114 msgid "rating ceiling" @@ -1029,7 +1033,7 @@ msgstr "ανώτατο όριο αξιολόγησης" #: judge/models/contest.py:115 msgid "Do not rate users who have a higher rating." -msgstr "" +msgstr "Να μην αξιολογούνται οι χρήστες που έχουν υψηλότερη βαθμολογία." #: judge/models/contest.py:117 msgid "rate all" @@ -1087,11 +1091,11 @@ msgstr "εμφάνιση μερικών ρυθμίσεων φόρμας" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "Εάν θα εμφανίζεται μια ενότητα που περιέχει ρυθμίσεις διαγωνισμού στη σελίδα διαγωνισμού ή όχι." -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "ιδιωτικό για οργανισμούς" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "οργανισμοί" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "Εάν ιδιωτικό για οργανισμό, μόνο αυτές οι κατηγορίες μπορούν να δουν το διαγωνισμό." #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "Εικόνα OpenGraph" @@ -1141,7 +1145,7 @@ msgstr "ο αριθμός των ζωντανών συμμετεχόντων" msgid "contest summary" msgstr "σύνοψη διαγωνισμού" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "Απλό κείμενο, που εμφανίζεται στην ετικέτα meta, π.χ. για τα μέσα κοινωνικής δικτύωσης." @@ -1154,7 +1158,7 @@ msgstr "κωδικός πρόσβασης" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "personae non gratae" @@ -1202,213 +1206,213 @@ msgstr "πόντοι ακρίβειας" msgid "Number of digits to round points to." msgstr "Αριθμός ψηφίων στρογγυλοποίησης πόντων." -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Δείτε ιδιωτικούς διαγωνισμούς" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Επεξεργασία δικών σας διαγωνισμών" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Επεξεργασία όλων των διαγωνισμών" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "Κλωνοποίηση διαγωνισμού" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "Διαγωνισμός MOSS" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Αξιολόγηση διαγωνισμών" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "Κωδικοί πρόσβασης διαγωνισμού" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "Δημιουργία ιδιωτικών διαγωνισμών" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "Αλλαγή ορατότητας διαγωνισμού" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "Επεξεργαστείτε το script ετικέτας προβλήματος διαγωνισμού" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "Αλλαγή κατάστασης κλειδώματος του διαγωνισμού" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "διαγωνισμός" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "διαγωνισμοί" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "σχετικός διαγωνισμός" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "βαθμολογία" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "αθροιστικός χρόνος" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "έχει αποκλειστεί" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "Εάν αυτή η συμμετοχή έχει αποκλειστεί." -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "τάι μπρέικ πεδίο" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "id εικονικής συμμετοχής" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 σημαίνει μη εικονική, εναλλακτικά η n-ιοστή εικονική συμμετοχή." -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "ειδικά δεδομένα μορφής διαγωνισμού" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" -msgstr "" +msgstr "Συμμετοχή του/της %(user)s στο %(contest)s" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" -msgstr "" +msgstr "%(user)s σε %(contest)s, v%(id)d" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" -msgstr "" +msgstr "%(user)s σε %(contest)s" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "συμμετοχή διαγωνισμού" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "συμμετοχές διαγωνισμού" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "πόντοι" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "εν μέρει" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "είναι προδοκιμασμένο" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "σειρά" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "παράκαμψη μήκους προθέματος εξόδου" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "μέγιστες υποβολές" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Μέγιστος αριθμός υποβολών για αυτό το πρόβλημα ή αφήστε κενό για χωρίς όριο." -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "Γιατί να συμπεριλάβετε πρόβλημα στο οποίο δεν μπορείτε να υποβάλετε;" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "πρόβλημα διαγωνισμού" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "προβλήματα διαγωνισμού" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "υποβολή" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "συμμετοχή" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "Εάν αυτή η υποβολή έτρεξε μόνο σε προδοκιμές." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "υποβολή διαγωνισμού" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "υποβολές διαγωνισμού" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "βαθμίδα" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "αξιολόγηση" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "ακατέργαστη αξιολόγηση" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "επίδοση στο διαγωνισμό" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "τελευταία αξιολόγηση" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "αξιολόγηση διαγωνισμού" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "αξιολογήσεις διαγωνισμού" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "αποτέλεσμα διαγωνισμού moss" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "αποτελέσματα διαγωνισμού moss" @@ -1460,7 +1464,7 @@ msgstr "τίτλος ανάρτησης" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "δημόσια ορατότητα" @@ -1513,7 +1517,7 @@ msgstr "όνομα κατηγορίας προβλήματος" msgid "problem type" msgstr "τύπος προβλήματος" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "τύποι προβλήματος" @@ -1525,7 +1529,7 @@ msgstr "ID ομάδας προβλημάτων" msgid "problem group name" msgstr "όνομα ομάδας προβλημάτων" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "ομάδα προβλημάτων" @@ -1562,7 +1566,7 @@ msgstr "URL για το εικονίδιο." msgid "license text" msgstr "κείμενο άδειας χρήσης" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "άδεια" @@ -1586,280 +1590,267 @@ msgstr "Ορατό αν το πρόβλημα λυθεί" msgid "Only own submissions" msgstr "Μόνο δικές μου υποβολές" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "κωδικός προβλήματος" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "Ένας σύντομος, μοναδικός κωδικός για το πρόβλημα, που χρησιμοποιείται στο URL μετά το /problem/" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "όνομα προβλήματος" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "Το πλήρες όνομα του προβλήματος, όπως φαίνεται στη λίστα προβλημάτων." -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "σώμα προβλήματος" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "δημιουργοί" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργάζονται το πρόβλημα και να εμφανίζονται ως συγγραφείς." -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Αυτοί οι χρήστες θα είναι σε θέση να επεξεργάζονται το πρόβλημα, αλλά δεν θα εμφανίζονται ως συγγραφείς." -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "Αυτοί οι χρήστες θα είναι σε θέση να δουν το ιδιωτικό πρόβλημα, αλλά όχι να το επεξεργαστούν." -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "Ο τύπος του προβλήματος, όπως εμφανίζεται στη σελίδα του προβλήματος." -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "Η ομάδα του προβλήματος, όπως εμφανίζεται στην Κατηγορία στη λίστα προβλημάτων." -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "Το χρονικό όριο για αυτό το πρόβλημα, σε δευτερόλεπτα. Κλασματικά δευτερόλεπτα (π.χ. 1.5) υποστηρίζονται." -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "όριο μνήμης" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "Το όριο μνήμης για αυτό το πρόβλημα, σε kilobytes (π.χ. 256mb = 262144 kilobytes)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "βραχυκύκλωμα" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Πόντοι που απονέμονται για την ολοκλήρωση του προβλήματος. Οι πόντοι εμφανίζονται με επίθεμα 'p' αν βαθμολογείται μερικώς." -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "επιτρέπεται μερική βαθμολόγηση" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "επιτρεπόμενες γλώσσες" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "Λίστα επιτρεπόμενων γλωσσών υποβολής." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "χειροκίνητη διαχείριση" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "Αν οι κριτές θα επιτρέπεται να διαχειρίζονται δεδομένα ή όχι." -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "ημερομηνία δημοσίευσης" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "Δεν έχει μαγική ικανότητα αυτόματης δημοσίευσης λόγω οπισθόδρομης συμβατότητας." -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "Απαγορεύει στους επιλεγμένους χρήστες την υποβολή σε αυτό το πρόβλημα." -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "Η άδεια χρήσης υπό την οποία δημοσιεύεται αυτό το πρόβλημα." -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "σύνοψη προβλήματος" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "αριθμός χρηστών" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "Ο αριθμός των χρηστών που έλυσαν το πρόβλημα." -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "ρυθμός επίλυσης" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "επιτρέπει πλήρη πρόσβαση markdown" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "ορατότητα πηγής υποβολής" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "Εάν ιδιωτικό, μόνο αυτοί οι οργανισμοί μπορούν να δουν το πρόβλημα." -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "Δείτε κρυμμένα προβλήματα" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "Επεξεργασία δικών σας προβλημάτων" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "Επεξεργασία όλων των προβλημάτων" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "Επεξεργασία όλων των δημόσιων προβλημάτων" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "Επεξεργασία προβλημάτων με πλήρη markup" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Κλωνοποίηση προβλήματος" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "Αλλαγή is_public πεδίου" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "Αλλαγή is_manually_managed πεδίου" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "Δείτε ιδιωτικά-οργανισμών προβλήματα" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "γλώσσα" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "μεταφρασμένο όνομα" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "μεταφρασμένη περιγραφή" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "μετάφραση προβλήματος" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "μεταφράσεις προβλήματος" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "διευκρινισμένο πρόβλημα" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "σώμα διευκρίνησης" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "χρονοσφραγίδα διευκρίνησης" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "διευκρίνηση προβλήματος" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "διευκρινίσεις προβλήματος" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "ειδικό όριο πόρων για τη γλώσσα" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "ειδικά όρια πόρων για τη γλώσσα" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "συσχετιζόμενο πρόβλημα" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "ημερομηνία δημοσίευσης" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "περιεχόμενο εξήγησης" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "Δείτε κρυφές λύσεις" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "λύση" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "λύσεις" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" -msgstr "" +msgstr "Προτεινόμενα σημεία" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." -msgstr "" +msgstr "Ο αριθμός των πόντων που ο ψηφοφόρος πιστεύει ότι αξίζει αυτό το πρόβλημα." -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "ψηφοφόρος" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" -msgstr "" +msgstr "Ώρα ψηφοφορίας" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." -msgstr "" +msgstr "Ήρθε η ώρα να διεξαχθεί αυτή η ψηφοφορία." -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "σημείωση" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." -msgstr "" +msgstr "Αιτιολόγηση για την τιμή των πόντων προβλήματος." -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" -msgstr "" +msgstr "Πρόβλημα ψήφου" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" -msgstr "" +msgstr "Πρόβλημα ψήφων" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,8 +1876,8 @@ msgid "Non-trailing spaces" msgstr "Χωρίς κενά στο τέλος" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "Μη ταξινομημένο" +msgid "Sorted" +msgstr "Ταξινομημένα" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1932,7 +1923,7 @@ msgstr "απενεργοποίηση BigInteger / BigDecimal" msgid "checker arguments" msgstr "ορίσματα ελεγκτή" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Ορίσματα ελεγκτή ως αντικείμενο JSON." @@ -1980,6 +1971,18 @@ msgstr "αξία πόντου" msgid "case is pretest?" msgstr "η περίπτωση είναι προ-δοκιμαστική;" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "ορίσματα ελεγκτή ως αντικείμενο JSON" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "τίτλος οργανισμού" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "Επεξεργασία όλων των οργανισμών" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "οργανισμός" @@ -2096,9 +2099,9 @@ msgstr "μέλη" #: judge/models/profile.py:128 #, python-format msgid "%(class)s in %(organization)s" -msgstr "" +msgstr "%(class)s σε %(organization)s" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "κατηγορία" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "Ace θέμα" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "θέμα ιστότοπου" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "τελευταία ώρα πρόσβασης" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "τελευταία IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "εμφάνιση βαθμίδας" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "Κανονικός Χρήστης" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "Δημιουργός Προβλημάτων" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "Δημιουργός Προβλημάτων" msgid "Admin" msgstr "Διαχειριστής" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "σίγαση σχολίου" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "Μερικοί χρήστες είναι στα καλύτερά τους όταν είναι σιωπηλοί." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "μη καταχωρημένος χρήστης" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "Ο χρήστης δεν θα βαθμονομηθεί." -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." -msgstr "" +msgstr "Ο χρήστης δεν θα είναι σε θέση να ψηφίσει για την αξία των πόντων των προβλημάτων." -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "script χρήστη" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "Καθορισμένη από το χρήστη JavaScript για εξατομίκευση ιστότοπου." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "τρέχων διαγωνισμός" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "μηχανή μαθηματικών" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "Η μηχανή απεικόνισης που χρησιμοποιείται για την απεικόνιση μαθηματικών." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "TOTP 2FA ενεργοποιημένο" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "Τσεκάρετε για να ενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων βάσει TOTP." -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn 2FA ενεργοποιημένο" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "Τσεκάρετε για να ενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων βάσει WebAuthn." -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "TOTP κλειδί" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "32 χαρακτήρων βάσης32-κωδικοποιημένο κλειδί για TOTP." -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "Το κλειδί TOTP πρέπει να είναι άδειο ή βάσης32." -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "κωδικοί scratch" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "JSON πίνακας 16 χαρακτήρων βάσης32-κωδικοποιημένων κωδικών για scratch." -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "Οι κωδικοί scratch πρέπει να είναι κενοί ή πίνακας JSON κωδικών 16 χαρακτήρων βάσης32." -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "τελευταίος κωδικός χρόνου TOTP" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "Διακριτικό API" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "Hex-κωδικοποιημένο διακριτικό πρόσβασης API 64 χαρακτήρων." -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "Το διακριτικό API πρέπει να είναι Κανένα ή δεκαεξαδικό" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "εσωτερικές σημειώσεις" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "Σημειώσεις για διαχειριστές σχετικά με αυτόν τον χρήστη." -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "ώρα τελευταίας λήψης δεδομένων" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "παράκαμψη εμφάνιση ονόματος" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "Εμφάνιση ονόματος στη θέση του ονόματος χρήστη." -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "Δείχνει πράγματα ανάπτυξης σε εξέλιξη" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "Επεξεργασία ρυθμίσεων TOTP" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "προφίλ χρήστη" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "προφίλ χρηστών" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "όνομα συσκευής" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "διαπιστευτήρια ID" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "δημόσιο κλειδί" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "μετρητής υπογραφής" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "WebAuthn διαπιστευτήριο: %(name)s" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "WebAuthn διαπιστευτήριο" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "WebAuthn διαπιστευτήρια" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "ώρα αιτήματος" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "κατάσταση" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "Εκκρεμεί" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Εγκρίθηκε" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Απορρίφθηκε" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "αιτία" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "αίτηση συμμετοχής οργανισμού" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "αιτήσεις συμμετοχής οργανισμού" @@ -2479,11 +2486,11 @@ msgstr "Αν αυτός ο κριτής θα πρέπει να αποκλεισ #: judge/models/runtime.py:132 msgid "disable judge" -msgstr "" +msgstr "Απενεργοποίηση κριτή" #: judge/models/runtime.py:133 msgid "Whether this judge should be removed from judging queue." -msgstr "" +msgstr "Εάν αυτός ο κριτής πρέπει να αφαιρεθεί από την ουρά των κριτών." #: judge/models/runtime.py:134 msgid "judge online status" @@ -2557,7 +2564,7 @@ msgstr "Εσωτερικό Σφάλμα" #: judge/models/submission.py:31 judge/models/submission.py:52 msgid "Short Circuited" -msgstr "" +msgstr "Βραχυκύκλωμα" #: judge/models/submission.py:32 judge/models/submission.py:45 #: judge/models/submission.py:64 @@ -2588,15 +2595,15 @@ msgstr "Εσωτερικό Σφάλμα (εκτίμηση σφάλματος δ msgid "submission time" msgstr "ώρα υποβολής" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "χρόνος εκτέλεσης" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "χρήση μνήμης" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "χορηγηθέντες πόντοι" @@ -2604,141 +2611,141 @@ msgstr "χορηγηθέντες πόντοι" msgid "submission language" msgstr "γλώσσα υποβολής" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "κατάσταση" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "αποτέλεσμα" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "σφάλματα μεταγλώττισης" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "δεσμίδες περιπτώσεων" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "πόντοι δοκιμαστικής περίπτωσης" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "συνολικοί πόντοι δοκιμαστικής περίπτωσης" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "κρίθηκε στις" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "ώρα κρίσης υποβολής" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "τελευταία ημερομηνία κρίσης εκ νεόυ από admin" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "έτρεξε μόνο σε προδοκιμές" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "κλείδωμα υποβολής" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" -msgstr "" +msgstr "Υποβολή %(id)d από %(problem)s από %(user)s" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "Ακύρωση οποιασδήποτε υποβολής" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "Κρίση εκ νέου της υποβολής" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "Κρίση εκ νέου πολλών υποβολών" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "Υποβολή χωρίς όριο" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "Δείτε όλες τις υποβολές" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "Επανυποβολή υποβολής τρίτων" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "Αλλαγή κατάστασης κλειδώματος υποβολής" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "υποβολές" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "συσχετιζόμενη υποβολή" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "πηγαίος κώδικας" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" -msgstr "" +msgstr "Πηγή του %(submission)s" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "πηγή υποβολής" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "πηγές υποβολής" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "ID δοκιμαστικής περίπτωσης" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "σημαία κατάστασης" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "δυνατοί πόντοι" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "αριθμός δεσμίδας" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "σχόλια κριτή" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "εκτενή σχόλια κριτή" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "έξοδος προγράμματος" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "δοκιμαστική περίπτωση υποβολής" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "δοκιμαστικές περιπτώσεις υποβολής" @@ -2802,16 +2809,6 @@ msgstr "μήνυμα αιτήματος" msgid "ticket messages" msgstr "μηνύματα αιτήματος" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "Σελίδα [page] από [topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "Σελίδα %s από %s" - #: judge/ratings.py:194 msgid "Newbie" msgstr "Πρωτάρης" @@ -2868,40 +2865,64 @@ msgstr "Προετοιμασία των δεδομένων υποβολής" msgid "Preparing your comment data" msgstr "Προετοιμασία των δεδομένων σχολίου" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "Ο πάροχος email σας δεν επιτρέπεται λόγω ιστορικού κατάχρησης. Παρακαλούμε χρησιμοποιήστε έναν αξιόπιστο πάροχο email." + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "Σελίδα {page_number} από {total_pages}" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "Δεν επιτρέπονται κενές δεσμίδες." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "Πόντοι πρέπει να οριστούν για περιπτώση #%d που δεν είναι δεσμίδα." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "Αρχείο εισαγωγής για την περίπτωση %d δεν υπάρχει: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "Αρχείο εξόδου για την περίπτωση %d δεν υπάρχει: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "Η περίπτωση έναρξης δεσμίδας #%d χρειάζεται πόντους." -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "Προσπάθεια τερματισμού δεσμίδας εκτός μίας στην περίπτωση #%d." -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "Πώς έχετε αλλοιώσει το μονοπάτι zip;" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "Πώς έχετε αλλοιώσει το μονοπάτι της γεννήτριας;" @@ -2956,45 +2977,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "Σελίδα %d Αναρτήσεων" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "Σαχλαμαρίζουμε, ε;" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "Πρέπει να λύσετε τουλάχιστον ένα πρόβλημα πριν μπορέσετε να ψηφίσετε." -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "Το σχόλιο δεν βρέθηκε." -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "Δεν μπορείτε να ψηφίσετε για τα δικά σας σχόλια." -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Έχετε ήδη ψηφίσει." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Επεξεργάστηκε από την ιστοσελίδα" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "Επεξεργασία σχολίου" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "Δεν υπάρχει τέτοιος διαγωνισμός" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Αδυναμία εύρεσης διαγωνισμού με κλειδί \"%s\"." @@ -3003,111 +3024,111 @@ msgstr "Αδυναμία εύρεσης διαγωνισμού με κλειδί msgid "Contests" msgstr "Διαγωνισμοί" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "Αδυναμία εύρεσης τέτοιου διαγωνισμού." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Πρόσβαση στο διαγωνισμό \"%s\" απορρίφθηκε" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "Κλωνοποίηση Διαγωνισμού" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "Κλωνοποιημένος διαγωνισμός από %s" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "Ο διαγωνισμός δεν βρίσκεται σε εξέλιξη" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" δεν βρίσκεται σε εξέλιξη." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "Αποκλεισμένος από συμμετοχή" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "Έχετε κηρυχθεί persona non grata για αυτόν τον διαγωνισμό. Είστε μόνιμα αποκλεισμένοι από το να συμμετάσχετε σε αυτόν τον διαγωνισμό." -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "Αδυναμία εισόδου" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "Δεν έχετε τη δυνατότητα να συμμετάσχετε σε αυτόν τον διαγωνισμό." -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "Εισάγετε κωδικό πρόσβασης για το \"%s\"" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "Δεν είστε στο διαγωνισμό \"%s\"." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "Διαγωνισμοί %(month)s" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "%s Στατιστικά" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "%s Κατάταξη" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "Η συμμετοχή σας στο %(contest)s" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "Συμμετοχή του/της %(user)s στο %(contest)s" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "Ζωντανά" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Συμμετοχή" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "%s MOSS Αποτελέσματα" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "Εκτέλεση MOSS για %s..." -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "Ετικέτα διαγωνισμού: %s" @@ -3136,249 +3157,257 @@ msgstr "αλλοιωμένη σελίδα %s" msgid "Runtimes" msgstr "Χρόνοι εκτέλεσης" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "Δεν υπάρχει τέτοιος οργανισμός" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Αδυναμία εύρεσης οργανισμού με κλειδί \"%s\"." -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "Αδυναμία εύρεσης τέτοιου οργανισμού." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Οργανισμοί" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s Μέλη" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Εγγραφή στον οργανισμό" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Είστε ήδη μέλος αυτού του οργανισμού." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Αυτός ο οργανισμός δεν είναι ανοιχτός." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Αποχώρηση από τον οργανισμό" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "Δεν είστε στο \"%s\"." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "Δεν μπορείτε να αιτηθείτε να εγγραφείται στο %s" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "Έχετε ήδη ένα αίτημα σε εκκρεμότητα για εγγραφή στο %s." -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Αίτηση εγγραφής στο %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Λεπτομέρειες αίτησης εγγραφής" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "Διαχείριση αιτήσεων εγγραφής για %s" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Ο οργανισμός σας μπορεί να λάβει μόνο %d επιπλέον μέλη." +msgstr[1] "Ο οργανισμός σας μπορεί να λάβει μόνο %d περισσότερα μέλη." -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "Δεν μπορείτε να εγκρίνετε %d χρήστη." msgstr[1] "Δεν μπορείτε να εγκρίνετε %d χρήστες." -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "Εγκρίθηκε ο χρήστης %d." msgstr[1] "Εγκρίθηκαν οι χρήστες %d." -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "Απορρίφθηκε ο χρήστης %d." msgstr[1] "Απορρίφθηκαν οι χρήστες %d." -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "Επεξεργασία %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "Αδυναμία επεξεργασίας οργανισμού" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "Δεν έχετε δικαιώμα να επεξεργαστείτε αυτόν τον οργανισμό." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "Δεν έχετε δικαιώμα να αποβάλλετε κόσμο από αυτόν τον οργανισμό." -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "Αδυναμία αποβολής χρήστη" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "Ο χρήστης που προσπαθείτε να αποβάλλετε δεν υπάρχει!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "Ο χρήστης που προσπαθείτε να αποβάλλετε δε βρίσκεται στον οργανισμό: %s" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "Κατηγορία {name} στο {organization}" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "Κατηγορία {name} - {organization}" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "Αίτηση εγγραφής του {name} στο {organization}" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "Δεν υπάρχει τέτοιο πρόβλημα" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "Αδυναμία εύρεσης προβλήματος με κωδικό \"%s\"." -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "Εξήγηση για {0}" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "Δεν υπάρχει τέτοια εξήγηση" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "Αδυναμία εύρεσης εξήγησης με κωδικό \"%s\"." -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." -msgstr "" +msgstr "Δεν επιτρέπεται να ψηφίσετε γι' αυτό το πρόβλημα." -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." -msgstr "" +msgstr "Δεν επιτρέπεται να διαγράψετε τις ψήφους γι' αυτό το πρόβλημα." -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "επιτυχία" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "Υποβολή στο %s" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." -msgstr "" +msgstr "Κάνατε πάρα πολλές υποβολές." -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "Αποκλεισμένος από υποβολή" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "Έχετε κηρυχθεί persona non grata για αυτό το πρόβλημα. Είστε μόνιμα αποκλεισμένοι από το να υποβάλλετε σε αυτό το πρόβλημα." -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Πάρα πολλές υποβολές" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "Έχετε υπερβεί το όριο υποβολής για αυτό το πρόβλημα." -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" -msgstr "" +msgstr "Θέλετε να σας απαγορεύσω;" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Κλωνοποίηση Προβλήματος" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "Κλωνοποιημένο πρόβλημα από %s" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "Τα ορίσματα ελεγκτή πρέπει να είναι αντικείμενο JSON." -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "Τα ορίσματα ελεγκτή είναι λανθασμένο JSON." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "Το zip αρχείο σας είναι λανθασμένο!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "Σύγκριση υποβολών για {0}" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "Επεξεργασία δεδομένων για {0}" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "Επεξεργασία δεδομένων για %s" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "Παραγμένο init.yml για %s" @@ -3405,133 +3434,133 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "Επιτυχής προγραμματισμός υποβολής %d για κρίση εκ νέου." msgstr[1] "Επιτυχής προγραμματισμός υποβολών %d για κρίση εκ νέου." -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "Καλύτερες λύσεις για %s" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Καλύτερες λύσεις για %(problem)s στο %(contest)s" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "Καλύτερες λύσεις για το πρόβλημα %(number)s στο %(contest)s" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "Ένα όνομα χρήστη πρέπει να περιέχει γράμματα, αριθμούς ή κάτω παύλες." -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Ζώνη ώρας" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Προτιμώμενη γλώσσα" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "Εγγραφή στο ενημερωτικό δελτίο;" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "Η διεύθυνση ηλεκτρονικού ταχυδρομείου \"%s\" χρησιμοποιείται ήδη. Μόνο μία εγγραφή επιτρέπεται ανά διεύθυνση." -#: judge/views/register.py:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "Ο πάροχος email σας δεν επιτρέπεται λόγω ιστορικού κατάχρησης. Παρακαλούμε χρησιμοποιήστε έναν αξιόπιστο πάροχο email." - -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Εγγραφή" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "Μη Έγκυρο Κλειδί Ενεργοποίησης" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Αποτυχία ελέγχου ταυτότητας" #: judge/views/stats.py:23 msgid "Other" -msgstr "" +msgstr "Άλλο" #: judge/views/stats.py:62 msgid "Language statistics" msgstr "Στατιστικά γλωσσών" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Κατάσταση" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Πίνακας έκδοσης" +msgid "Version" +msgstr "Έκδοση" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "Απαγορεύεται η πρόσβαση. Λύστε %(problem)s για να το δείτε." -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "Αδυναμία πρόσβασης στην υποβολή" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "Απαγορεύεται η πρόσβαση." -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Υποβολή για %(problem)s από %(user)s" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Όλες οι υποβολές" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Όλες οι υποβολές μου" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Όλες οι υποβολές από %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Όλες οι υποβολές για %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "Οι υποβολές μου για %(problem)s" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Υποβολές του/της %(user)s για %(problem)s" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "Οι υποβολές μου στο %(contest)s" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "Υποβολές του/της %(user)s στο %(contest)s" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "Υποβολές του/της {user} για {problem} στο {contest}" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "Υποβολές του/της {user} για το πρόβλημα {number} στο {contest}" @@ -3586,100 +3615,155 @@ msgstr "κανένας" msgid "New Ticket Message For: %s" msgstr "Νέο Μήνυμα Αιτήματος Για: %s" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "Ενεργοποίηση Ταυτοποίησης Δύο Παραγόντων" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" -msgstr "Ανανέωση Ταυτοποίησης Δύο Παραγόντων" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" +msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "Απενεργοποίηση Ταυτοποίησης Δύο Παραγόντων" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "Μη έγκυρη WebAuthn απάντηση" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "Μη έγκυρο όνομα" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "Το προσωπικό δεν μπορεί να απενεργοποιήσει το 2FA" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "Εκτέλεση Ταυτοποίησης Δύο Παραγόντων" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "Δεν υπάρχει τέτοιος χρήστης" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "Δεν υπάρχει τέτοιο αναγνωριστικό χρήστη \"%s\"." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "Ο λογαριασμός μου" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Χρήστης %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Σύνδεση" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j M Y, G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "Προετοιμασία των δεδομένων σας..." -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "Λήψη των δεδομένων σας" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "Αδυναμία επεξεργασίας προφίλ." + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Ενημερώθηκε στην ιστοσελίδα" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Επεξεργασία προφίλ" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "Παρήχθη διακριτικό API για το χρήστη" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "Αφαιρέθηκε διακριτικό API για το χρήστη" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "Παρήχθη κωδικός scratch για το χρήστη" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Πίνακας Κατάταξης" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "Αποσυνδεθήκατε επιτυχώς." -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." +msgstr "Έχετε στείλει πάρα πολλά αιτήματα επαναφοράς κωδικού πρόσβασης. Παρακαλώ προσπαθήστε ξανά αργότερα." + +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." msgstr "" #: templates/admin/judge/contest/change_form.html:9 @@ -3707,13 +3791,13 @@ msgstr "Τερματισμός" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "Απενεργοποίηση" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "Ενεργοποίηση" @@ -3726,56 +3810,57 @@ msgstr "Προβολή υποβολών" #: templates/admin/judge/problem/change_form.html:20 #: templates/admin/judge/problem/change_form.html:23 msgid "View problem votes" -msgstr "" +msgstr "Προβολή προβληματικών ψήφων." #: templates/admin/judge/profile/change_form.html:14 #: templates/admin/judge/profile/change_form.html:17 msgid "Edit user" msgstr "Επεξεργασία χρήστη" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Γεια σας, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "Σταματήστε την προσωποποίηση" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Αποσύνδεση" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Σύνδεση" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "ή" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "Εγγραφή" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "παρακολουθεί" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "Αυτός ο ιστότοπος λειτουργεί καλύτερα με ενεργοποιημένη JavaScript." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "παρέχεται περήφανα από **DMOJ**" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Επεξεργασία" @@ -3808,7 +3893,7 @@ msgstr "δημοσιεύθηκε {time}" #: templates/blog/list.html:81 msgid "Continue reading..." -msgstr "" +msgstr "Συνέχεια ανάγνωσης..." #: templates/blog/list.html:95 templates/problem/problem.html:331 msgid "Clarifications" @@ -3825,7 +3910,7 @@ msgstr "Διαγωνισμοί σε εξέλιξη" #: templates/blog/list.html:127 #, python-format msgid "Ends in %(countdown)s." -msgstr "" +msgstr "Λήγει σε %(countdown)s." #: templates/blog/list.html:137 templates/contest/list.html:226 msgid "Upcoming contests" @@ -3834,7 +3919,7 @@ msgstr "Επερχόμενοι διαγωνισμοί" #: templates/blog/list.html:145 templates/contest/contest.html:41 #, python-format msgid "Starting in %(countdown)s." -msgstr "" +msgstr "Ξεκινώντας σε %(countdown)s." #: templates/blog/list.html:154 msgid "Comment stream" @@ -3940,19 +4025,19 @@ msgstr "αρχικό" #: templates/comments/media-js.html:101 #, python-brace-format msgid "Could not vote: {error}" -msgstr "" +msgstr "Αδυναμία ψήφου: {error}" #: templates/comments/media-js.html:137 msgid "Are you sure you want to hide this comment?" -msgstr "" +msgstr "Είστε βέβαιοι ότι θέλετε να αποκρύψετε αυτό το σχόλιο;" #: templates/comments/media-js.html:145 msgid "Could not hide comment." -msgstr "" +msgstr "Αδυναμία απόκρυψης σχολίου." #: templates/comments/media-js.html:180 msgid "updated" -msgstr "" +msgstr "Ενημερώθηκε" #: templates/comments/media-js.html:182 msgid "Failed to update comment body." @@ -3961,7 +4046,7 @@ msgstr "" #: templates/comments/media-js.html:185 #, python-brace-format msgid "Could not edit comment: {error}" -msgstr "" +msgstr "Δεν ήταν δυνατή η επεξεργασία του σχολίου: {error}" #: templates/comments/votes.html:5 msgid "Voter" @@ -3975,17 +4060,17 @@ msgstr "Βαθμολογία" msgid "No votes" msgstr "Δεν υπάρχουν ψήφοι" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" -msgstr "" +msgstr "Κάντε κλικ για αντιγραφή." -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" -msgstr "" +msgstr "Αντιγραφή" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" -msgstr "" +msgstr "Αντιγράφηκε!" #: templates/contest/access_code.html:26 msgid "Invalid access code." @@ -4064,7 +4149,7 @@ msgstr "Ημερολόγιο" msgid "Info" msgstr "Πληροφορίες" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Στατιστικά" @@ -4117,12 +4202,12 @@ msgstr "Συνδεθείτε για να συμμετάσχετε" #: templates/contest/contest.html:33 #, python-format msgid "Spectating, contest ends in %(countdown)s." -msgstr "" +msgstr "Παρακολουθώντας, ο διαγωνισμός τελειώνει σε %(countdown)s." #: templates/contest/contest.html:35 #, python-format msgid "Participating virtually, %(countdown)s remaining." -msgstr "" +msgstr "Συμμετέχοντας εικονικά, απομένουν %(countdown)s." #: templates/contest/contest.html:37 msgid "Participating virtually." @@ -4135,7 +4220,7 @@ msgstr "Ο διαγωνισμός τελείωσε." #: templates/contest/contest.html:47 #, python-format msgid "Your time is up! Contest ends in %(countdown)s." -msgstr "" +msgstr "Ο χρόνος σου τελείωσε! Ο διαγωνισμός τελειώνει στο %(countdown)s." #: templates/contest/contest.html:49 #, python-format @@ -4279,7 +4364,7 @@ msgstr "Ποσοστό AC" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Χρήστες" @@ -4287,7 +4372,7 @@ msgstr "Χρήστες" msgid "Editorials" msgstr "Εξηγήσεις" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "Εξήγηση" @@ -4452,19 +4537,19 @@ msgstr "Αναίρεση Αποκλεισμού" msgid "Disqualify" msgstr "Αποκλεισμός" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "Είστε βέβαιοι ότι θέλετε να αποκλείσετε αυτή τη συμμετοχή;" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "Είστε βέβαιοι ότι θέλετε να αναιρέσεται τον αποκλεισμό αυτής της συμμετοχής;" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "Προβολή συμμετοχής χρήστη" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Εμφάνιση οργανισμών" @@ -4635,6 +4720,17 @@ msgstr "Ώρα:" msgid "Reason:" msgstr "Αιτία:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Χρήστης" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Ώρα" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "Δεν υπάρχουν αιτήσεις για έγκριση." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "Διαγραφή;" @@ -4687,59 +4783,67 @@ msgstr "Ενημέρωση προεπισκόπησης" msgid "Enter a new code for the cloned problem:" msgstr "Εισάγετε έναν νέο κωδικό για το κλωνοποιημένο πρόβλημα:" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "Προβολή YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "Εμφάνιση στηλών:" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "Πρόθεμα εξόδου" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "Όριο εξόδου" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "Ελεγκτής" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "Ορίσματα γεννήτριας" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Τύπος" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "Αρχείο εισόδου" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "Αρχείο εξόδου" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "Προδοκιμή;" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Υποβολή!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "Προσθήκη νέας περίπτωσης" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "Αποθήκευση" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "Συγγραφέας:" msgstr[1] "Συγγραφείς:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "Φιλτράρισμα ανά τύπο..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "Χοτ προβλήματα" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Κατηγορία" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Τύποι" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "Αφήστε κενό για να μην φιλτράρετε ανά γλώσσα" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "Αφήστε κενό για να μην φιλτράρετε ανά αποτέλεσμα" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "Χρειάζονται έγκυρες τιμές τόσο για αναγνωριστικά (ID) έναρξης όσο και τέλους." -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "Το ID λήξης πρέπει να βρίσκεται μετά το ID έναρξης." -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, python-brace-format msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" msgstr "Πρόκειται να κρίνετε εκ νέου {count} υποβολές. Είστε σίγουροι ότι θέλετε να το κάνετε;" -#: templates/problem/manage_submission.html:96 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "Πρόκειται να κρίνετε εκ νέου μερικές υποβολές. Είστε σίγουροι ότι θέλετε να το κάνετε;" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "Κρίση εκ νέου Υποβολών" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "Φιλτράρισμα ανά ID:" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "ID Έναρξης:" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "ID Λήξης:" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "Αυτό το εύρος περιλαμβάνει και τα δύο τελικά σημεία." -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "Φιλτράρισμα ανά γλώσσα:" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "Κρίση εκ νέου επιλεγμένων υποβολών" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "Αναβαθμολόγηση Όλων" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "Αυτό θα αναβαθμολογήσει %(count)s υποβολή." msgstr[1] "Αυτό θα αναβαθμολογήσει %(count)s υποβολές." -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "Είστε βέβαιοι ότι θέλετε να αναβαθμολογήσετε %(count)s υποβολή;" msgstr[1] "Είστε βέβαιοι ότι θέλετε να αναβαθμολογήσετε %(count)s υποβολές;" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "Αναβαθμολόγηση όλων των υποβολών" @@ -4927,11 +5031,11 @@ msgstr "Πόντοι:" msgid "(partial)" msgstr "(εν μέρει)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Χρονικό όριο:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Όριο μνήμης:" @@ -4968,14 +5072,6 @@ msgstr "Αίτηση διευκρίνισης" msgid "Report an issue" msgstr "Αναφορά προβλήματος" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Χρονικό Όριο:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Όριο Μνήμης:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Αναζήτηση προβλήματος" @@ -5013,8 +5109,8 @@ msgstr "Τύποι προβλήματος" msgid "Point range" msgstr "Εύρος πόντων" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Μετάβαση" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "Τυχαίο" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5035,31 +5131,31 @@ msgstr "Αποτέλεσμα" msgid "Date" msgstr "Ημερομηνία" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "Ο πηγαίος κώδικας σας πρέπει να περιέχει το πολύ 65536 χαρακτήρες." -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "Προσοχή!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "Η προεπιλεγμένη σας γλώσσα, %(language)s, δεν είναι διαθέσιμη για αυτό το πρόβλημα και έχει αποεπιλεγεί." -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "Σας έχει απομείνει %(left)s υποβολή" msgstr[1] "Σας έχουν απομείνει %(left)s υποβολές" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "Σας έχουν απομείνει 0 υποβολές" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "Κανένας κριτής δεν είναι διαθέσιμος για αυτό το πρόβλημα." @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης." @@ -5267,7 +5425,7 @@ msgstr "Η %(site_name)s ομάδα" msgid "Password reset on %(site_name)s" msgstr "Επαναφορά κωδικού πρόσβασης στο %(site_name)s" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Συνέχεια >" @@ -5280,36 +5438,40 @@ msgstr "Οι εγγραφές είναι κλειστές. Επικοινωνή 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Email" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(ξανά, για επιβεβαίωση)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(επιλέξτε την κοντινότερη μεγάλη πόλη)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "επιλογή από χάρτη" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "Προεπιλεγμένη γλώσσα" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "Συνδεδεμένοι οργανισμοί" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "Ειδοποιήστε με για επερχόμενους διαγωνισμούς" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "Με την εγγραφή σας, συμφωνείτε με τους [Όροι & Προϋποθέσεις][0] μας." -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "Εγγραφή!" @@ -5343,25 +5505,25 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "Εισάγετε τον 6-ψήφιο κωδικό που παράχθηκε από την εφαρμογή σας:" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" -msgstr "Ανανέωση Ταυτοποίησης Δύο Παραγόντων" +msgid "Edit Two Factor Authentication" +msgstr "" #: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" msgstr "Ενεργοποίηση Ταυτοποίησης Δύο Παραγόντων" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "Παρακάτω είναι μια λίστα μίας χρήσης κωδικών scratch." #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "Οι κωδικοί αυτοί μπορούν να χρησιμοποιηθούν μόνο μία φορά και προορίζονται για επείγουσα χρήση." #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "Μπορείτε να χρησιμοποιήσετε αυτούς τους κωδικούς για να συνδεθείτε στο λογαριασμό σας ή να απενεργοποιήσετε τον έλεγχο ταυτότητας δύο παραγόντων." @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "Εάν χρειάζεστε ποτέ περισσότερους κώδικες scratch, μπορείτε να τους παράξετε εκ νέου στην καρτέλα επεξεργασίας προφίλ." #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "Παρακαλώ καταγράψτε και αποθηκεύστε τους σε ασφαλές σημείο." @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "Αν χάσετε τη συσκευή ελέγχου ταυτότητας και δεν μπορείτε να χρησιμοποιήσετε τους κωδικούς scratch, %(site_name)s διαχειριστές ΔΕΝ θα είναι σε θέση να ανακτήσουν το λογαριασμό σας. Παρακαλώ κρατήστε τους κωδικούς scratch σας ασφαλείς!" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "Το πρόγραμμα περιήγησης σας δεν υποστηρίζει WebAuthn." #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "Αποτυχία επικοινωνίας με το διακομιστή." @@ -5462,8 +5624,8 @@ msgid "Judges" msgstr "Κριτές" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Πίνακας Έκδοσης" +msgid "Versions" +msgstr "Εκδόσεις" #: templates/submission/info-base.html:8 #, python-format @@ -5487,27 +5649,27 @@ msgstr "Παρουσιάστηκε ένα εσωτερικό σφάλμα κατ msgid "Error information" msgstr "Πληροφορίες σφάλματος" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "Φιλτράρισμα ανά κατάσταση..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "Φιλτράρισμα ανά γλώσσα..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Φίλτρο υποβολών" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Σύνολο:" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Αποσυνδεθήκατε. Ανανεώστε για να εμφανιστούν οι τελευταίες ενημερώσεις." @@ -5544,7 +5706,7 @@ msgstr "Προβολή κατάστασης" msgid "View raw source" msgstr "Προβολή πηγαίου κώδικα" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Επανυποβολή" @@ -5630,15 +5792,15 @@ msgstr "Περνώντας προ-δοκιμές δεν εγγυάται μια msgid "Submission aborted!" msgstr "Η υποβολή ακυρώθηκε!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Προβολή πηγής" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "Πατήστε Ctrl-Enter ή Command-Enter για ακύρωση." -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "Ακύρωση" @@ -5671,33 +5833,33 @@ msgstr "Ανοιγμένα εκ νέου: " msgid "Closed: " msgstr "Κλειστά: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "Χρήση ειδοποίησης επιφάνειας εργασίας" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "Απόκρυψη κλειστών αιτημάτων" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "Εμφάνιση μόνο των αιτημάτων μου" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "Χρήστης αρχειοθέτης" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "Υπεύθυνος" msgstr[1] "Υπεύθυνοι" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "Τίτλος" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "Υπεύθυνοι" @@ -5748,152 +5910,152 @@ msgstr "Σημειώσεις υπεύθυνου" msgid "Nothing here." msgstr "Δεν υπάρχει κάτι εδώ." -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Βαθμίδα" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "Αναζήτηση με ανγνωριστικό..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "Είστε βέβαιοι ότι θέλετε να παράξετε ή να αναπαράξετε το API διακριτικό σας;" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "Αυτό θα ακυρώσει τυχόν προηγούμενα διακριτικά API." -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "Επιτρέπει επίσης πρόσβαση στο λογαριασμό σας χωρίς έλεγχο ταυτότητας δύο παραγόντων." -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "Δεν θα είστε σε θέση να δείτε το API διακριτικό σας αφού φύγετε από αυτή τη σελίδα!" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "Δημιουργία..." -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "Διαγραφή" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε το API διακριτικό σας;" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "Παραγωγή" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το κλειδί ασφαλείας;" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Αυτο-περιγραφή:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "Επιλέξτε την κοντινότερη μεγάλη πόλη" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Ζώνη ώρας:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Γλώσσα:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "Θέμα ιστότοπου:" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "Μοτίβο συντάκτη:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Μηχανή μαθηματικών:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "Συνδεδεμένοι οργανισμοί:" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "Αλλάξτε το avatar σας" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "Αλλάξτε τον κωδικό σας" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "Η ταυτοποίηση δύο παραγόντων είναι ενεργοποιημένη:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "Διακριτικό API:" + +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "Κρυφό" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "Ανανέωση" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "Η ταυτοποίηση δύο παραγόντων είναι ενεργοποιημένη:" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "Κωδικοί scratch:" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "Κρυφό" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "Η ταυτοποίηση δύο παραγόντων είναι απενεργοποιημένη:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "Διακριτικό API:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "Κλειδιά ασφαλείας:" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "Διαγραφή" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "Εισάγετε όνομα για αυτό το κλειδί" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "Προσθήκη" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "Script χρήστη:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "Ενημέρωση προφίλ" diff --git a/locale/el/LC_MESSAGES/djangojs.po b/locale/el/LC_MESSAGES/djangojs.po index eda77dbdc8..c48718dfef 100644 --- a/locale/el/LC_MESSAGES/djangojs.po +++ b/locale/el/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-04-09 00:45\n" "Last-Translator: \n" "Language-Team: Greek\n" "Language: el_GR\n" @@ -17,66 +17,66 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d ημέρα %h:%m:%s" msgstr[1] "%d ημέρες %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" #: resources/problem-vote.js:11 msgid "Vote on problem points" -msgstr "" +msgstr "Ψηφίστε για προβληματικούς πόντους." #: resources/problem-vote.js:16 #, javascript-format msgid "Unable to delete vote: %s" -msgstr "" +msgstr "Αδυναμία διαγραφής ψήφου: %s" #: resources/problem-vote.js:28 #, javascript-format msgid "Edit points vote (%s)" -msgstr "" +msgstr "Επεξεργασία ψήφων πόντων (%s)" #: resources/problem-vote.js:34 #, javascript-format msgid "Unable to cast vote: %s" -msgstr "" +msgstr "Αδυναμία μετάδοσης ψήφου: %s" #: resources/problem-vote.js:63 msgid "Number of votes for this point value" -msgstr "" +msgstr "Αριθμός ψήφων για αυτή την τιμή πόντων." #: resources/user_profile.js:47 msgid "past year" -msgstr "" +msgstr "Προηγούμενο έτος." #: resources/user_profile.js:64 msgid "%(cnt)d total submission" msgid_plural "%(cnt)d total submissions" msgstr[0] "" -msgstr[1] "" +msgstr[1] "%(cnt)d συνολικές υποβολές." #: resources/user_profile.js:69 msgid "%(cnt)d submission in the last year" msgid_plural "%(cnt)d submissions in the last year" msgstr[0] "" -msgstr[1] "" +msgstr[1] "%(cnt)d υποβολές το τελευταίο έτος." #: resources/user_profile.js:74 msgid "%(cnt)d submission in %(year)d" msgid_plural "%(cnt)d submissions in %(year)d" msgstr[0] "" -msgstr[1] "" +msgstr[1] "%(cnt)d υποβολές σε %(year)d." #: resources/user_profile.js:88 msgid "%(cnt)d submission on %(date)s" msgid_plural "%(cnt)d submissions on %(date)s" msgstr[0] "" -msgstr[1] "" +msgstr[1] "%(cnt)d υποβολές στις %(date)s." diff --git a/locale/en/LC_MESSAGES/django.po b/locale/en/LC_MESSAGES/django.po index 4c97b8e3b2..4cec115d92 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: 2023-01-21 00:48+0000\n" +"POT-Creation-Date: 2024-01-22 00:44+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -18,122 +18,123 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:43 -msgid "Hide comments" +#: judge/admin/comments.py:47 +msgid "Unhide comments" msgstr "" -#: judge/admin/comments.py:47 +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "" #: judge/admin/contest.py:31 @@ -141,22 +142,22 @@ msgid "Included contests" msgstr "" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "" @@ -188,97 +189,98 @@ msgstr "" msgid "Justice" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "" @@ -299,8 +301,8 @@ msgid "Taxonomy" msgstr "" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -309,9 +311,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "" @@ -319,106 +320,95 @@ msgstr "" msgid "History" msgstr "" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" msgstr "" -#: judge/admin/problem.py:193 +#: 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:197 -msgid "Set publish date to now" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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 -msgid "Mark problems as public" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" +#: judge/admin/profile.py:119 +msgid "date joined" msgstr "" -#: judge/admin/profile.py:113 -msgid "date joined" +#: judge/admin/profile.py:123 +msgid "Recalculate scores" msgstr "" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "" @@ -450,57 +440,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "" -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:222 +msgid "time" msgstr "" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:226 +msgid "memory" msgstr "" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:238 -msgid "Memory" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" msgstr "" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -524,7 +518,8 @@ msgstr "" msgid "Comment body" msgstr "" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -636,121 +631,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -759,108 +762,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" +#: judge/models/choices.py:24 +msgid "Follow site theme" msgstr "" #: judge/models/choices.py:60 -msgid "SVG only" +msgid "Leave as LaTeX" msgstr "" #: judge/models/choices.py:61 -msgid "MathML only" +msgid "SVG only" msgstr "" #: judge/models/choices.py:62 -msgid "MathJax with SVG fallback" +msgid "MathML only" msgstr "" #: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "" + +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -916,16 +925,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -935,7 +939,7 @@ msgid "" "authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -973,12 +977,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "" @@ -986,12 +990,12 @@ msgstr "" msgid "end time" msgstr "" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1118,11 +1122,11 @@ msgid "" "not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1152,7 +1156,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1173,7 +1177,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1188,7 +1192,7 @@ msgid "" "contest. Leave it blank to disable." msgstr "" -#: judge/models/contest.py:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1243,214 +1247,214 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "" "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1502,7 +1506,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1555,7 +1559,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1567,7 +1571,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1604,7 +1608,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1628,288 +1632,275 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "" "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "" "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) " "are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "" "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 " "kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "" "Points awarded for problem completion. Points are displayed with a 'p' " "suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "" "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1935,7 +1926,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1982,7 +1973,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -2030,6 +2021,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2112,7 +2115,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "" @@ -2153,7 +2156,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2178,26 +2181,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2207,201 +2214,201 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "" "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2657,15 +2664,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2673,141 +2680,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2871,16 +2878,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2937,40 +2934,68 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "" +"Your email provider is not allowed due to history of abuse. Please use a " +"reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "" +"Dependencies must be a comma-separated list of integers for batch start case " +"#%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -3025,45 +3050,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3072,113 +3097,113 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "" "You have been declared persona non grata for this contest. You are " "permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3207,251 +3232,259 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "" "You have been declared persona non grata for this problem. You are " "permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3478,55 +3511,53 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "" "The email address \"%s\" is already taken. Only one registration is allowed " "per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3538,77 +3569,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3663,102 +3694,161 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "" +"Please try again while logged in to the account this email change was " +"originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "" +"The email you originally requested has since been registered by another " +"user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3784,13 +3874,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3810,49 +3900,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -4052,15 +4143,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4141,7 +4232,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4373,7 +4464,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4381,7 +4472,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4551,19 +4642,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4742,6 +4833,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4758,7 +4860,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4794,59 +4896,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4868,103 +4978,103 @@ msgid_plural "Authors:" msgstr[0] "" msgstr[1] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "" "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -5041,11 +5151,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "" @@ -5082,14 +5192,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5127,8 +5229,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5137,7 +5239,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5149,33 +5251,33 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "" "Your default language, %(language)s, is unavailable for this problem and has " "been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5290,6 +5392,86 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "" +"You have requested to change your email address to this email for your user " +"account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "" +"Please click the link to confirm this email change. The link will expire in " +"%(count)s minute." +msgid_plural "" +"Please click the link to confirm this email change. The link will expire in " +"%(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "" +"If you have encountered any problems, feel free to shoot us an email at " +"%(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "" +"Please go to this page to confirm this email change. The link will expire in " +"%(count)s minute." +msgid_plural "" +"Please go to this page to confirm this email change. The link will expire in " +"%(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "" +"Someone (hopefully you!) has requested to change the email address " +"associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "" +"If this was not you, please change your password and email us immediately at " +"%(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "" +"If this was not you, please change your password and reply to this email " +"immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5405,7 +5587,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5420,36 +5602,40 @@ msgid "" "address you provided to confirm your registration." msgstr "" -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5487,7 +5673,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5495,17 +5681,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "" "You can use these codes to login to your account or disable two-factor " "authentication." @@ -5518,7 +5704,7 @@ msgid "" msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5541,12 +5727,12 @@ msgid "" msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5617,7 +5803,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5644,27 +5830,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5701,7 +5887,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5787,15 +5973,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5828,33 +6014,33 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5908,157 +6094,157 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "" "The administrators for this site require all the staff to have Two-factor " "Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "" "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "" "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "" "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/en/LC_MESSAGES/djangojs.po b/locale/en/LC_MESSAGES/djangojs.po index 7962f58b09..c721b38970 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: 2022-12-21 00:43+0000\n" +"POT-Creation-Date: 2023-01-24 00:51+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:195 +#: resources/common.js:194 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:198 +#: resources/common.js:197 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 338344349d..0d6210b40c 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,145 +17,146 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Catalán" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Alemán" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Griego" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Inglés" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Español" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Francés" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Croata" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Húngaro" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japonés" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Coreano" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Portugués (Brasil)" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Rumano" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Ruso" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Serbio (Latino)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turco" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnamita" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Chino Simplificado" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Chino Tradicional" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "¡Activación con Éxito!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "Registro Completado" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "Registro No Permitido" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Inicio" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Contenido" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Ocultar comentarios" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d comentario oculto con éxito." msgstr[1] "%d comentarios ocultos con éxito." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Ocultar comentarios" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Mostrar comentarios" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d comentario desocultado con éxito." msgstr[1] "%d comentarios desocultados con éxito." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Mostrar comentarios" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Página asociada" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "página asociada" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Concursos incluidos" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Problema" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Problemas" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Rejuzgar" @@ -187,97 +188,98 @@ msgstr "Acceso" msgid "Justice" msgstr "Justicia" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Marcar concursos como visibles" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d concurso ha sido hecho visible con éxito." msgstr[1] "%d concursos han sido hechos visibles con éxito." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Marcar concursos como visibles" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Marcar concursos como invisibles" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d concurso ha sido hecho invisible con éxito." msgstr[1] "%d concursos han sido hecho invisibles con éxito." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "Marcar concursos como invisibles" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Bloquear envíos del concurso" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, 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:250 -msgid "Lock contest submissions" -msgstr "Bloquear envíos del concurso" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Desbloquear envíos del concurso" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, 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:259 -msgid "Unlock contest submissions" -msgstr "Desbloquear envíos del concurso" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Recalcular resultados" + +#: judge/admin/contest.py:359 #, 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:359 -msgid "Recalculate results" -msgstr "Recalcular resultados" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "nombre de usuario" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "virtual" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "ruta de enlace" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Resumen" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "usuario" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "objeto" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Ver en el sitio web" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "Taxonomía" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Puntos" @@ -308,9 +310,8 @@ msgstr "Puntos" msgid "Limits" msgstr "Límites" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Lenguaje" @@ -318,106 +319,95 @@ msgstr "Lenguaje" msgid "History" msgstr "Historia" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Autores" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "autores" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Establecer fecha de publicación a ahora" + +#: 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:197 -msgid "Set publish date to now" -msgstr "Establecer fecha de publicación a ahora" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Marcar problema como publico" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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:207 -msgid "Mark problems as public" -msgstr "Marcar problema como publico" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Marcar problemas como privados" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "Marcar problemas como privados" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "problema" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "zona horaria" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Usuario" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Email" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Zona horaria" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "correo electrónico" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "fecha de registro" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Recalcular puntuaciones" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had 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:123 -msgid "Recalculate scores" -msgstr "Recalcular puntuaciones" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "Regenerar" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Descripción" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Información" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Capacidades" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Ninguno" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s en %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Rejuzgar los envíos seleccionados" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "No tienes permiso para rejuzgar envíos." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "No tienes permiso para rejuzgar TANTOS envíos." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Rejuzgar los envíos seleccionados" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Reevaluar los envíos seleccionados" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d envío fue reevaluado con éxito." msgstr[1] "%d envíos fueron reevaluados con éxito." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Reevaluar los envíos seleccionados" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "código del problema" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Código del problema" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "nombre del problema" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Nombre del problema" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "tiempo" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Tiempo" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "memoria" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Memoria" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "lenguaje" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "Bloqueado" @@ -523,7 +517,8 @@ msgstr "Juez en Línea" msgid "Comment body" msgstr "Cuerpo del comentario" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "No se supone que deberías hablar, pequeñuelo." @@ -548,8 +543,8 @@ msgstr "Se utilizará el envío de puntuación máxima para cada problema." #, python-format msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Cada envío antes del primer envío de puntuación máxima tendrá una **penalización de %d minuto**." +msgstr[1] "Cada envío antes del primer envío de puntuación máxima tendrá una **penalización de %d minutos**." #: judge/contest_format/atcoder.py:127 msgid "Ties will be broken by the last score altering submission time." @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "IOI (antes de 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "Los tokens de autenticación de dos pasos tienen que ser {count} dígito decimal." msgstr[1] "Los tokens de autenticación de dos pasos tienen que ser {count} dígitos decimales." -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Token de autenticación de dos pasos no válido." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "Los códigos de Scratch deben tener 16 caracteres Base32." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "Código de scratch inválido." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Subscribirse en las actualizaciones de los concursos" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Habilitar las funciones experimentales" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "Debes resolver como mínimo un problema antes de poder actualizar tu perfil." -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "No puedes formar parte de más de {count} organización pública." msgstr[1] "No puedes formar parte de más de {count} organizaciones públicas." -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "¿Descargar comentarios?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "¿Descargar envíos?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "Filtrar por código glob del problema:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "Dejar en blanco para incluir todos los envíos" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Filtrar por resultado:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "Por favor selecciona por lo menos una cosa para descargar." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Cualquier juez" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Nombre de usuario" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Contraseña" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Longitud de código inválida." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Respuesta WebAuthn inválida." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "Ningúna respuesta de WebAuthn emitida." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "ID de credencial de WebAuthn inválida." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "Token de autenticación de dos pasos o código de scratch no válido." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "Debe especificar o totp_token o webauthn_response." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "El código del problema debe ser ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Ya existe un problema con este código." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "La id del concurso debe ser ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Ya existe un concurso con esta clave primaria." @@ -739,108 +742,114 @@ msgstr "Ya existe un concurso con esta clave primaria." msgid "N j, Y, g:i a" msgstr "j N Y, g:i a" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "el {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "Sin puntuación" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "Seguir el tema del sistema" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Dejar como LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Solo SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Solo MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax con SVG si falla" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Detectar la mejor calidad" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "Seguir sistema por defecto" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Claro" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Oscuro" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "El código de la página debe ser ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "comentador" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "hora de publicación" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "página asociada" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "votos" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "cuerpo del comentario" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "oculto" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "padre" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "revisiones" + +#: judge/models/comment.py:39 msgid "comment" msgstr "comentario" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "comentarios" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Editorial para %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" -msgstr "" +msgstr "%(page)s de %(user)s" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "voto del comentario" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "votos del comentario" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "Saltarse el bloqueo del comentario" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -878,7 +887,7 @@ msgstr "Visible" #: judge/models/contest.py:63 msgid "Hidden for duration of contest" -msgstr "" +msgstr "Escondido por duración del concurso" #: judge/models/contest.py:64 msgid "Hidden for duration of participation" @@ -896,16 +905,11 @@ msgstr "identificación del concurso" msgid "contest name" msgstr "nombre del concurso" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "autores" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "Estos usuarios serán capaces de editar el concurso." -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "curadores" @@ -913,7 +917,7 @@ msgstr "curadores" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "Estos usuarios serán capaces de editar el concurso, pero no serán listados como autores." -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "probadores" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "descripción" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "problemas" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "hora de inicio" @@ -962,12 +966,12 @@ msgstr "hora de inicio" msgid "end time" msgstr "hora final" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "límite de tiempo" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "publicidad visible" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "privado para organizaciones" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "organizaciones" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "Imagen de OpenGraph" @@ -1141,7 +1145,7 @@ msgstr "la cantidad de participantes en vivo" msgid "contest summary" msgstr "resumen del concurso" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 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." @@ -1154,7 +1158,7 @@ msgstr "código de acceso" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "persona no grata" @@ -1196,219 +1200,219 @@ msgstr "" #: judge/models/contest.py:175 msgid "precision points" -msgstr "" +msgstr "puntos de precisión" #: judge/models/contest.py:177 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Ver concursos privados" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Editar concursos propios" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Editar todos los concursos" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "Clonar concurso" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "Detectar plagios con MOSS" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Calificar concursos" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "Códigos de acceso al concurso" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "Crear concursos privados" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "Cambiar visibilidad del concurso" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "Editar script de etiqueta de problema del concurso" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "Cambiar el estado de bloqueo del concurso" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "concurso" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "concursos" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "concurso asociado" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "puntuación" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "tiempo acumulado" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "se ha descalificado" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "Si esta participación ha sido descalificada." -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "campo de desempate" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "identificación de la participación virtual" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 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:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "datos específicos del formato de concurso" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "%(user)s en %(contest)s, v%(id)d" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "%(user)s en %(contest)s" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "participación del concurso" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "participaciones del concurso" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "puntos" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "parcial" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "utilizar pruebas previas" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "orden" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "anular la longitud del prefijo de salida" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" -msgstr "" +msgstr "Envíos máximos" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 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:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "¿Por qué incluir un problema que no puede enviarse?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "problema de concurso" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "problemas del concurso" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "envío" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "participación" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "Si este envío se ejecutó solo en las pruebas previas." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "envío del concurso" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "envíos del concurso" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "rango" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "puntuación" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "puntuación bruta" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" -msgstr "" +msgstr "Máximo de envíos" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "último calificado" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "puntuación del concurso" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "puntuaciones del concurso" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "resultado del moss del concurso" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "resultados del moss del concurso" @@ -1460,7 +1464,7 @@ msgstr "título del post" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "visibilidad pública" @@ -1513,7 +1517,7 @@ msgstr "nombre de categoría de problema" msgid "problem type" msgstr "tipo de problema" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "tipos de problema" @@ -1525,7 +1529,7 @@ msgstr "ID de grupo de problema" msgid "problem group name" msgstr "nombre de grupo de problema" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "grupo de problema" @@ -1562,7 +1566,7 @@ msgstr "URL al icono." msgid "license text" msgstr "texto de licencia" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "licencia" @@ -1586,280 +1590,267 @@ msgstr "Visible si se ha resuelto el problema" msgid "Only own submissions" msgstr "Solo envíos propios" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "código del problema" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "Un código corto y único para el problema, para usar en la URL después de /problem/" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "nombre del problema" - #: judge/models/problem.py:121 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 de problemas." -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "cuerpo del problema" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "creadores" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 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:127 +#: judge/models/problem.py:128 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:131 +#: judge/models/problem.py:132 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:133 +#: judge/models/problem.py:134 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:135 +#: judge/models/problem.py:136 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:137 +#: judge/models/problem.py:138 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:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "límite de memoria" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "La memoria límite para este problema, en kilobytes (e.g. 256mb = 262144 kilobytes)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "circuito corto" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Puntos otorgados 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:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "permitir puntos parciales" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "lenguajes permitidos" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "Lista de lenguajes en el que se permite el envío." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "manejado manualmente" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 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:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "fecha de publicación" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the 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:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "Prohíbe a los usuarios seleccionados enviar soluciones a este problema." -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "La licencia bajo la que este problema ha sido publicado." -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "resumen del problema" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "número de usuarios" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "El número de usuarios que ha resuelto este problema." -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "porcentaje de solucionados" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "permitir acceso completo al markdown" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "visibilidad de la fuente de envío" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "Si privado, solo estas organizaciones pueden ver el problema." -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "Ver problemas ocultos" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "Editar problemas propios" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "Editar todos los problemas" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "Editar todos los problemas públicos" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "Editar problemas con markup completo" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Clonar problema" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "Cambiar campo is_public" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "Cambiar campo is_manually_managed" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "Ver problemas privados para la organización" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "lenguaje" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "nombre traducido" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "descripción traducida" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "traducción del problema" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "traducciones del problema" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "problema aclarado" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "cuerpo de la aclaración" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "hora de la aclaración" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "aclaración del problema" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "aclaraciones del problema" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "límite de recursos específicos del lenguaje" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "límites de recursos específicos del lenguaje" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "problema asociado" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "fecha de publicación" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "contenido editorial" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "Ver soluciones ocultas" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "solución" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "soluciones" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "puntos propuestos" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." -msgstr "" +msgstr "La cantidad de puntos que el votante piensa que este problema se merece." -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "votante" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" -msgstr "" +msgstr "Hora de votar" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "nota" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "Justificación del valor de puntos del problema." -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "voto del problema" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "votos del problema" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "Voto por puntos de %(voter)s para %(problem)s" @@ -1885,8 +1876,8 @@ msgid "Non-trailing spaces" msgstr "Sin espacios al final" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "Sin ordenar" +msgid "Sorted" +msgstr "Ordenado" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1922,7 +1913,7 @@ msgstr "verificador" #: judge/models/problem_data.py:45 msgid "enable unicode" -msgstr "" +msgstr "Activar Unicode" #: judge/models/problem_data.py:46 msgid "disable bigInteger / bigDecimal" @@ -1932,7 +1923,7 @@ msgstr "deshabilitar bigInteger / bigDecimal" msgid "checker arguments" msgstr "argumentos del verificador" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Argumentos del verificador como un objetivo JSON." @@ -1980,6 +1971,18 @@ msgstr "valor de puntos" msgid "case is pretest?" msgstr "¿es este caso una prueba previa?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "argumentos del verificador como un objeto JSON" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "título de la organización" @@ -2038,7 +2041,7 @@ msgstr "Esta imagen reemplazará el logo del sitio para los usuarios que estén #: judge/models/profile.py:62 msgid "class membership required" -msgstr "" +msgstr "Membresía de clase requerida" #: judge/models/profile.py:63 msgid "Whether members are compelled to select a class when joining." @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "Editar todas las organizaciones" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organización" @@ -2098,7 +2101,7 @@ msgstr "miembros" msgid "%(class)s in %(organization)s" msgstr "%(class)s en %(organization)s" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "clase" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "Tema Ace" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "tema del sitio" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "último tiempo de acceso" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "último IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "mostrar rango" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "Usuario Normal" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "Creador de Problemas" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "Creador de Problemas" msgid "Admin" msgstr "Administrador" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "comentario en silencio" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 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:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "usuario no-listado" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "Este usuario no será puesto en los rankings." -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "scrip de usuario" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "JavaScript definido por el usuario para la personalización del sitio." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "concurso actual" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "motor matemático" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "El motor de renderizado utilizado para representar las matemáticas." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "TOTP de la Autenticación en dos pasos habilitado" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "Activar autenticación de dos pasos basada en TOTP." -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn de Autenticación en dos pasos habilitado" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "Activar autenticación de dos pasos basada en WebAuthn." -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "clave TOTP" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "Clave con codificación Base32 de 32 caracteres para el TOTP." -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "La clave TOTP debe estar vacía o ser Base32." -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "códigos scratch" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "Array JSON de 16 caracteres codificados en Base32 para los códigos scratch." -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 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:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "Token API" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "Token de acceso a la API codificado con 64 caracteres hexadecimales." -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "El token API debe ser Ninguno o hexadecimal" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "notas internas" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "Notas para administradores sobre este usuario." -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "última descarga de datos" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "anular el nombre para mostrar" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "Nombre mostrado en lugar del nombre de usuario." -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "Muestra las cosas que el equipo de desarrollo está haciendo actualmente" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "Editar ajustes TOTP" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "perfil del usuario" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "perfiles de usuarios" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "nombre de dispositivo" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "ID de credencial" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "clave pública" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "contador de señales" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "Credencial de WebAuthn: %(name)s" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "credencial de WebAuthn" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "credenciales de WebAuthn" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "tiempo de solicitud" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "estado" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "Pendiente" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Aprobado" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Rechazado" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "razón" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "solicitud de adhesión a la organización" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "solicitudes de adhesión a la organización" @@ -2507,7 +2514,7 @@ msgstr "Carga para el último minuto, dividido procesadores para ser justos." #: judge/models/runtime.py:140 msgid "last connected IP" -msgstr "" +msgstr "IP de la última conexión" #: judge/models/runtime.py:142 judge/models/runtime.py:191 msgid "judges" @@ -2588,15 +2595,15 @@ msgstr "Error Interno (juzgando error del servidor)" msgid "submission time" msgstr "tiempo de envío" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "tiempo de ejecución" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "uso de memoria" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "puntos otorgados" @@ -2604,141 +2611,141 @@ msgstr "puntos otorgados" msgid "submission language" msgstr "lenguaje del envío" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "estatus" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "resultado" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "errores de compilación" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "casos de lotes" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "puntos de caso de prueba" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "total de puntos del caso de prueba" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "juzgado en" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "hora del envío del juez" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "solo se ejecutó en pruebas previas" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "bloqueo de envío" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "Envío %(id)d de %(problem)s por %(user)s" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "Abortar cualquier envío" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "Rejuzgar el envío" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "Rejuzgar un montón de envíos" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "Enviar sin límite" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "Ver todos los envíos" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "Reenviar el envío de otros" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "Cambiar el estado de bloqueo del envío" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "envíos" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "envío asociado" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "código fuente" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "Fuente de %(submission)s" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "fuente de envío" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "fuentes de envío" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "ID de caso de prueba" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "indicador de estado" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "puntos posibles" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "número de lote" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "respuesta del juez" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "respuesta extendida del juez" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "salida del programa" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "caso de prueba del envío" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "casos de prueba del envío" @@ -2802,23 +2809,13 @@ msgstr "mensaje de ticket" msgid "ticket messages" msgstr "mensajes de ticket" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "Página [page] de [topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "Página %s de %s" - #: judge/ratings.py:194 msgid "Newbie" -msgstr "" +msgstr "Novato" #: judge/ratings.py:195 msgid "Amateur" -msgstr "" +msgstr "Amateur" #: judge/ratings.py:196 msgid "Expert" @@ -2868,40 +2865,64 @@ msgstr "Preparando sus datos de envío" msgid "Preparing your comment data" msgstr "Preparando los datos de tus comentarios" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +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/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "Página {page_number} de {total_pages}" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "No se permiten lotes vacíos." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "Los puntos deben ser definidos para el caso no lote #%d." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "El archivo de entrada para el caso %d no existe: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "El archivo de salida para el caso %d no existe: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "El caso de inicio de lote #%d requiere puntos." -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "Intento de acabar el grupo de casos fuera de uno en el caso #%d." -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "¿Cómo ha corrompido la ruta del archivo zip?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "¿Cómo corrompió la ruta del generador?" @@ -2956,45 +2977,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "Página %d de Posts" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "¿Nos aburrimos, eh?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "Debes resolver como mínimo un problema antes de poder votar." -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "Comentario no encontrado." -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." -msgstr "" +msgstr "No puede votar sus propios comentarios." -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Ya has votado." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Editado desde sitio" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "Editando comentario" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "No hay tal concurso" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "No se pudo encontrar un concurso con la clave \"%s\"." @@ -3003,111 +3024,111 @@ msgstr "No se pudo encontrar un concurso con la clave \"%s\"." msgid "Contests" msgstr "Concursos" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "No se pudo encontrar dicho concurso." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Acceso al concurso \"%s\" denegado" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "Clonar Concurso" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" -msgstr "" +msgstr "Concurso clonado de %s" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "Concurso no en curso" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" no esta actualmente en curso." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "PUM Baneado" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 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:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "No se puede entrar" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "No puedes unirte a este concurso." -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "Ingrese el código de acceso para \"%s\"" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "No estás en el concurso \"%s\"." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "Concursos en %(month)s" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "F \\d\\e Y" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "%s Estadísticas" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "%s Clasificaciones" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "Su participación en %(contest)s" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "Participación de %(user)s en %(contest)s" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "En vivo" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Participación" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "%s Resultados del Sistema antiplagio MOSS" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "Ejecutando sistema antiplagio MOSS para %s..." -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "Etiqueta de concurso: %s" @@ -3136,249 +3157,257 @@ msgstr "página corrupta %s" msgid "Runtimes" msgstr "Tiempo de ejecución" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "Ninguna organización" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, 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:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "No se pudo encontrar tal organización." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizaciones" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s Miembros" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Unirse a la organización" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Ya estas en esta organización." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Esta organización no está abierta." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Abandonar organización" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "No estás en \"%s\"." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "No se puede solicitar unirse %s" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "Ya tienes una solicitud pendiente para unirte a %s." -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Solicitar para unirse %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Únete a detalle de la solicitud" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "Gestionar solicitudes de unirse para %s" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "Su organización solo puede recibir %d miembro más." msgstr[1] "Su organización solo puede recibir %d miembros más." -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "No puede aprobar %d usuario." msgstr[1] "No puede aprobar %d usuarios." -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d usuario aprobado." msgstr[1] "%d usuarios aprobados." -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d usuario rechazado." msgstr[1] "%d usuarios rechazados." -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "Editando %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "No se puede editar la organización" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "No tiene permitido editar esta organización." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 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:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "No se puede expulsar al usuario" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "¡El usuario que estás intentando expulsar no existe!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "El usuario que está intentando expulsar no está en la organización: %s" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "Clase {name} en {organization}" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "Clase {name} - {organization}" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "No existe ese problema" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, 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:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "Editorial para {0}" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "No hay tal editorial" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "No se pudo encontrar una editorial con el código \"%s\"." -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "No se permite votar sobre este problema." -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "No se permite borrar votos sobre este problema." -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "éxito" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "Enviar a %s" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "Ha enviado demasiados envíos." -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "Esta prohibido enviarlo" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "Usted ha sido declarado persona no grata por este problema. Usted está permanentemente impedido de enviar a este problema." -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Demasiados envíos" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "Usted ha excedido el límite de envíos para este problema." -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "¿Quieres que te banee?" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Clonar Problema" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "Los argumentos del verificador deben ser un objeto JSON." -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "Los argumentos del verificador son JSON inválidos." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "¡Tu archivo zip es inválido!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "Los archivos zip deben terminar en '.zip'" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "Comparando envíos para {0}" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "Editando datos para {0}" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "Editando datos para %s" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "Generado init.yml para %s" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "%d envío se ha añadido exitosamente a la cola de rejuzgar." msgstr[1] "%d envíos se han añadido exitosamente a la cola de rejuzgar." -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "Las mejores soluciones para %s" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, 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:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, 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/register.py:26 +#: judge/views/register.py:23 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:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Zona horaria" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Lenguaje preferido" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "¿Suscribete en el boletín de noticias?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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 está ocupada. Solo se permite un registro por dirección." -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Registrarse" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "Clave de activación inválida" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Fallo de autenticación" @@ -3461,77 +3490,77 @@ msgstr "Otro" msgid "Language statistics" msgstr "Estadísticas del lenguaje" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Estado" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Matriz de versiones" +msgid "Version" +msgstr "Versión" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "Permiso denegado. Resolver %(problem)s para verlo." -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "No se puede acceder al envío" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "Permiso denegado." -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Envío de %(problem)s por %(user)s" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Todos los envíos" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Todos mis envíos" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Todos los envíos de %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Todos los envíos para %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "Mis envíos para %(problem)s" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Los envíos de %(user)s para %(problem)s" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "Mis envíos en %(contest)s" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "Envíos de %(user)s en %(contest)s" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "Los envíos de {user} para {problem} en {contest}" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "Los envíos de {user} para el problema {number} en {contest}" @@ -3586,102 +3615,157 @@ msgstr "nadie" msgid "New Ticket Message For: %s" msgstr "Nuevo Mensaje de Ticket para: %s" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "Habilitar Autenticación en Dos Pasos" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" -msgstr "" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" +msgstr "Editar Autenticación en Dos Pasos" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "Deshabilitar Autenticación en Dos Pasos" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "Respuesta WebAuthn inválida" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "Nombre inválido" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "El personal con permisos elevados en el sitio no puede desactivar la Autenticación en dos pasos" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "Realizar Autenticación en Dos Pasos" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "No existe este usuario" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "No hay nombre de usuario \"%s\"." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "Mi cuenta" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Usuario %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Iniciar sesión" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j M Y, G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "Preparando tus datos..." -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "Descargar tus datos" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "No se puede editar el perfil" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Actualizado en el sitio" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Editar perfil" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "Token API generado para el usuario" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "Token API eliminado para el usuario" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "Códigos de scratch generados para el usuario" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Tabla de calificación" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "¿Está seguro de que quiere rejuzgar TODOS los envíos?" @@ -3707,13 +3791,13 @@ msgstr "Terminar" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "Desactivar" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "Activar" @@ -3733,49 +3817,50 @@ msgstr "Ver los votos del problema" msgid "Edit user" msgstr "Editar usuario" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Hola, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "Detener la suplantación" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Cerrar sesión" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Iniciar sesión" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "o" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "Registrarse" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "modo de espectador" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "Este sitio funciona mejor con JavaScript activado." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Editar" @@ -3975,15 +4060,15 @@ msgstr "Puntuación" msgid "No votes" msgstr "No hay votos" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "Clic para copiar" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "Copiar" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "¡Copiado!" @@ -4064,7 +4149,7 @@ msgstr "Calendario" msgid "Info" msgstr "Información" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Estadística" @@ -4279,7 +4364,7 @@ msgstr "Tasa de AC" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Usuarios" @@ -4287,7 +4372,7 @@ msgstr "Usuarios" msgid "Editorials" msgstr "Editoriales" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "Editorial" @@ -4452,19 +4537,19 @@ msgstr "Cancelar Descalificación" msgid "Disqualify" msgstr "Descalificar" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 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:156 +#: templates/contest/ranking.html:51 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:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "Ver la participación del usuario" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Mostrar organizaciones" @@ -4635,6 +4720,17 @@ msgstr "Tiempo:" msgid "Reason:" msgstr "Razón:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Usuario" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Tiempo" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "No hay solicitudes para aprobar." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "¿Eliminar?" @@ -4687,59 +4783,67 @@ msgstr "Actualizar vista previa" msgid "Enter a new code for the cloned problem:" msgstr "Entra un nuevo código para el problema clonado:" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "precisión (dígitos decimales)" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "Ver YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "Mostrar columnas:" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "Prefijo de salida" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "Límite de salida" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "Verificador" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "Argumentos del generador" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Tipo" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "Archivo de entrada" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "Archivo de salida" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "¿Prueba previa?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "¡Enviar!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "Añadir nuevo caso" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "Guardar" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "Autor:" msgstr[1] "Autores:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "Filtrar por tipo..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "Problemas populares" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Categoría" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Tipos" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "Déjalo vacío para no filtrar por lenguaje" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "Déjalo vacío para no filtrar por resultado" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "Se necesita valores válidos para las IDs de inicio y final." -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "La ID final debe ser posterior a la ID de inicio." -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, python-brace-format msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" msgstr "Vas a rejuzgar {count} envíos. ¿Estás seguro?" -#: templates/problem/manage_submission.html:96 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "Vas a rejuzgar bastantes envíos. ¿Estás seguro?" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "Rejuzgar Envíos" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "Filtrar por ID:" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "ID de inicio:" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "ID final:" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "Este rango incluye ambos puntos." -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "Filtrar por lenguaje:" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "Rejuzgar envíos seleccionados" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "Recalificar Todo" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "Vas a recalificar %(count)s envío." msgstr[1] "Vas a recalificar %(count)s envíos." -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "¿Estás seguro de que quieres recalificar %(count)s envío?" msgstr[1] "¿Estás seguro de que quieres recalificar %(count)s envíos?" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "Recalificar todos los envíos" @@ -4927,11 +5031,11 @@ msgstr "Puntos:" msgid "(partial)" msgstr "(parcial)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Límite de tiempo:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Límite de memoria:" @@ -4968,14 +5072,6 @@ msgstr "Solicitar aclaración" msgid "Report an issue" msgstr "Reportar un problema" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Límite de Tiempo:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Límite de Memoria:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Búsqueda de problema" @@ -5013,8 +5109,8 @@ msgstr "Tipos de problema" msgid "Point range" msgstr "Rango de puntos" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Ir" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "Aleatorio" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "Identificación" @@ -5035,31 +5131,31 @@ msgstr "Resultado" msgid "Date" msgstr "Fecha" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "Tu código fuente debe contener como máximo 65536 caracteres." -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "¡Advertencia!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "Su lenguaje predeterminado, %(language)s, no está disponible para este problema y no se seleccionó." -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "Te queda %(left)s envío" msgstr[1] "Te quedan %(left)s envíos" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "Te quedan 0 envíos" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "Ningún juez esta disponible para este problema." @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "Usuario o contraseña inválida." @@ -5267,7 +5425,7 @@ msgstr "El equipo de %(site_name)s" msgid "Password reset on %(site_name)s" msgstr "Contraseña se reinicia en %(site_name)s" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Continuar >" @@ -5280,36 +5438,40 @@ msgstr "El registro está cerrado actualmente. Ponte en contacto con un administ msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." msgstr "Has sido registrado con éxito. Se le ha enviado un correo electrónico para confirmar su registro." -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Email" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(de nuevo, por confirmación)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(seleccione la ciudad importante más cercana)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "seleccionar en el mapa" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "Lenguaje por defecto" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "Organizaciones afiliadas" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "Notificarme sobre los próximos concursos" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "Al registrarte, estás aceptando nuestros [Términos y Condiciones][0]." -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "¡Registrarse!" @@ -5343,25 +5505,25 @@ 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:90 -msgid "Refresh Two Factor Authentication" -msgstr "" +msgid "Edit Two Factor Authentication" +msgstr "Editar Autenticación en Dos Pasos" #: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" msgstr "Habilitar Autenticación en Dos Pasos" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 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:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "Error al contactar con el servidor." @@ -5462,8 +5624,8 @@ msgid "Judges" msgstr "Jueces" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Matriz de Versiones" +msgid "Versions" +msgstr "Versiones" #: templates/submission/info-base.html:8 #, python-format @@ -5487,27 +5649,27 @@ msgstr "A ocurrido un error interno durante la clasificación." msgid "Error information" msgstr "Información de error" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "¿Está seguro que quiere rejuzgar?" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "Filtrar por estatus..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "Filtrar por lenguaje..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Filtrar envíos" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Total:" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Estuviste desconectado. Actualiza para mostrar las últimas actualizaciones." @@ -5544,7 +5706,7 @@ msgstr "Ver estado" msgid "View raw source" msgstr "Ver fuente sin procesar" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Reenviar" @@ -5630,15 +5792,15 @@ msgstr "Aprobar las pruebas previas no garantiza una puntuación completa en los msgid "Submission aborted!" msgstr "¡Envío abortado!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Ver fuente" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "Presione Ctrl-Enter o Comando-Enter para abortar." -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "Abortar" @@ -5661,7 +5823,7 @@ msgstr "¡Completado!" #: templates/task_status.html:95 msgid "Failed!" -msgstr "" +msgstr "¡Fallo!" #: templates/ticket/list.html:70 templates/ticket/ticket.html:95 msgid "Reopened: " @@ -5671,33 +5833,33 @@ msgstr "Reabierto: " msgid "Closed: " msgstr "Cerrado: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "Usar notificaciones de escritorio" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "Ocultar tickets cerrados" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "Solo mostrar mis tickets" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "Usuario que envía" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "Asignado" msgstr[1] "Asignados" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "Título" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "Asignados" @@ -5748,152 +5910,152 @@ msgstr "Notas de asignado" msgid "Nothing here." msgstr "Nada aquí." -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Rango" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "Buscar por nombre do usuario..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 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:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "Esto invalidará cualquier token de API anterior." -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 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:115 +#: templates/user/edit-profile.html:110 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:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "Generando..." -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "Eliminar" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 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:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "Generar" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 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:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" -msgstr "" +msgstr "¡No podrás ver tus códigos scratch después de salir de esta página!" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Descripción propia:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "Seleccione la ciudad importante más cercana" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Zona horaria:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Idioma:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "Tema del sitio:" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "Tema editor:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Motor matemático:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "Organizaciones afiliadas:" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "Cambiar tu avatar" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "Cambiar tu contraseña" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "Autenticación en dos pasos habilitada:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "Token API:" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "Oculto" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "Autenticación en dos pasos habilitada:" + +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "Códigos scratch:" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "Oculto" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "Autenticación en dos pasos deshabilitada:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "Token API:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "Claves de seguridad:" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "Eliminar" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "Introduzca un nombre para esta clave" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "Añadir" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "Script de usuario:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "Actualizar perfil" diff --git a/locale/es/LC_MESSAGES/djangojs.po b/locale/es/LC_MESSAGES/djangojs.po index 0f8f42814b..3ce0e7a8c3 100644 --- a/locale/es/LC_MESSAGES/djangojs.po +++ b/locale/es/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2023-01-11 00:49\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:52\n" "Last-Translator: \n" "Language-Team: Spanish\n" "Language: es_ES\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d día %h:%m:%s" msgstr[1] "%d días %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/fr/LC_MESSAGES/django.po b/locale/fr/LC_MESSAGES/django.po index 513698b83b..d1b33319ed 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,145 +17,146 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Catalan" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Allemand" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Grec" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Anglais" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Espagnol" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Français" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Croate" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Hongrois" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japonais" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Coréen" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Portugais Brésilien" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Roumain" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Russe" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Serbe (Latin)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turc" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnamien" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Chinois Simplifié" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Chinois Traditionnel" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "Activation Réussie !" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "Inscription Terminée" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "Inscription Non Autorisée" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Accueil" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Contenu" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Cacher les commentaires" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d commentaire caché avec succès." msgstr[1] "%d commentaires cachés avec succès." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Cacher les commentaires" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Décacher les commentaires" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d commentaire non caché avec succès." msgstr[1] "%d commentaires non cachés avec succès." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Décacher les commentaires" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Page associée" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "page associée" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Concours inclus" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Problème" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Problèmes" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Rejuger" @@ -187,97 +188,98 @@ msgstr "Accès" msgid "Justice" msgstr "Justice" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Marquer les concours comme visibles" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d concours marqué visible avec succès." msgstr[1] "%d concours marqués visibles avec succès." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Marquer les concours comme visibles" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Marquer les concours comme invisibles" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d concours marqué invisible avec succès." msgstr[1] "%d concours marqués invisibles avec succès." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "Marquer les concours comme invisibles" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Verrouiller les soumissions au concours" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d concours a été verrouillé avec succès." msgstr[1] "%d concours ont été verrouillés avec succès." -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "Verrouiller les soumissions au concours" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Déverrouiller les soumissions au concours" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d concours a été déverrouillé avec succès." msgstr[1] "%d concours ont été déverrouillés avec succès." -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "Déverrouiller les soumissions au concours" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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 rejugée avec succès." msgstr[1] "%d soumissions ont été programmées pour être rejugées avec succès." -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Recalculer les résultats" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d participation recalculée." msgstr[1] "%d participations recalculées." -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "Recalculer les résultats" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "nom d'utilisateur" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "virtuel" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "chemin du lien" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Résumé" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "utilisateur" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "objet" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Voir sur le site" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "Taxonomie" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Points" @@ -308,9 +310,8 @@ msgstr "Points" msgid "Limits" msgstr "Limites" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Langage" @@ -318,106 +319,95 @@ msgstr "Langage" msgid "History" msgstr "Histoire" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Auteurs" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "auteurs" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Définir la date de publication à maintenant" -#: judge/admin/problem.py:193 +#: 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:197 -msgid "Set publish date to now" -msgstr "Définir la date de publication à maintenant" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Marquer les problèmes comme publics" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "%d problème marqué public avec succès." msgstr[1] "%d problèmes marqués publics avec succès." -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "Marquer les problèmes comme publics" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Marquer les problèmes comme privés" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "Marquer les problèmes comme privés" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "problème" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "fuseau horaire" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Utilisateur" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Courriel" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Fuseau horaire" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "courriel" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "date d'adhésion" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Recalculer les scores" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d utilisateur a des notes recalculées." msgstr[1] "%d utilisateurs ont des notes recalculées." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Recalculer les scores" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "Régénérer" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Description" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Information" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Capacités" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Rien" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s dans %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Rejuger les soumissions sélectionnées" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Vous n'avez pas le droit de rejuger des soumissions." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Vous n'avez pas le droit de rejuger AUTANT de soumissions." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Rejuger les soumissions sélectionnées" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Recompter les soumissions sélectionnées" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d soumission a été recomptée avec succès." msgstr[1] "%d soumissions ont été recomptées avec succès." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Recompter les soumissions sélectionnées" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "code du problème" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Code du problème" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "nom du problème" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Nom du problème" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "temps" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Temps" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "mémoire" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d Ko" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f Mo" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Mémoire" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "langue" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "Verrouillé" @@ -523,7 +517,8 @@ msgstr "Juge en Ligne" msgid "Comment body" msgstr "Corps du commentaire" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Ton personnage est muet, le crapaud." @@ -616,121 +611,129 @@ msgstr "Les égalités seront départagées par la somme des derniers temps de s msgid "IOI (pre-2016)" msgstr "IOI (avant 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "Les jetons d'authentification à deux facteurs doivent être de {count} chiffre décimal." msgstr[1] "Les jetons d'authentification à deux facteurs doivent être de {count} chiffres décimaux." -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Jeton d'authentification à deux facteurs invalide." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "Les codes scratch doivent être 16 caractères de Base32." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "Code scratch invalide." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "S'abonner aux nouvelles du concours" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Activer les fonctionnalités expérimentales" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "Vous devez résoudre au moins un problème avant de pouvoir modifier votre profil." -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "Vous ne pouvez pas faire partie de plus de {count} organisation publique." msgstr[1] "Vous ne pouvez pas faire partie de plus de {count} organisations publiques." -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "Cette adresse e-mail est déjà utilisée." + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "Mot de passe incorrect" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Télécharger les commentaires ?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Télécharger les soumissions ?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "Filtrer par code de problème glob :" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "Laisser vide pour inclure toutes les soumissions" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Filtrer par résultat :" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "Veuillez sélectionner au moins une chose à télécharger." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "N'importe quel juge" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Nom d'utilisateur" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Mot de passe" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Longueur de code invalide." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Réponse WebAuthn invalide." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." -msgstr "Aucun défi WebAuthn n'a été lancé." +msgstr "Aucun défi WebAuthn émis." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." -msgstr "" +msgstr "Identifiant d'identification WebAuthn invalide." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "Jeton d'authentification à deux facteurs ou code scratch invalide." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "Doit spécifier soit totp_token ou webauthn_response." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Le code du problème doit être ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Le problème avec le code existe déjà." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "L'id du concours doit être ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Le concours avec la clé existe déjà." @@ -739,108 +742,114 @@ msgstr "Le concours avec la clé existe déjà." msgid "N j, Y, g:i a" msgstr "j N Y, G \\h i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "le {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "Non évalué" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "Suivre le thème du site" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Laisser en tant que LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "SVG seulement" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "MathML seulement" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax avec repli SVG" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Détecter la meilleure qualité" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "Suivre le système par défaut" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Clair" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Sombre" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "Le code de la page doit être ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "commentateur" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "date de publication" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "page associée" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "votes" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "corps du commentaire" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "caché" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "parent" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "révisions" + +#: judge/models/comment.py:39 msgid "comment" msgstr "commentaire" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "commentaires" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Éditorial pour %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "%(page)s par %(user)s" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "vote de commentaire" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "votes de commentaires" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "Ignorer le verrouillage du commentaire" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "verrouillage du commentaire" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "verrouillages des commentaires" @@ -896,16 +905,11 @@ msgstr "id du concours" msgid "contest name" msgstr "nom du concours" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "auteurs" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "Ces utilisateurs pourront modifier le concours." -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "conservateurs" @@ -913,7 +917,7 @@ msgstr "conservateurs" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "Ces utilisateurs pourront modifier le concours, mais ne seront pas listés comme auteurs." -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "testeurs" @@ -923,11 +927,11 @@ msgstr "Ces utilisateurs pourront voir le concours, mais pas le modifier." #: judge/models/contest.py:80 msgid "testers see scoreboard" -msgstr "testeurs voient tableau de bord" +msgstr "testeurs voient tableau de score" #: judge/models/contest.py:81 msgid "If testers can see the scoreboard." -msgstr "Si les testeurs peuvent voir le tableau de bord." +msgstr "Si les testeurs peuvent voir le tableau de score." #: judge/models/contest.py:82 msgid "testers see submissions" @@ -949,12 +953,12 @@ msgstr "Ces utilisateurs pourront observer le concours, mais ne pourront pas voi msgid "description" msgstr "description" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "problèmes" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "heure de début" @@ -962,18 +966,18 @@ msgstr "heure de début" msgid "end time" msgstr "heure de fin" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "limite de temps" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "visible publiquement" #: judge/models/contest.py:94 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." -msgstr "" +msgstr "Doit être activé même pour les concours privés d'organisation, où il détermine si le concours est visible par les membres des organisations spécifiées." #: judge/models/contest.py:97 msgid "contest rated" @@ -993,11 +997,11 @@ msgstr "Ces utilisateurs pourront voir le tableau de bord." #: judge/models/contest.py:102 msgid "can see contest submissions" -msgstr "" +msgstr "peut voir les soumissions de concours" #: judge/models/contest.py:104 msgid "These users will be able to see in-contest submissions." -msgstr "Ces utilisateurs pourront voir les soumissions dans le concours." +msgstr "Ces utilisateurs pourront voir les soumissions effectuées pendant le concours." #: judge/models/contest.py:106 msgid "scoreboard visibility" @@ -1087,11 +1091,11 @@ msgstr "afficher les paramètres du formulaire court" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "Afficher ou non une section contenant les paramètres du concours sur la page du concours." -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "privés aux organisations" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "organisations" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "Si privé aux organisations, seules ces classes peuvent voir le concours." #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "image OpenGraph" @@ -1141,7 +1145,7 @@ msgstr "le nombre de participants en direct" msgid "contest summary" msgstr "résumé du concours" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "Texte simple, affiché dans la meta description, par exemple pour les réseaux sociaux." @@ -1152,9 +1156,9 @@ msgstr "code d'accès" #: judge/models/contest.py:158 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." -msgstr "" +msgstr "Un code facultatif pour demander aux concurrents avant qu'ils soient autorisés à rejoindre le concours. Laissez-le vide pour le désactiver." -#: judge/models/contest.py:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "personae non gratae" @@ -1184,7 +1188,7 @@ msgstr "script d'étiquette du problème du concours" #: judge/models/contest.py:169 msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." -msgstr "" +msgstr "Une fonction Lua personnalisée pour générer des étiquettes de problème. Requiert une fonction unique avec un paramètre entier, l'indice du problème de concours indexé à partir de zéro, et retourne une chaîne, l'étiquette." #: judge/models/contest.py:172 msgid "contest lock" @@ -1192,7 +1196,7 @@ msgstr "verrouillage du concours" #: judge/models/contest.py:173 msgid "Prevent submissions from this contest from being rejudged after this date." -msgstr "" +msgstr "Empêche les soumissions de ce concours d'être rejugées après cette date." #: judge/models/contest.py:175 msgid "precision points" @@ -1202,213 +1206,213 @@ msgstr "points de précision" msgid "Number of digits to round points to." msgstr "Nombre de chiffres vers lesquels arrondir les points." -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Voir les concours privés" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Modifier vos propres concours" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Modifier tous les concours" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "Cloner concours" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "MOSS le concours" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Évaluer les concours" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "Codes d'accès au concours" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "Créer des concours privés" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "Modifier la visibilité des concours" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "Modifier le script d'étiquette du problème du concours" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "Changer le statut de verrouillage du concours" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "concours" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "concours" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "concours associé" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "score" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "temps cumulé" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "disqualifiée" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "Si cette participation est disqualifiée." -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "champ de départage" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "id de participation virtuelle" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 signifie non virtuel, sinon la n-ème participation virtuelle." -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "données spécifiques au format du concours" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "%(user)s observant dans %(contest)s" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "%(user)s dans %(contest)s, v%(id)d" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "%(user)s dans %(contest)s" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "participation au concours" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "participations au concours" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "points" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "partiel" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "est prétesté" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "ordre" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "remplacement de la longueur du préfixe de sortie" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "maximum de soumissions" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Nombre maximum de soumissions pour ce problème, ou laisser vide pour aucune limite." -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "Pourquoi inclure un problème que vous ne pouvez pas soumettre ?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "problème de concours" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "problèmes de concours" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "soumission" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "participation" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "Si cette soumission a été exécutée uniquement sur les prétests." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "soumission de concours" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "soumissions de concours" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "rang" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "classement" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "classement brut" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "performance au concours" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "dernière évaluation" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "classement du concours" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "classements du concours" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "résultat MOSS du concours" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "résultats MOSS du concours" @@ -1460,7 +1464,7 @@ msgstr "titre de l'article" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "visibilité publique" @@ -1513,7 +1517,7 @@ msgstr "nom de la catégorie de problème" msgid "problem type" msgstr "type de problème" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "types de problème" @@ -1525,7 +1529,7 @@ msgstr "ID du groupe de problème" msgid "problem group name" msgstr "nom du groupe de problème" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "groupe de problème" @@ -1562,7 +1566,7 @@ msgstr "URL de l'icône." msgid "license text" msgstr "texte de la licence" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "licence" @@ -1586,280 +1590,267 @@ msgstr "Visible si problème résolu" msgid "Only own submissions" msgstr "Seulement les propres soumissions" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "code du problème" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "Un code court et unique pour le problème, utilisé dans l'URL après « /problem/ »." -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "nom du problème" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "Le nom complet du problème, tel qu'il apparaît dans la liste des problèmes." -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "corps du problème" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "créateurs" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Ces utilisateurs pourront modifier le problème et seront listés comme auteurs." -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Ces utilisateurs pourront modifier le problème, mais ne seront pas listés comme auteurs." -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "Ces utilisateurs pourront voir le problème privé, mais pas le modifier." -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "Le type de problème, comme indiqué sur la page du problème." -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "Le groupe de problème, indiqué sous Catégorie dans la liste des problèmes." -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "La limite de temps pour ce problème, en secondes. Les fractions de secondes (par exemple 1.5) sont acceptées." -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "limite de mémoire" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "La limite de mémoire pour ce problème, en kilo-octets (par exemple, 256 Mo = 262144 Ko)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "court circuit" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Points attribués pour la résolution du problème. Les points sont affichés avec un suffixe 'p' si partiel." -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "permet des points partiels" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "langages autorisés" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "Liste des langages de soumission autorisés." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "géré manuellement" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "Si les juges devraient être autorisés à gérer les données ou non." -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "date de publication" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "Ne dispose pas de la capacité magique d'autopublication pour des raisons de rétrocompatibilité." -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "Bannit les utilisateurs sélectionnés de soumettre à ce problème." -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "La licence sous laquelle ce problème est publié." -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "résumé du problème" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "nombre d'utilisateurs" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "Le nombre d'utilisateurs qui ont résolu le problème." -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "taux de résolution" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "autoriser l'accès complet au markdown" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "visibilité de la source de soumission" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "Si privé, seuls ces organisations peuvent voir le problème." -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "Voir les problèmes cachés" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "Modifier ses propres problèmes" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "Modifier tous les problèmes" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "Modifier tous les problèmes publics" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "Modifier les problèmes avec le markup complet" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Cloner problème" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "Changer le champ is_public" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "Changer le champ is_manually_managed" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "Voir les problèmes privés des organisations" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "langue" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "nom traduit" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "description traduite" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "traduction du problème" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "traductions du problème" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "problème clarifié" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "corps de la clarification" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "horodatage de clarification" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "clarification de problème" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "clarifications de problème" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "limite de ressources spécifiques à un langage" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "limites de ressources spécifiques à un langage" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "problème associé" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "date de publication" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "contenu éditorial" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "Voir les solutions cachées" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "solution" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "solutions" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "points proposés" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "Le nombre de points que le votant estime que ce problème mérite." -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "votant" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "date de vote" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." -msgstr "" +msgstr "L'heure à laquelle ce vote a été exprimé." -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "note" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." -msgstr "" +msgstr "Justification pour la valeur de point de problème." -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "vote de problème" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "votes de problème" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "Vote de points par %(voter)s pour %(problem)s" @@ -1885,8 +1876,8 @@ msgid "Non-trailing spaces" msgstr "Pas d'espace en fin de ligne" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "Non ordonné" +msgid "Sorted" +msgstr "Trié" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1932,13 +1923,13 @@ msgstr "désactiver bigInteger / bigDecimal" msgid "checker arguments" msgstr "arguments du vérificateur" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Arguments du vérificateur en tant qu'objet JSON." #: judge/models/problem_data.py:79 msgid "problem data set" -msgstr "" +msgstr "ensemble de données de problème" #: judge/models/problem_data.py:81 msgid "case position" @@ -1980,6 +1971,18 @@ msgstr "valeur de points" msgid "case is pretest?" msgstr "cas est prétest ?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "arguments du vérificateur en tant qu'objet JSON" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "titre de l'organisation" @@ -2046,7 +2049,7 @@ msgstr "Si les membres sont obligés de sélectionner une classe lors de leur ad #: judge/models/profile.py:67 msgid "Class membership cannot be enforced when organization has open enrollment." -msgstr "" +msgstr "L'appartenance à la classe ne peut pas être imposée lorsque l'organisation a une inscription ouverte." #: judge/models/profile.py:95 msgid "Administer organizations" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "Modifier toutes les organisations" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organisation" @@ -2098,7 +2101,7 @@ msgstr "membres" msgid "%(class)s in %(organization)s" msgstr "%(class)s dans %(organization)s" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "classe" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "Thème Ace" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "thème du site" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "heure du dernier accès" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "dernière IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "rang d'affichage" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "Utilisateur Normal" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "Créateur de Problèmes" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "Créateur de Problèmes" msgid "Admin" msgstr "Admin" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "sourdine des commentaires" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "Certains utilisateurs sont au mieux de leur forme lorsqu'ils sont silencieux." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "utilisateur non listé" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "L'utilisateur ne sera pas classé." -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" -msgstr "" +msgstr "interdit de voter sur les valeurs de point de problème" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." -msgstr "" +msgstr "L'utilisateur ne pourra pas voter sur les valeurs de point de problème." -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "script utilisateur" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "JavaScript défini par l'utilisateur pour la personnalisation du site." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "concours en cours" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "moteur mathématique" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." -msgstr "Le moteur de rendu utilisé pour rendre les mathématiques." +msgstr "Le moteur de rendu utilisé pour afficher les mathématiques." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" -msgstr "" +msgstr "TOTP A2F activé" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "Cochez pour activer l'authentification à deux facteurs basée sur TOTP." -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" -msgstr "" +msgstr "WebAuthn A2F activé" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "Cochez pour activer l'authentification à deux facteurs basée sur WebAuthn." -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "Clé TOTP" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." -msgstr "" +msgstr "Clé encodée en Base32 de 32 caractères pour TOTP." -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "La clé TOTP doit être vide ou Base32." -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "codes scratch" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." -msgstr "" +msgstr "Tableau JSON de codes encodés en Base32 de 16 caractères pour les codes scratch." -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." -msgstr "" +msgstr "Les codes scratch doivent être vides ou être un tableau JSON de codes Base32 de 16 caractères." -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" -msgstr "" +msgstr "dernier timecode TOTP" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" -msgstr "Jeton API" +msgstr "jeton API" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." -msgstr "" +msgstr "Jeton d'accès API encodé en hexadécimal de 64 caractères." -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" -msgstr "" +msgstr "Le jeton API doit être None ou hexadécimal" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "notes internes" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "Notes pour les administrateurs concernant cet utilisateur." -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "dernier temps de téléchargement" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "remplacement du nom d'affichage" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "Nom affiché à la place du nom d'utilisateur." -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" -msgstr "" +msgstr "Affiche les éléments en cours de développement" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "Modifier les paramètres TOTP" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "profil utilisateur" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "profils utilisateur" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "nom de l'appareil" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" -msgstr "" +msgstr "ID de l'identification" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "clé publique" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" -msgstr "" +msgstr "compteur de signature" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "Identifiant WebAuthn : %(name)s" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "identifiant WebAuthn" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "identifiants WebAuthn" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" -msgstr "" +msgstr "heure de la demande" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "état" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "En attente" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Approuvé" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Rejeté" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "raison" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "demande d'adhésion de l'organisation" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "demandes d'adhésion de l'organisation" @@ -2355,7 +2362,7 @@ msgstr "identifiant court" #: judge/models/runtime.py:20 msgid "The identifier for this language; the same as its executor id for judges." -msgstr "" +msgstr "L'identificateur pour ce langage ; le même que son identifiant d'exécuteur pour les juges." #: judge/models/runtime.py:22 msgid "long name" @@ -2367,7 +2374,7 @@ msgstr "Nom plus long pour le langage, par exemple « Python 2 » ou « C++11 » #: judge/models/runtime.py:25 msgid "More readable, but short, name to display publicly; e.g. \"PY2\" or \"C++11\". If left blank, it will default to the short identifier." -msgstr "" +msgstr "Nom plus lisible, mais court, à afficher publiquement ; par exemple « PY2 » ou « C++11 ». S'il est laissé vide, il sera défini par défaut sur l'identificateur court." #: judge/models/runtime.py:29 msgid "common name" @@ -2403,11 +2410,11 @@ msgstr "Modèle de code à afficher dans l'éditeur de soumission." #: judge/models/runtime.py:39 msgid "runtime info override" -msgstr "" +msgstr "remplacement d'informations d'exécution" #: 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 "" +msgstr "Ne pas définir à moins que vous sachiez ce que vous faites ! Cela remplacera les informations d'exécution généralement plus spécifiques fournies par le juge !" #: judge/models/runtime.py:42 msgid "language description" @@ -2431,23 +2438,23 @@ msgstr "langages" #: judge/models/runtime.py:116 msgid "language to which this runtime belongs" -msgstr "" +msgstr "langage auquel cette exécution appartient" #: judge/models/runtime.py:117 msgid "judge on which this runtime exists" -msgstr "" +msgstr "juge sur lequel cette exécution existe" #: judge/models/runtime.py:118 msgid "runtime name" -msgstr "" +msgstr "nom d'exécution" #: judge/models/runtime.py:119 msgid "runtime version" -msgstr "" +msgstr "version d'exécution" #: judge/models/runtime.py:120 msgid "order in which to display this runtime" -msgstr "" +msgstr "ordre d'affichage de cette exécution" #: judge/models/runtime.py:124 msgid "judge name" @@ -2455,7 +2462,7 @@ msgstr "nom du juge" #: judge/models/runtime.py:124 msgid "Server name, hostname-style." -msgstr "" +msgstr "Nom du serveur, de style nom d'hôte." #: judge/models/runtime.py:126 msgid "time of creation" @@ -2479,11 +2486,11 @@ msgstr "Si ce juge doit être empêché de se connecter, même si sa clé est co #: judge/models/runtime.py:132 msgid "disable judge" -msgstr "" +msgstr "désactiver le juge" #: judge/models/runtime.py:133 msgid "Whether this judge should be removed from judging queue." -msgstr "" +msgstr "Si ce juge doit être supprimé de la file d'attente de jugement." #: judge/models/runtime.py:134 msgid "judge online status" @@ -2588,15 +2595,15 @@ msgstr "Erreur Interne (erreur du serveur de jugement)" msgid "submission time" msgstr "date de soumission" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "temps d'exécution" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "utilisation de la mémoire" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "points accordés" @@ -2604,141 +2611,141 @@ msgstr "points accordés" msgid "submission language" msgstr "langage de soumission" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "statut" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "résultat" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "erreurs de compilation" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "cas en lot" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "points de cas de test" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "points totaux de cas de test" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "jugée le" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "heure de jugement de la soumission" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" -msgstr "" +msgstr "dernière date de rejugement par l'administrateur" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "a été exécuté sur les prétests seulement" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "verrouillage de la soumission" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "Soumission %(id)d de %(problem)s par %(user)s" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "Abandonner toute soumission" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "Rejuger la soumission" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "Rejuger beaucoup de soumissions" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "Soumettre sans limite" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "Voir toutes les soumissions" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "Resoumettre la soumission des autres" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "Changer le statut de verrouillage de la soumission" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "soumissions" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "soumission associée" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "code source" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "Source de %(submission)s" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "source de soumission" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "sources de soumission" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "ID du cas de test" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "indicateur de statut" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "points possibles" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "numéro de lot" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "commentaires du juge" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "commentaires étendus du juge" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "sortie du programme" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "cas de test de la soumission" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "cas de test de la soumission" @@ -2802,16 +2809,6 @@ msgstr "message de ticket" msgid "ticket messages" msgstr "messages de ticket" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "Page [page] sur [topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "Page %s sur %s" - #: judge/ratings.py:194 msgid "Newbie" msgstr "Débutant" @@ -2854,7 +2851,7 @@ msgstr "Modification des soumissions" #: judge/tasks/submission.py:60 msgid "Recalculating user points" -msgstr "" +msgstr "Recalcul des points de l'utilisateur" #: judge/tasks/user.py:49 msgid "Applying filters" @@ -2868,40 +2865,64 @@ msgstr "Préparation des données de vos soumissions" msgid "Preparing your comment data" msgstr "Préparation des données de vos commentaires" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "Votre fournisseur de courrier électronique n'est pas autorisé en raison d'un historique de mauvaise utilisation. Veuillez utiliser un fournisseur de courrier électronique réputé." + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "Page {page_number} sur {total_pages}" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "Les lots vides ne sont pas autorisés." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." -msgstr "" +msgstr "Les points doivent être définis pour le cas non-lot #%d." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "Le fichier d'entrée pour le cas %d n'existe pas : %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "Le fichier de sortie pour le cas %d n'existe pas : %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." +msgstr "Le début du lot au cas #%d nécessite des points." + +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:129 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "Tentative de terminer le lot en dehors du cas #%d." + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "Comment avez-vous corrompu le chemin zip ?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "Comment avez-vous corrompu le chemin du générateur ?" @@ -2956,45 +2977,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "Page %d d'articles" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "En train de déconner, hein ?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "Vous devez résoudre au moins un problème avant de pouvoir voter." -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "Commentaire non trouvé." -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "Vous ne pouvez pas voter sur vos propres commentaires." -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Vous avez déjà voté." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Modifié à partir du site" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "Édition du commentaire" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "Ce concours n'existe pas" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Impossible de trouver un concours avec la clé « %s »." @@ -3003,111 +3024,111 @@ msgstr "Impossible de trouver un concours avec la clé « %s »." msgid "Contests" msgstr "Concours" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "Impossible de trouver un tel concours." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Accès au concours « %s » refusé" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "Cloner Concours" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "Concours cloné de %s" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "Concours non en cours" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "« %s » n'est pas en cours actuellement." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "Interdit de rejoindre" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "Vous êtes persona non grata pour ce concours. Il vous est définitivement interdit de participer à ce concours." -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "Impossible d'entrer" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "Vous ne pouvez pas rejoindre ce concours." -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "Saisissez le code d'accès pour « %s »" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "Vous n'êtes pas dans le concours « %s »." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "Concours en %(month)s" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "Statistiques de %s" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "Classement de %s" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "Votre participation à %(contest)s" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "La participation de %(user)s à %(contest)s" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "En direct" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Participation" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "Résultats MOSS de %s" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "Exécution du MOSS pour %s..." -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "Balise de concours : %s" @@ -3136,249 +3157,257 @@ msgstr "page corrompue %s" msgid "Runtimes" msgstr "Temps d'exécution" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "Cette organisation n'existe pas" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Impossible de trouver une organisation avec la clé « %s »." -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "Impossible de trouver une telle organisation." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organisations" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "Membres de %s" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Rejoindre l'organisation" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Vous êtes déjà dans l'organisation." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Cette organisation n'est pas ouverte." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Quitter l'organisation" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "Vous n'êtes pas dans « %s »." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "Impossible de demander à rejoindre %s" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "Vous avez déjà une demande d'adhésion à %s en attente." -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Demande d'adhésion à %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Détails de la demande d'adhésion" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "Gestion des demandes d'adhésion à %s" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "Votre organisation ne peut accueillir que %d membre de plus." msgstr[1] "Votre organisation ne peut accueillir que %d membres de plus." -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "Vous ne pouvez pas approuver %d utilisateur." msgstr[1] "Vous ne pouvez pas approuver %d utilisateurs." -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "Approuvé %d utilisateur." msgstr[1] "Approuvé %d utilisateurs." -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "Rejeté %d utilisateur." msgstr[1] "Rejeté %d utilisateurs." -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" -msgstr "" +msgstr "Édition de %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "Impossible de modifier l'organisation" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "Vous n'êtes pas autorisé à modifier cette organisation." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "Vous n'êtes pas autorisé à expulser des personnes de cette organisation." -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "Impossible d'expulser cet utilisateur" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "L'utilisateur que vous essayez d'expulser n'existe pas !" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "L'utilisateur que vous essayez d'expulser ne fait pas partie de l'organisation : %s" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "Classe {name} dans {organization}" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "Classe {name} - {organization}" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "Demande de rejoindre {name} dans {organization}" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "Ce problème n'existe pas" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "Impossible de trouver un problème avec le code « %s »." -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "Éditorial pour {0}" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "Cet éditorial n'existe pas" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "Impossible de trouver un éditorial avec le code « %s »." -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "Non autorisé à voter sur ce problème." -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "Non autorisé à supprimer des votes sur ce problème." -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "réussi" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "Soumettre à %s" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "Vous avez soumis trop de soumissions." -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "Interdit de soumettre" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "Vous êtes persona non grata pour ce problème. Il vous est définitivement interdit de soumettre à ce problème." -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Trop de soumissions" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "Vous avez dépassé la limite de soumission pour ce problème." -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "Voulez-vous que je vous bannisse ?" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Cloner Problème" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "Problème cloné de %s" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "Les arguments du vérificateur doivent être un objet JSON." -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "Les arguments du vérificateur sont des JSON invalides." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "Votre fichier zip est invalide !" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "Les fichiers zip doivent se terminer par « .zip »" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "Comparaison des soumissions pour {0}" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "Modification des données pour {0}" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "Modification des données pour %s" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "init.yml généré pour %s" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions 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 rejugées avec succès." -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "Les meilleures solutions pour %s" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Meilleures solutions pour %(problem)s dans %(contest)s" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "Meilleures solutions pour le problème %(number)s dans %(contest)s" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "Le nom d'utilisateur doit uniquement contenir des lettres, des chiffres et des tirets bas." -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Fuseau horaire" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Langage préféré" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "S'abonner à la newsletter ?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "Le courriel « %s » est déjà prise. Une seule inscription est autorisée par courriel." -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "S'inscrire" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "Clé d'Activation Invalide" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Échec d'authentification" @@ -3461,77 +3490,77 @@ msgstr "Autre" msgid "Language statistics" msgstr "Statistiques de langage" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Statut" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Matrice de version" +msgid "Version" +msgstr "Version" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." -msgstr "" +msgstr "Autorisation refusée. Résolvez %(problem)s pour pouvoir le visualiser." -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "Impossible d'accéder à la soumission" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." -msgstr "" +msgstr "Autorisation refusée." -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Soumission de %(problem)s par %(user)s" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Toutes les soumissions" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Toutes mes soumissions" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Toutes les soumissions par %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Toutes les soumissions pour %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "Mes soumissions pour %(problem)s" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Soumissions de %(user)s pour %(problem)s" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "Mes soumissions dans %(contest)s" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "Soumissions de %(user)s dans %(contest)s" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "Soumissions de {user} pour {problem} dans {contest}" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "Soumissions de {user} pour le problème {number} dans {contest}" @@ -3586,102 +3615,157 @@ msgstr "personne" msgid "New Ticket Message For: %s" msgstr "Nouveau Message de Ticket pour : %s" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "Activer l'Authentification à Deux Facteurs" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" -msgstr "Réactiver l'Authentification à Deux Facteurs" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" +msgstr "Modifier l'Authentification à Deux Facteurs" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "Désactiver l'Authentification à Deux Facteurs" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "Réponse WebAuthn invalide" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "Nom invalide" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "Le personnel ne peut pas désactiver l'A2F" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "Effectuer l'Authentification à Deux Facteurs" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "Cet utilisateur n'existe pas" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "Pas de nom d'utilisateur « %s »." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "Mon compte" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Utilisateur %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Entrer" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j M Y, G \\h i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "Préparation de vos données..." -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "Télécharger vos données" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "Impossible de modifier le profil" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Mise à jour sur le site" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Modifier le profil" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "Jeton API généré pour l'utilisateur" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "Jeton API supprimé pour l'utilisateur" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "Codes scratch générés pour l'utilisateur" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Tableau de Classement" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "Vous avez été déconnecté avec succès." -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "Vous avez envoyé trop de demandes de réinitialisation de mot de passe. Veuillez réessayer plus tard." +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "Changer votre adresse e-mail" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "Veuillez cliquer sur le lien envoyé à %s." + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "Êtes-vous sûr de vouloir réévaluer TOUTES les soumissions ?" @@ -3707,13 +3791,13 @@ msgstr "Terminer" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "Désactiver" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "Activer" @@ -3733,49 +3817,50 @@ msgstr "Voir les votes du problème" msgid "Edit user" msgstr "Modifier l'utilisateur" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Bonjour, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "Arrêter d'imiter" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Se déconnecter" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Se connecter" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "ou" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "S'inscrire" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "en observant" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "Ce site fonctionne mieux avec JavaScript activé." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "fièrement propulsé par **DMOJ**" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Modifier" @@ -3975,15 +4060,15 @@ msgstr "Score" msgid "No votes" msgstr "Aucun vote" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "Cliquez pour copier" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "Copier" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "Copié !" @@ -4064,7 +4149,7 @@ msgstr "Calendrier" msgid "Info" msgstr "Info" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Statistiques" @@ -4122,11 +4207,11 @@ msgstr "En observant, le concours se termine dans %(countdown)s." #: templates/contest/contest.html:35 #, python-format msgid "Participating virtually, %(countdown)s remaining." -msgstr "" +msgstr "Participation virtuelle, %(countdown)s restant." #: templates/contest/contest.html:37 msgid "Participating virtually." -msgstr "" +msgstr "Participation virtuelle en cours." #: templates/contest/contest.html:43 msgid "Contest is over." @@ -4279,7 +4364,7 @@ msgstr "Taux d'AC" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Utilisateurs" @@ -4287,7 +4372,7 @@ msgstr "Utilisateurs" msgid "Editorials" msgstr "Éditoriaux" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "Éditorial" @@ -4298,7 +4383,7 @@ msgstr "Êtes-vous sûr de vouloir rejoindre ?" #: templates/contest/list.html:18 msgid "Joining a contest for the first time starts your timer, after which it becomes unstoppable." -msgstr "" +msgstr "Rejoindre un concours pour la première fois déclenche votre chronomètre, après quoi il devient incontrôlable." #: templates/contest/list.html:70 msgid "private" @@ -4364,11 +4449,11 @@ msgstr "Êtes-vous sûr de vouloir quitter ?" #: templates/contest/media-js.html:5 msgid "You cannot come back to a virtual participation. You will have to start a new one." -msgstr "" +msgstr "Vous ne pouvez pas revenir à une participation virtuelle. Vous devrez en commencer une nouvelle." #: templates/contest/media-js.html:10 msgid "Joining a contest starts your timer, after which it becomes unstoppable." -msgstr "" +msgstr "Rejoindre un concours déclenche votre chronomètre, après quoi il devient incontrôlable." #: templates/contest/media-js.html:16 #, python-format @@ -4452,19 +4537,19 @@ msgstr "Dé-disqualifier" msgid "Disqualify" msgstr "Disqualifier" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "Êtes-vous sûr de vouloir disqualifier cette participation ?" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "Êtes-vous sûr de vouloir dé-disqualifier cette participation ?" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "Voir la participation de l'utilisateur" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Afficher les organisations" @@ -4561,7 +4646,7 @@ msgstr "Êtes-vous sûr de vouloir quitter cette organisation ?" #: templates/organization/home.html:30 msgid "You will have to rejoin to show up on the organization leaderboard." -msgstr "" +msgstr "Vous devrez rejoindre à nouveau pour apparaître dans le tableau de classement de l'organisation." #: templates/organization/home.html:32 msgid "You will have to request membership in order to join again." @@ -4635,6 +4720,17 @@ msgstr "Temps :" msgid "Reason:" msgstr "Raison :" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Utilisateur" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Temps" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "Il n'y a aucune demande à approuver." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "Supprimer ?" @@ -4687,59 +4783,67 @@ msgstr "Mettre à jour l'aperçu" msgid "Enter a new code for the cloned problem:" msgstr "Saisissez un nouveau code pour le problème cloné :" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" -msgstr "" +msgstr "précision (chiffres décimaux)" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "Voir le YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "Afficher les colonnes :" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "Préfixe de sortie" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "Limite de sortie" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "Vérificateur" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "Arguments du générateur" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Type" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "Fichier d'entrée" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "Fichier de sortie" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "Prétest ?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Soumettre !" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "Ajouter un nouveau cas" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "Enregistrer" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "Auteur :" msgstr[1] "Auteurs :" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "Filtrer par type..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "Problèmes populaires" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Catégorie" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Types" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "Laisser vide pour ne pas filtrer par langage" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "Laisser vide pour ne pas filtrer par résultat" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "Il faut des valeurs valides pour les ID de début et de fin." -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "L'ID de fin doit être après l'ID de début." -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, python-brace-format msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" msgstr "Vous êtes sur le point de juger {count} soumissions à nouveau. Êtes-vous sûr de vouloir continuer ?" -#: templates/problem/manage_submission.html:96 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "Vous êtes sur le point de juger quelques soumissions à nouveau. Êtes-vous sûr de vouloir continuer ?" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "Rejuger les Soumissions" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "Filtrer par ID :" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "ID de début :" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "ID de fin :" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "Cette plage comprend les deux points d'extrémité." -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "Filtrer par langage :" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "Rejuger les soumissions sélectionnées" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "Tout Recompter" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "Cela recomptera %(count)s soumission." msgstr[1] "Cela recomptera %(count)s soumissions." -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "Êtes-vous sûr de vouloir recompter %(count)s soumission ?" msgstr[1] "Êtes-vous sûr de vouloir recompter %(count)s soumissions ?" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "Recompter toutes les soumissions" @@ -4927,11 +5031,11 @@ msgstr "Points :" msgid "(partial)" msgstr "(partiel)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Limite de temps :" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Limite de mémoire :" @@ -4968,14 +5072,6 @@ msgstr "Demander une clarification" msgid "Report an issue" msgstr "Reporter un problème" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Limite de Temps :" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Limite de Mémoire :" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Recherche de problèmes" @@ -5013,8 +5109,8 @@ msgstr "Types de problème" msgid "Point range" msgstr "Plage de points" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Aller" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "Aléatoire" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5035,31 +5131,31 @@ msgstr "Résultat" msgid "Date" msgstr "Date" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "Votre code source doit contenir au plus 65536 caractères." -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "Attention !" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "Votre langage par défaut, %(language)s, n'est pas disponible pour ce problème et a été désélectionné." -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "Il vous reste %(left)s soumission" msgstr[1] "Il vous reste %(left)s soumissions" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "Il vous reste 0 soumission" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "Aucun juge n'est disponible pour ce problème." @@ -5123,14 +5219,14 @@ msgstr "Votre compte a été activé avec succès." #: templates/registration/activation_email.html:6 #, python-format msgid "Thanks for registering on the %(site_name)s! We're glad to have you." -msgstr "" +msgstr "Merci de vous être inscrit sur %(site_name)s ! Nous sommes ravis de vous avoir parmi nous." #: templates/registration/activation_email.html:8 #, python-format msgid "The last step is activating your account. Please activate your %(site_name)s account in the next %(count)s day." msgid_plural "The last step is activating your account. Please activate your %(site_name)s account in the next %(count)s days." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "La dernière étape est d'activer votre compte. Veuillez activer votre compte %(site_name)s dans le %(count)s prochain jour." +msgstr[1] "La dernière étape est d'activer votre compte. Veuillez activer votre compte %(site_name)s dans les %(count)s prochains jours." #: templates/registration/activation_email.html:14 #: templates/registration/activation_email.txt:8 @@ -5140,12 +5236,12 @@ msgstr "Veuillez cliquer sur le lien suivant pour activer votre compte :" #: templates/registration/activation_email.html:18 #: templates/registration/activation_email.txt:11 msgid "Alternatively, you can reply to this message to activate your account. Your reply must keep the following text intact for this to work:" -msgstr "" +msgstr "Alternativement, vous pouvez répondre à ce message pour activer votre compte. Votre réponse doit contenir le texte suivant pour que cela fonctionne :" #: templates/registration/activation_email.html:22 #, python-format msgid "See you soon! If you have problems activating your account, feel free to send us an email at %(email)s." -msgstr "" +msgstr "À bientôt ! Si vous rencontrez des problèmes pour activer votre compte, n'hésitez pas à nous envoyer un e-mail à %(email)s." #: templates/registration/activation_email.html:25 #: templates/registration/password_reset_email.html:17 @@ -5164,6 +5260,68 @@ msgstr[1] "Veuillez activer votre compte %(site_name)s dans les %(count)s procha msgid "Activate your %(site_name)s account" msgstr "Activez votre compte %(site_name)s" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "Nom d'utilisateur ou mot de passe invalide." @@ -5187,7 +5345,7 @@ msgstr "À plus tard !" #: templates/registration/password_change_done.html:3 msgid "Your password was successfully changed." -msgstr "Votre mot de passe a été modifié avec succès." +msgstr "Votre mot de passe a été changé avec succès." #: templates/registration/password_change_form.html:7 msgid "We found your password in [a database of compromised passwords][0]." @@ -5207,7 +5365,7 @@ msgstr "Envoyer un Email de Réinitialisation" #: templates/registration/password_reset_complete.html:3 msgid "Your password has been set. You may go ahead and log in now." -msgstr "" +msgstr "Votre mot de passe a été défini. Vous pouvez maintenant vous connecter." #: templates/registration/password_reset_confirm.html:9 msgid "Reset Password" @@ -5219,11 +5377,11 @@ msgstr "Lien de réinitialisation de mot de passe invalide." #: templates/registration/password_reset_done.html:4 msgid "We've emailed you instructions for setting your password. You should be receiving them shortly." -msgstr "" +msgstr "Nous vous avons envoyé un e-mail contenant des instructions pour définir votre mot de passe. Vous devriez le recevoir bientô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 "Si vous ne recevez pas d'e-mail, assurez-vous d'avoir entré l'adresse avec laquelle vous vous êtes inscrit et vérifiez votre dossier spam." #: templates/registration/password_reset_email.html:6 #, python-format @@ -5238,7 +5396,7 @@ msgstr "Pour réinitialiser le mot de passe de votre compte « %(username)s », #: templates/registration/password_reset_email.html:14 #, python-format msgid "See you soon! If you have problems resetting your password, feel free to shoot us an email at %(email)s." -msgstr "" +msgstr "À bientôt ! Si vous rencontrez des problèmes pour réinitialiser votre mot de passe, n'hésitez pas à nous envoyer un e-mail à %(email)s." #: templates/registration/password_reset_email.txt:1 #, python-format @@ -5267,7 +5425,7 @@ msgstr "L'équipe %(site_name)s" msgid "Password reset on %(site_name)s" msgstr "Réinitialisation du mot de passe sur %(site_name)s" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Continuer >" @@ -5280,36 +5438,40 @@ msgstr "L'inscription est actuellement fermée. Veuillez contacter un administra msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." msgstr "Vous avez été inscrit avec succès. Un email a été envoyé au courriel que vous avez fourni pour confirmer votre inscription." -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Courriel" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(encore, pour confirmation)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(sélectionnez votre ville principale la plus proche)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "choisir dans la carte" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "Langage par défaut" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "Organisations affiliées" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "Informez-moi des concours à venir" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "En vous inscrivant, vous acceptez nos [conditions générales d'utilisation][0]." -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "S'inscrire !" @@ -5343,25 +5505,25 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "Saisissez le code à 6 chiffres généré par votre application :" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" -msgstr "Réactiver l'Authentification à Deux Facteurs" +msgid "Edit Two Factor Authentication" +msgstr "Modifier l'Authentification à Deux Facteurs" #: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" msgstr "Activer l'Authentification à Deux Facteurs" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "Vous trouverez ci-dessous une liste de codes scratch à usage unique." #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "Ces codes ne peuvent être utilisés qu'une seule fois et sont destinés à être utilisés en cas d'urgence." #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "Vous pouvez utiliser ces codes pour vous connecter à votre compte ou désactiver l'authentification à deux facteurs." @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "Si vous avez besoin de plus de codes scratch, vous pouvez les régénérer dans l'onglet « Modifier le profil »." #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "Veuillez les noter et les conserver dans un endroit sûr." @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "Si vous perdez votre appareil d'authentification et que vous ne pouvez pas utiliser vos codes scratch, les administrateurs de %(site_name)s ne seront PAS en mesure de récupérer votre compte. Veuillez conserver vos codes scratch en lieu sûr !" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "WebAuthn n'est pas supporté par votre navigateur." #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "Impossible de contacter le serveur." @@ -5462,13 +5624,13 @@ msgid "Judges" msgstr "Juges" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Matrice de Version" +msgid "Versions" +msgstr "Versions" #: templates/submission/info-base.html:8 #, python-format msgid "%(date)s on %(judge)s" -msgstr "" +msgstr "%(date)s sur %(judge)s" #: templates/submission/internal-error-message.html:3 #, python-format @@ -5487,27 +5649,27 @@ msgstr "Une erreur interne s'est produite lors de la notation." msgid "Error information" msgstr "Informations sur l'erreur" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "Êtes-vous sûr de vouloir rejuger ?" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "Filtrer par statut..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "Filtrer par langage..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Filtrer les soumissions" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Total :" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Vous avez été déconnecté. Rafraîchissez pour afficher les dernières mises à jour." @@ -5544,7 +5706,7 @@ msgstr "Voir le statut" msgid "View raw source" msgstr "Voir la source brute" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Resoumettre" @@ -5624,21 +5786,21 @@ msgstr "%(points)s/%(total)s points" #: templates/submission/status-testcases.html:161 msgid "Passing pretests does not guarantee a full score on system tests." -msgstr "" +msgstr "Le passage des prétests ne garantit pas un score complet sur les tests du système." #: templates/submission/status-testcases.html:164 msgid "Submission aborted!" msgstr "Soumission abandonnée !" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Voir la source" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "Appuyez sur Ctrl-Enter ou Command-Enter pour abandonner." -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "Abandonner" @@ -5671,33 +5833,33 @@ msgstr "Réouvert : " msgid "Closed: " msgstr "Fermé : " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "Utiliser la notification de bureau" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "Masquer les tickets fermés" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "Afficher mes tickets uniquement" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "Utilisateur de dépôt" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "Destinataire" msgstr[1] "Destinataires" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "Titre" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "Destinataires" @@ -5748,152 +5910,152 @@ msgstr "Notes du destinataire" msgid "Nothing here." msgstr "Rien ici." -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Rang" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "Recherche par nom..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." -msgstr "" +msgstr "Les administrateurs de ce site exigent que tout le personnel ait l'authentification à deux facteurs activée, elle ne peut donc pas être désactivée pour le moment." -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "Êtes-vous sûr de vouloir générer ou régénérer votre jeton API ?" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "Cela invalidera tous les jetons API précédents." -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "Il permet également d'accéder à votre compte sans authentification à deux facteurs." -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "Vous ne pourrez plus voir votre jeton API après avoir quitté cette page !" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." -msgstr "" +msgstr "Génération..." -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "Supprimer" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "Êtes-vous sûr de vouloir supprimer votre jeton API ?" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "Générer" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "Êtes-vous sûr de vouloir supprimer cette clé de sécurité ?" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "Êtes-vous sûr de vouloir générer ou régénérer un nouveau jeu de codes scratch ?" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." -msgstr "" +msgstr "Cela invalidera tous les codes scratch précédents que vous avez." -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "Vous ne pourrez plus voir vos codes scratch après avoir quitté cette page !" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Auto-description :" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "Sélectionnez votre ville principale la plus proche" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Fuseau horaire :" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Langage :" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "Thème du site :" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "Thème de l'éditeur :" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Moteur mathématique :" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "Organisations affiliées :" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "Changer votre avatar" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "Changer votre mot de passe" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "L'authentification à deux facteurs est activée :" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "Jeton API :" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "Réactiver" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "Caché" + +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "L'authentification à deux facteurs est activée :" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "Codes scratch :" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "Caché" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "Si vous avez besoin de plus de codes scratch, vous pouvez les régénérer ici." -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "L'authentification à deux facteurs est désactivée :" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "Jeton API :" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "Clés de sécurité :" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "Supprimer" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "Saisissez un nom pour cette clé" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "Ajouter" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "Script utilisateur :" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "Mettre à jour profil" @@ -5904,7 +6066,7 @@ msgstr "pondérée %(percent)s (%(pp)spp)" #: templates/user/prepare-data.html:64 msgid "Are you sure you want to prepare a download?" -msgstr "" +msgstr "Êtes-vous sûr de vouloir préparer un téléchargement ?" #: templates/user/prepare-data.html:79 msgid "We are currently preparing your data." @@ -5921,7 +6083,7 @@ msgstr "Vous ne pouvez préparer un nouveau téléchargement de données qu'une #: templates/user/prepare-data.html:87 msgid "Once your data is ready, you will find a download link on this page." -msgstr "" +msgstr "Une fois vos données prêtes, vous trouverez un lien de téléchargement sur cette page." #: templates/user/prepare-data.html:104 msgid "Submissions" diff --git a/locale/fr/LC_MESSAGES/djangojs.po b/locale/fr/LC_MESSAGES/djangojs.po index 304d1e8536..a47de1cf9f 100644 --- a/locale/fr/LC_MESSAGES/djangojs.po +++ b/locale/fr/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-04-25 00:45\n" "Last-Translator: \n" "Language-Team: French\n" "Language: fr_FR\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d jour %h:%m:%s" msgstr[1] "%d jours %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" @@ -65,8 +65,8 @@ msgstr[1] "%(cnt)d soumissions au total" #: resources/user_profile.js:69 msgid "%(cnt)d submission in the last year" msgid_plural "%(cnt)d submissions in the last year" -msgstr[0] "%(cnt)d soumission l'année dernière" -msgstr[1] "%(cnt)d soumissions l'année dernière" +msgstr[0] "%(cnt)d soumission au cours de la dernière année" +msgstr[1] "%(cnt)d soumissions au cours de la dernière année" #: resources/user_profile.js:74 msgid "%(cnt)d submission in %(year)d" diff --git a/locale/hr/LC_MESSAGES/django.po b/locale/hr/LC_MESSAGES/django.po index c9d906bbf2..e542081444 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Croatian\n" "Language: hr_HR\n" @@ -17,99 +17,103 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" -msgstr "" +msgstr "Katalonski" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Njemački" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Grčki" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Engleski" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Španjolski" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Hrvatski" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Mađarski" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" -msgstr "" +msgstr "Japanski" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Korejski" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" -msgstr "" +msgstr "Brazilski Portugalski" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Rumunjski" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Ruski" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Srpski (Latinica)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turski" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vijetnamski" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Pojednostavljeni Kineski" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" -msgstr "" +msgstr "Tradicionalni kineski" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" -msgstr "" +msgstr "Uspješna aktivacija" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" -msgstr "" +msgstr "Registracija završena" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" -msgstr "" +msgstr "Registracija nije dozvoljena" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Početna" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Sadržaj" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Sakrij komentare" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." @@ -117,11 +121,11 @@ msgstr[0] "%d komentar uspješno sakriven." msgstr[1] "%d komentara uspješno sakriven." msgstr[2] "%d komentara uspješno sakriveno." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Sakrij komentare" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Otkrij komentare" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." @@ -129,41 +133,38 @@ msgstr[0] "%d komentar uspješno otkriven." msgstr[1] "%d komentara uspješno otkriveno." msgstr[2] "%d komentara uspješno otkriveno." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Otkrij komentare" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Povezana stranica" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "povezana stranica" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Uključena natjecanja" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Zadatak" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Zadaci" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" -msgstr "" +msgstr "Ponovno evaluiraj" #: judge/admin/contest.py:122 msgid "Settings" -msgstr "" +msgstr "Postavke" #: judge/admin/contest.py:125 msgid "Scheduling" @@ -175,7 +176,7 @@ msgstr "Pojedinosti" #: judge/admin/contest.py:127 msgid "Format" -msgstr "" +msgstr "Oblik" #: judge/admin/contest.py:128 templates/contest/ranking-table.html:5 msgid "Rating" @@ -183,13 +184,17 @@ msgstr "Bodovi" #: judge/admin/contest.py:129 msgid "Access" -msgstr "" +msgstr "Pristup" #: judge/admin/contest.py:131 judge/admin/problem.py:136 msgid "Justice" msgstr "Pravda" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Označi natjecanja vidljivima" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -197,11 +202,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Označi natjecanja skrivenima" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -209,11 +214,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Zaključaj predavanje rješenja na natjecanju" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -221,11 +226,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Otključaj predavanje rješenja na natjecanju" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -233,11 +238,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -245,7 +246,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Ponovno izračunaj rezultate" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -253,39 +258,36 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "korisničko ime" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "virtualno" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "putanja veze" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Sažetak" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "korisnik" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Prikaži na stranici" @@ -306,8 +308,8 @@ msgid "Taxonomy" msgstr "Taksonomija" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Bodovi" @@ -316,9 +318,8 @@ msgstr "Bodovi" msgid "Limits" msgstr "Ograničenja" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Jezik" @@ -326,11 +327,16 @@ msgstr "Jezik" msgid "History" msgstr "Povijest" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Autori" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "autori" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -338,11 +344,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Označi zadatke javnima" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -350,11 +356,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:207 -msgid "Mark problems as public" -msgstr "Označi zadatke javnima" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Označi zadatke privatnima" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -362,43 +368,31 @@ 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:217 -msgid "Mark problems as private" -msgstr "Označi zadatke privatnima" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "zadatak" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "vremenska zona" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Korisnik" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "E-mail" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Vremenska zona" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "datum registracije" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Ponovno izračunavanje rezultata" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." @@ -406,30 +400,26 @@ 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:123 -msgid "Recalculate scores" -msgstr "Ponovno izračunavanje rezultata" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Opis" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Informacije" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Mogućnosti" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Nepoznato" @@ -461,19 +451,23 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s u %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Reevaluiraj označena predana rješenja" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Nemate dozvolu za ponovno evaluiranje predanog rješenja." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Nemate dozvolu za ponovnu evaluaciju toliko puno predanih rješenja." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Reevaluiraj označena predana rješenja" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Ponovno ocijeni označena predana rješenja" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -481,38 +475,38 @@ msgstr[0] "%d predano rješenje je uspješno ponovno ocijenjeno." msgstr[1] "%d predanih rješenja je uspješno ponovno ocijenjeno." msgstr[2] "%d predanih rješenja je uspješno ponovno ocijenjeno." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Ponovno ocijeni označena predana rješenja" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "kod zadatka" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Kod zadatka" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "ime zadatka" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Ime zadatka" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "vrijeme" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Vrijeme" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "memorija" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Memorija" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "jezik" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -536,7 +530,8 @@ msgstr "Evaluator" msgid "Comment body" msgstr "Tekst komentara" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Budi tiho, mala žabice." @@ -631,7 +626,7 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "IOI (prije 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." @@ -639,31 +634,31 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Pogrešan token autentikacije u dva koraka." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Pretplati se na novosti na natjecanju" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Uključi eksperimentalne opcije" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." @@ -671,83 +666,91 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Preuzmi komentare?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Preuzmi predana rješenja?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Filtriraj prema rezultatu:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "Molimo označite barem jednu stavku za preuzimanje." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Bilo koji evaluator" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Korisničko ime" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Lozinka" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Pogrešan WebAuthn odgovor." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "ID zadatka mora biti ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Već postoji zadatak koji koristi taj ID." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "ID natjecanja mora biti ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Već postoji natjecanje koje koristi taj ID." @@ -756,108 +759,114 @@ msgstr "Već postoji natjecanje koje koristi taj ID." msgid "N j, Y, g:i a" msgstr "j. N Y. G:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "u {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Ostavi kao LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Samo SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Samo MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax sa SVG rezervom" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Prepoznaj najbolju kvalitetu" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Svijetla" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Tamna" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "ID stranice mora biti ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "komentator" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "vrijeme objave" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "povezana stranica" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "glasova" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "tekst komentara" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "nadređeni komentar" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "revizije" + +#: judge/models/comment.py:39 msgid "comment" msgstr "komentar" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "komentari" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Objašnjenje za %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -913,16 +922,11 @@ msgstr "ID natjecanja" msgid "contest name" msgstr "naziv natjecanja" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "autori" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -930,7 +934,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -966,12 +970,12 @@ msgstr "" msgid "description" msgstr "opis" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "zadaci" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "vrijeme početka" @@ -979,12 +983,12 @@ msgstr "vrijeme početka" msgid "end time" msgstr "vrijeme kraja" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "vremensko ograničenje" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "javno vidljivo" @@ -1104,11 +1108,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "privatno za organizacije" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "organizacije" @@ -1138,7 +1142,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "OpenGraph slika" @@ -1158,7 +1162,7 @@ msgstr "trenutni broj natjecatelja" msgid "contest summary" msgstr "sažetak natjecanja" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1171,7 +1175,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "persona non grata" @@ -1219,213 +1223,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Pregledaj privatna natjecanja" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Uredi vlastita natjecanja" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Uredi sva natjecanja" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "Kloniraj natjecanje" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "MOSS natjecanje" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "natjecanje" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "natjecanja" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "bodovi" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "bodovi" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "redoslijed" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "predano rješenje" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "sudjelovanje" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "bodovi" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1477,7 +1481,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1530,7 +1534,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1542,7 +1546,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1579,7 +1583,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1603,280 +1607,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "kod zadatka" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "ime zadatka" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "memorijsko ograničenje" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "Memorijsko ograničenje za ovaj zadatak, u kilobajtima (npr. 256mb = 262144 kilobajta)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "dopušteno djelomično bodovanje" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "dopušteni programski jezici" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "ručno upravljano" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "datum objave" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "sažetak zadatka" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "jezik" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1902,7 +1893,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1949,7 +1940,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -1997,6 +1988,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2074,7 +2077,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organizacija" @@ -2115,7 +2118,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2140,26 +2143,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2169,200 +2176,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2605,15 +2612,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2621,141 +2628,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "status" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2819,16 +2826,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2885,40 +2882,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2976,45 +2997,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3023,111 +3044,111 @@ msgstr "" msgid "Contests" msgstr "Natjecanja" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "Kloniraj Natjecanje" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "F Y." -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Sudjelovanje" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3156,76 +3177,76 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizacije" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Zahtjev za pridruživanje %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." @@ -3233,7 +3254,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." @@ -3241,7 +3262,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -3249,7 +3270,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -3257,152 +3278,160 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "Uređivanje %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "Nije moguće urediti organizaciju" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "Nemate ovlasti za uređivanje ove organizacije." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "Nemate ovlasti za izbacivanje ljudi iz ove organizacije." -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "Nije moguće izbaciti korisnika" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "Korisnik kojeg pokušavate izbaciti ne postoji!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, 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/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Previše poslanih rješenja" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3430,51 +3459,51 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Vremenska zona" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "Pretplatite se na naš newsletter?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "" - -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3486,77 +3515,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Status" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, 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:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Sva predana rješenja" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Sva moja predana rješenja" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Sva predana rješenja od korisnika %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Sva predana rješenja za korisnika %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3611,102 +3640,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Prijava" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j. M Y. G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3732,13 +3816,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3758,49 +3842,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -4000,15 +4085,15 @@ msgstr "Bodovi" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4089,7 +4174,7 @@ msgstr "Kalendar" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4307,7 +4392,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4315,7 +4400,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4481,19 +4566,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4664,6 +4749,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Korisnik" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Vrijeme" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4680,7 +4776,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4716,59 +4812,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4787,86 +4891,86 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." @@ -4874,7 +4978,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" @@ -4882,7 +4986,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4960,13 +5064,13 @@ msgstr "Bodovi:" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" -msgstr "" +msgstr "Vremensko ograničenje:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" -msgstr "" +msgstr "Memorijsko ograničenje:" #: templates/problem/problem.html:246 msgid "Problem type" @@ -5003,14 +5107,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5048,8 +5144,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5058,7 +5154,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5070,20 +5166,20 @@ msgstr "Rezultat" msgid "Date" msgstr "Datum" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -5091,11 +5187,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5202,6 +5298,70 @@ msgstr[2] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5305,7 +5465,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5318,36 +5478,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "E-mail" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5381,7 +5545,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5389,17 +5553,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5408,7 +5572,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5426,12 +5590,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5500,7 +5664,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5525,27 +5689,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5582,7 +5746,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5668,15 +5832,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5709,34 +5873,34 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5787,152 +5951,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Vremenska zona:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Jezik:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/hr/LC_MESSAGES/djangojs.po b/locale/hr/LC_MESSAGES/djangojs.po index a8ed9e17e3..0ea7eed204 100644 --- a/locale/hr/LC_MESSAGES/djangojs.po +++ b/locale/hr/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Croatian\n" "Language: hr_HR\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" @@ -25,7 +25,7 @@ msgstr[0] "%d dan %h:%m:%s" msgstr[1] "%d dana %h:%m:%s" msgstr[2] "%d dana %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/hu/LC_MESSAGES/django.po b/locale/hu/LC_MESSAGES/django.po index 545bda0c0e..69f869956d 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -17,145 +17,146 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Német" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Görög" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Angol" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Spanyol" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Francia" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Horvát" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Koreai" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Román" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Orosz" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Szerb (Latin)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnami" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Egyszerűsített Kínai" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Nyitólap" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Tartalom" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Kommentek elrejtése" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d hozzászólás sikeresen elrejtve." msgstr[1] "%d hozzászólás elrejtve." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Kommentek elrejtése" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Kommentek megjelenítése" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d megjegyzés újra megjelenítve." msgstr[1] "%d megjegyzés újra megjelenítve." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Kommentek megjelenítése" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Kapcsolódó lap" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "kapcsolódó lap" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Hozzárendelt versenyek" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Feladat" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Feladatok" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Újratesztel" @@ -187,97 +188,98 @@ msgstr "" msgid "Justice" msgstr "Igazságszolgáltatás" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "felhasználónév" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "virtuális" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "csatolási útvonal" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Összefoglalás" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "felhasználó" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Nézd meg élesben" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "Rendszerezés" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Pontok" @@ -308,9 +310,8 @@ msgstr "Pontok" msgid "Limits" msgstr "Limitek" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Nyelv" @@ -318,106 +319,95 @@ msgstr "Nyelv" msgid "History" msgstr "Előzmények" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Szerzők" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "szerzők" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Jelöld publikusnak a problémákat" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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:207 -msgid "Mark problems as public" -msgstr "Jelöld publikusnak a problémákat" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Jelöld a problémákat privátnak" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "Jelöld a problémákat privátnak" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "feladat" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "időzóna" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Felhasználó" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Email" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Időzóna" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "csatlakozás dátuma" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Pontok újraszámítása" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d felhasználó pontja újraszámolva." msgstr[1] "%d felhasználó pontja újraszámolva." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Pontok újraszámítása" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Leírás" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Információ" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Képességek" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Semmi" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s - %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "A kiválasztott feltöltések újratesztelése" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Nincs jogosultságod a feltöltések újratesztelésére." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Nincs jogosultságod ilyen sok feltöltés újratesztelésére." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "A kiválasztott feltöltések újratesztelése" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "A kiválasztott feltöltések újrapontozása" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d feltöltés sikeresen újrapontozva." msgstr[1] "%d feltöltés sikeresen újrapontozva." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "A kiválasztott feltöltések újrapontozása" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "feladat azonosító" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Feladat azonosító" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "feladat név" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Feladat név" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "idő" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Idő" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "memória" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Memória" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "nyelv" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -523,7 +517,8 @@ msgstr "Online Tesztelő" msgid "Comment body" msgstr "Hozzászólás törzse" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Az útvonalad csendes, kis varangy." @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Iratkozz fel hírlevelünkre" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Kísérleti funkciók engedélyezése" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Felhasználónév" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Jelszó" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "A feladat azonosítónak ^[a-z0-9]+$ kell lennie" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "A verseny azonosítójának ^[a-z0-9]+$ kell lennie" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -739,108 +742,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "Y. N j., G:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "{time}-kor" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Hagy LaTeX-ként" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Csak SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Csak MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax SVG fallback-kel" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Legjobb minőség detektálása" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Világos" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Sötét" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "hozzászóló" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "hozzászólás ideje" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "kapcsolódó lap" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "szavazatok" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "hozzászólás törzse" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "előzmény" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "hozzászólás" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "hozzászólások" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Megoldási útmutató %s-hez" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "hozzászólás értékelése" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "hozzászólás értékelései" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -896,16 +905,11 @@ msgstr "verseny azonosítója" msgid "contest name" msgstr "verseny neve" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "szerzők" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "kurátorok" @@ -913,7 +917,7 @@ msgstr "kurátorok" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "tesztelők" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "leírás" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "feladatok" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "kezdés" @@ -962,12 +966,12 @@ msgstr "kezdés" msgid "end time" msgstr "befejezés" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "időkorlát" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "nyilvánosan látható" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "privát a csoport számára" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "csoportok" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "OpenGraph kép" @@ -1141,7 +1145,7 @@ msgstr "az éles résztvevők száma" msgid "contest summary" msgstr "verseny összefoglaló" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1154,7 +1158,7 @@ msgstr "hozzáférési kód" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "nemkívánatos személy" @@ -1202,213 +1206,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Privát versenyek mutatása" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Saját versenyek szerkesztése" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Az összes verseny szerkesztése" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Versenyek értékelése" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "Verseny hozzáférési kódok" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "verseny" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "versenyek" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "pontszám" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "összes idő" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "virtuális részvételi azonosító" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "verseny részvétel" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "verseny részvételek" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "pontok" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "részleges" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "pretesztes-e" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "sorrend" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "versenyfeladat" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "versenyfeladatok" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "feltöltés" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "részvétel" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "verseny feltöltés" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "verseny feltöltések" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "helyezés" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "értékelés" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "utolsó értékelt" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "verseny értékelés" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "verseny értékelések" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1460,7 +1464,7 @@ msgstr "bejegyzés címe" msgid "slug" msgstr "csonk" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "láthatóság" @@ -1513,7 +1517,7 @@ msgstr "feladat kategória név" msgid "problem type" msgstr "feladat típus" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "feladat típusok" @@ -1525,7 +1529,7 @@ msgstr "feladat csoport azonosító" msgid "problem group name" msgstr "feladat csoport név" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "feladat csoport" @@ -1562,7 +1566,7 @@ msgstr "URL az ikonhoz." msgid "license text" msgstr "licenc szöveg" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "licenc" @@ -1586,280 +1590,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "feladat azonosító" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "feladat név" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "feladat törzs" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "szerzők" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 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:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "memória korlát" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "A feladat memória limitje kilobyte-okban (pl. 256mb = 262144 kilobyte)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "részleges pontok engedélyezése" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "engedélyezett nyelvek" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "manuáisan kezelt" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "publikálás ideje" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "feladat összefoglaló" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Feladat klónozása" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "nyelv" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "lefordított név" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "lefordított leírás" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "feladat fordítás" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "feladat fordítások" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "pontosított feladat" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "pontosítás törzse" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "pontosítás időbélyege" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "nyelv specifikus erőforrás korlát" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "nyelv specifikus erőforrás korlátok" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "hozzárendelt probléma" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "publikálás dátuma" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "megoldási útmutató tartalom" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "megoldás" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "megoldások" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,8 +1876,8 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "Rendezetlen" +msgid "Sorted" +msgstr "" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1932,7 +1923,7 @@ msgstr "" msgid "checker arguments" msgstr "checker argumentumai" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Checker argumentumai JSON objektumként." @@ -1980,6 +1971,18 @@ msgstr "pont érték" msgid "case is pretest?" msgstr "ez az eset preteszt?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "checker argumentumai JSON objektumként" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "csoport neve" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "csoport" @@ -2098,7 +2101,7 @@ msgstr "tagok" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "utolsó belépés ideje" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "utolsó IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "megjelenített rang" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "" msgid "Admin" msgstr "Admin" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "hozzászólás lenémítása" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "Néhány felhasználó a legjobb amikor csendesek." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "felhasználói szkript" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "Felhasználó által meghatározott JavaScript a webhely testreszabásához." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "jelenlegi verseny" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "matek motor" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "A matek ábrákat renderelő motor." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "felhasználói profil" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "felhasználói profilok" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "kérési idő" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "állapot" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "Elbírálás alatt" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Jóváhagyva" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Elutasítva" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "ok" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "csoport belépési kérelem" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "csoport belépési kérelmek" @@ -2588,15 +2595,15 @@ msgstr "Belső Hiba (tesztelő szerver hiba)" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "futási idő" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "memória használat" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2604,141 +2611,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "állapot" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "eredmény" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "fordítási hibák" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "teszteset pontjai" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "ezen tesztelve" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "forráskód" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "teszteset azonosító" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "tesztelési visszajelzés" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "program kimenet" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2802,16 +2809,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2868,40 +2865,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "Bemeneti fájl a %d esetre nem létezik: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "Kimeneti fájl a %d esetre nem létezik: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2956,45 +2977,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: 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:28 msgid "Messing around, are we?" msgstr "Játszogatunk, he?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Már szavaztál." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Szerkesztve az oldalról" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "Hozzászólás szerkesztése" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "Nincs ilyen verseny" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Nem található verseny a \"%s\" kulccsal." @@ -3003,111 +3024,111 @@ msgstr "Nem található verseny a \"%s\" kulccsal." msgid "Contests" msgstr "Versenyek" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "Nem található ilyen verseny." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Hozzáférés a \"%s\" versenyhez megtagadva" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "A verseny nincs folyamatban" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" nincs folyamatban." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, 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:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "Nem vagy a \"%s\" versenyben." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "Y. F" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Részvétel" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3136,249 +3157,257 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "Nincs ilyen csoport" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Nem található csoport a \"%s\" kulccsal." -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "Nem található ilyen csoport." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Csoportok" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s Tagok" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Belépés a csoportba" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Már benne vagy a csoportba." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Ez a csoport nem nyílt." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Csoport elhagyása" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "Nem vagy \"%s\"-ben." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Kérés a \"%s\"-hez való csatlakozásra" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Belépési kérés részletei" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "%s belépési kéréseinek kezelése" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, 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:313 +#: judge/views/organization.py:340 #, 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:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "%s szerkesztése" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "Nem lehet szerkeszteni a csoportot" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "Nincs jogosultságod szerkeszteni ezt a csoportot." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 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:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "Nem lehet kirúgni a felhasználót" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 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:386 +#: judge/views/organization.py:413 #, 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/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "Nincs ilyen feladat" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "Megoldás útmutató {0}-hez" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "Feltöltéstől eltiltott" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to 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:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Túl sok feltöltés" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Feladat Klónozása" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "A zip fájlod nem érvényes!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "init.yml generálva %s-hez" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "Legjobb megoldások %s-hez" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, 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:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Időzóna" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Preferált nyelv" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "Feliratkozol a hírlevélre?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "" - -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Regisztráció" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Azonosítási hiba" @@ -3461,77 +3490,77 @@ msgstr "Egyéb" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Státusz" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Verzió mátrix" +msgid "Version" +msgstr "Verzió" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Összes beküldés" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Összes beküldésem" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3586,102 +3615,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "Nincs ilyen felhasználó" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "Saját fiók" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Felhasználó %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Belépés" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "Y. M j., G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Frissítve az oldalon" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Profil szerkesztése" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Ranglista" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3707,13 +3791,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3733,49 +3817,50 @@ msgstr "" msgid "Edit user" msgstr "Felhasználó szerkesztése" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Heló, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Kilépés" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "vagy" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "megfigyelés" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "Az oldal JavaScript engedélyezésével működik a legjobban." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Szerkesztés" @@ -3975,15 +4060,15 @@ msgstr "Pont" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4064,7 +4149,7 @@ msgstr "Naptár" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4279,7 +4364,7 @@ msgstr "AC arány" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Felhasználók" @@ -4287,7 +4372,7 @@ msgstr "Felhasználók" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "Megoldási útmutató" @@ -4452,19 +4537,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Csoportok mutatása" @@ -4635,6 +4720,17 @@ msgstr "Idő:" msgid "Reason:" msgstr "Ok:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Felhasználó" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Idő" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "Nincsenek jóváhagyásra váló kérések." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "Törlés?" @@ -4687,59 +4783,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "Kimenet limit" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "Checker" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "Generátor argumentumok" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Típus" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "Bementi fájl" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "Kimeneti fájl" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "Preteszt?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Beküld!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "Új eset hozzáadása" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "Szerző:" msgstr[1] "Szerzők:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "Szűrés típus szerint..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Kategória" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Típusok" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4927,11 +5031,11 @@ msgstr "Pontok:" msgid "(partial)" msgstr "(részleges)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Időkorlát:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Memóriakorlát:" @@ -4968,14 +5072,6 @@ msgstr "Pontosítást kérek" msgid "Report an issue" msgstr "Hiba jelentése" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Időkorlát:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Memóriakorlát:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Feladat keresés" @@ -5013,8 +5109,8 @@ msgstr "Feladat típusok" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "Azonosító" @@ -5035,31 +5131,31 @@ msgstr "Eredmény" msgid "Date" msgstr "Dátum" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5267,7 +5425,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Folytatás >" @@ -5280,36 +5438,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Email" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(újra, megerősítésként)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "válassz a térképről" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "Alapértelmezett nyelv" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "Kapcsolódó csoportok" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5343,7 +5505,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5351,17 +5513,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5462,8 +5624,8 @@ msgid "Judges" msgstr "Tesztelők" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Verzió Mátrix" +msgid "Versions" +msgstr "Verziók" #: templates/submission/info-base.html:8 #, python-format @@ -5487,27 +5649,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5544,7 +5706,7 @@ msgstr "Állapot megtekintése" msgid "View raw source" msgstr "Nyers forrás megkekintése" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Újraküld" @@ -5630,15 +5792,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Forráskód megtekintése" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "Megszakít" @@ -5671,33 +5833,33 @@ msgstr "Újranyitva: " msgid "Closed: " msgstr "Lezárva: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "Asztali értesítés használata" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "Csak a saját hibajegyek mutatása" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5748,152 +5910,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Önleírás:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Időzóna:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Nyelv:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Matek motor:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "Kapcsolódó csoportok:" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "Felhasználói szkript:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/hu/LC_MESSAGES/djangojs.po b/locale/hu/LC_MESSAGES/djangojs.po index 0d0f7c8b4c..3b8b835249 100644 --- a/locale/hu/LC_MESSAGES/djangojs.po +++ b/locale/hu/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Hungarian\n" "Language: hu_HU\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d nap %h:%m:%s" msgstr[1] "%d nap %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/it/LC_MESSAGES/django.po b/locale/it/LC_MESSAGES/django.po index 58b597c1ee..65e8eac9a2 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:49\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,122 +17,123 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Catalano" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Tedesco" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Greco" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Inglese" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Spagnolo" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Francese" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Croato" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Ungherese" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Giapponese" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Coreano" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Rumeno" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Russo" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turco" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnamita" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Cinese Semplificato" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Cinese Tradizionale" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:43 -msgid "Hide comments" +#: judge/admin/comments.py:47 +msgid "Unhide comments" msgstr "" -#: judge/admin/comments.py:47 +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "" #: judge/admin/contest.py:31 @@ -140,28 +141,28 @@ msgid "Included contests" msgstr "" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" -msgstr "" +msgstr "Problemi" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "" #: judge/admin/contest.py:122 msgid "Settings" -msgstr "" +msgstr "Impostazioni" #: judge/admin/contest.py:125 msgid "Scheduling" @@ -169,115 +170,116 @@ msgstr "" #: judge/admin/contest.py:126 msgid "Details" -msgstr "" +msgstr "Dettagli" #: judge/admin/contest.py:127 msgid "Format" -msgstr "" +msgstr "Formato" #: judge/admin/contest.py:128 templates/contest/ranking-table.html:5 msgid "Rating" -msgstr "" +msgstr "Valutazione" #: judge/admin/contest.py:129 msgid "Access" -msgstr "" +msgstr "Accesso" #: judge/admin/contest.py:131 judge/admin/problem.py:136 msgid "Justice" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" -msgstr "" +msgstr "nome utente" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" -msgstr "" +msgstr "virtuale" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" -msgstr "" +msgstr "Riassunto" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" -msgstr "" +msgstr "utente" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -308,9 +310,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "" @@ -318,106 +319,95 @@ msgstr "" msgid "History" msgstr "" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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 -msgid "Mark problems as public" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" +#: judge/admin/profile.py:119 +msgid "date joined" msgstr "" -#: judge/admin/profile.py:113 -msgid "date joined" +#: judge/admin/profile.py:123 +msgid "Recalculate scores" msgstr "" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "" -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:222 +msgid "time" msgstr "" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:226 +msgid "memory" msgstr "" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:238 -msgid "Memory" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" msgstr "" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -523,7 +517,8 @@ msgstr "" msgid "Comment body" msgstr "" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -739,108 +742,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" +#: judge/models/choices.py:24 +msgid "Follow site theme" msgstr "" #: judge/models/choices.py:60 -msgid "SVG only" +msgid "Leave as LaTeX" msgstr "" #: judge/models/choices.py:61 -msgid "MathML only" +msgid "SVG only" msgstr "" #: judge/models/choices.py:62 -msgid "MathJax with SVG fallback" +msgid "MathML only" msgstr "" #: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "" + +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -896,16 +905,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -913,7 +917,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "" @@ -962,12 +966,12 @@ msgstr "" msgid "end time" msgstr "" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1141,7 +1145,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1154,7 +1158,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1202,213 +1206,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1460,7 +1464,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1513,7 +1517,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1525,7 +1529,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1562,7 +1566,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1586,280 +1590,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,7 +1876,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1932,7 +1923,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -1980,6 +1971,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "" @@ -2098,7 +2101,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2588,15 +2595,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2604,141 +2611,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2802,16 +2809,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2868,40 +2865,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2956,45 +2977,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3003,111 +3024,111 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3136,249 +3157,257 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3461,77 +3490,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3586,102 +3615,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3707,13 +3791,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3733,49 +3817,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -3975,15 +4060,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4064,7 +4149,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4279,7 +4364,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4287,7 +4372,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4452,19 +4537,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4635,6 +4720,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4687,59 +4783,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "" msgstr[1] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4927,11 +5031,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "" @@ -4968,14 +5072,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5013,8 +5109,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5035,31 +5131,31 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5267,7 +5425,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5280,36 +5438,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5343,7 +5505,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5351,17 +5513,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5462,7 +5624,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5487,27 +5649,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5544,7 +5706,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5630,15 +5792,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5671,33 +5833,33 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5748,152 +5910,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/it/LC_MESSAGES/djangojs.po b/locale/it/LC_MESSAGES/djangojs.po index e98bf77551..1dad35b6fc 100644 --- a/locale/it/LC_MESSAGES/djangojs.po +++ b/locale/it/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Italian\n" "Language: it_IT\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 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:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "" diff --git a/locale/ja/LC_MESSAGES/django.po b/locale/ja/LC_MESSAGES/django.po index d2a3970724..0fb35cc96c 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,120 +17,121 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "カタロニア語" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "ドイツ語" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "ギリシャ語" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "英語" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "スペイン語" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "フランス語" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "クロアチア語" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "ハンガリー語" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "日本語" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "韓国語" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "ポルトガル語(ブラジル)" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "ルーマニア語" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "ロシア語" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "セルビア語(ラテン)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "トルコ語" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "ベトナム語" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "簡体字中国語" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "繁体字中国語" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" -msgstr "" +msgstr "有効化が完了しました。" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" -msgstr "" +msgstr "登録が完了しました" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "登録できません" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "ホーム" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "内容" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "コメントを非表示にする" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%dコメントを正常に非表示にしました。" -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "コメントを非表示にする" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "コメントの非表示を解除する" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%dコメントの非表示を正常に解除しました。" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "コメントの非表示を解除する" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "関連するページ" #: judge/admin/contest.py:31 @@ -138,22 +139,22 @@ msgid "Included contests" msgstr "含まれているコンテスト" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "課題" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "課題" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "再判定" @@ -185,91 +186,92 @@ msgstr "アクセス" msgid "Justice" msgstr "正義" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "コンテストを公開する" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d個のコンテストを公開しました。" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "コンテストを公開する" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "コンテストを非公開にする" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d個のコンテストを非公開としました。" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "コンテストを非公開にする" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "コンテストの提出の受付を中止する" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "コンテストの提出の受付を再開する" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "再計算の結果" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d人の参加者を再計算。" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "再計算の結果" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "利用者名" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "仮想" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "リンクパス" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "概要" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "利用者" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "オブジェクト" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "サイト上で表示する" @@ -290,8 +292,8 @@ msgid "Taxonomy" msgstr "分類" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "点数" @@ -300,9 +302,8 @@ msgstr "点数" msgid "Limits" msgstr "制限" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "言語" @@ -310,102 +311,91 @@ msgstr "言語" msgid "History" msgstr "履歴" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "著者" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "公開日付を現在に設定する" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "課題をパブリックに印付けます" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "%d個の課題はパブリックとして印付けられました。" -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "課題をパブリックに印付けます" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "課題をプライベートに印付けます" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "%d個の課題はプライベートとして印付けられました。" -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "課題をプライベートに印付けます" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "課題" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "時間帯" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "利用者" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "電子メール" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "時間帯" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "入会日" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "得点を再計算する" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d人の利用者の得点が再計算されました。" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "得点を再計算する" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "説明" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "情報" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "機能" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "なし" @@ -437,56 +427,60 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(contest)s 中の %(problem)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "選択された提出物を再判定する" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "あなたには提出物を再判定する権限がありません。" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "あなたには、それら多くの提出物を再判定する権限がありません。" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "選択された提出物を再判定する" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "選択した提出物を再採点する" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d個の提出物が正常に再採点されました。" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "選択した提出物を再採点する" - -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "課題のコード" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "課題名" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:222 +msgid "time" msgstr "時間" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "メモリ" + +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "メモリ" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "言語" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -510,7 +504,8 @@ msgstr "オンライン判定" msgid "Comment body" msgstr "コメント本文" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "お黙り、ヒキガエル。" @@ -599,121 +594,129 @@ msgstr "" #: judge/contest_format/legacy_ioi.py:18 msgid "IOI (pre-2016)" -msgstr "" +msgstr "IOI (2016年以前)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "二要素認証のトークンは{count}桁の数字でなければなりません。" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." -msgstr "" +msgstr "無効な二要素認証トークンです。" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "コンテストの更新を購読する" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "実験的な機能を有効化する" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "あなたは{count}個以上の公開組織に参加できない場合があります。" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "結果で絞り込む:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." -msgstr "" +msgstr "ダウンロードするパッケージを少なくとも1つ選択してください。" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "利用者名" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "パスワード" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "課題のコードは ^[a-z0-9]+$ でなければなりません" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "このコードを使用している問題はすでに存在しています。" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "コンテスト id は ^[a-z0-9]+$ でなければなりません" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "同じキーを持つコンテストはすでに存在しています。" @@ -722,108 +725,114 @@ msgstr "同じキーを持つコンテストはすでに存在しています。 msgid "N j, Y, g:i a" msgstr "Y年n月j日 G:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "{time}時点" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "未評価" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "LaTeX のまま" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "SVG のみ" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "MathML のみ" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "SVG フォールバックのある MathJax" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "最高品質を検出する" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "ライト" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "ダーク" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "ページコードは ^[pcs]:[a-z0-9]+$|^b:\\d+$ でなければなりません" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "コメンター" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "投稿時刻" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "関連するページ" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "投票" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "コメント本文" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "非表示" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "親" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "コメント" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "コメント" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "%s の論説" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "コメント投票" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "コメント投票" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -879,16 +888,11 @@ msgstr "コンテスト id" msgid "contest name" msgstr "コンテスト名" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "著者" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "キュレーター" @@ -896,7 +900,7 @@ msgstr "キュレーター" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "テスター" @@ -932,12 +936,12 @@ msgstr "" msgid "description" msgstr "説明" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "課題" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "開始時刻" @@ -945,12 +949,12 @@ msgstr "開始時刻" msgid "end time" msgstr "終了時刻" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "時間制限" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "公開されています" @@ -1070,11 +1074,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "組織へプライベートにする" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "組織" @@ -1104,7 +1108,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "OpenGraph 画像" @@ -1124,7 +1128,7 @@ msgstr "ライブ参加者の人数" msgid "contest summary" msgstr "コンテスト概要" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "ソーシャルメディアなどのメタ説明タグに表示されるプレーンテキスト。" @@ -1137,7 +1141,7 @@ msgstr "アクセスコード" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "感謝しない人" @@ -1185,213 +1189,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "プライベートのコンテストを見る" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "自分のコンテストを編集する" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "全てのコンテストを編集する" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "コンテストをクローンする" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "MOSSコンテスト" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "コンテストを評価する" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "コンテストのアクセスコード" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "プライベートなコンテストの生成" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "コンテスト" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "コンテスト" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "関連するコンテスト" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "得点" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "累積時間" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "仮想参加 id" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "コンテスト参加者" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "コンテスト参加者" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "点数" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "部分点" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "予備テストされているか" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "順番" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "出力プレフィックス長のオーバーライド" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "なぜあなたが提出できない課題を含むのか?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "コンテストの課題" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "コンテストの課題" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "提出" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "参加者" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "この提出物が予備テストだけを実行したのかどうか。" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "コンテスト提出" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "コンテスト提出" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "順位" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "評価" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "最後の評価" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "コンテストの評価" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "コンテストの評価" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1443,7 +1447,7 @@ msgstr "投稿の題目" msgid "slug" msgstr "スラグ" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "一般公開" @@ -1496,7 +1500,7 @@ msgstr "課題分類名" msgid "problem type" msgstr "課題のタイプ" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "課題のタイプ" @@ -1508,7 +1512,7 @@ msgstr "課題のグループ ID" msgid "problem group name" msgstr "課題のグループ名" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "課題グループ" @@ -1545,7 +1549,7 @@ msgstr "アイコンへの URL。" msgid "license text" msgstr "ライセンス本文" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "ライセンス" @@ -1569,280 +1573,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "課題のコード" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "問題に対する短くて唯一なコード、URL で /problem/ の後に使用される。" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "課題名" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "課題本文" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "作成者" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "この課題の秒単位での制限時間。小数秒(例えば1.5)はサポートされています。" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "メモリ制限" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "この課題のメモリ制限、キロバイト単位(例えば 256 mb = 262144 キロバイト)。" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "短絡" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "部分点を許す" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "許可されている言語" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "手動で管理されている" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "発行年月日" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "下位互換性を保つのために自動発行する魔法のような能力は持ちません。" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "課題の概要" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "課題を複製する" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "言語" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "翻訳された名前" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "翻訳された説明" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "翻訳された課題" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "翻訳された課題" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "解説された課題" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "解説本文" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "解説のタイムスタンプ" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "言語固有のリソース制限" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "言語固有のリソース制限" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "関連する課題" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "発行日" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "編集内容" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "解答" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "解答" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "投票者" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "メモ" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "課題投票" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "課題投票" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1868,8 +1859,8 @@ msgid "Non-trailing spaces" msgstr "非末尾スペース" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "順不同" +msgid "Sorted" +msgstr "" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1915,7 +1906,7 @@ msgstr "" msgid "checker arguments" msgstr "チェッカー引数" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "JSON オブジェクトとしてのチェッカー引数。" @@ -1963,6 +1954,18 @@ msgstr "点数" msgid "case is pretest?" msgstr "予備テストのケースか?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "JSON オブジェクトとしてのチェッカー引数" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "組織の名称" @@ -2040,7 +2043,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "組織" @@ -2081,7 +2084,7 @@ msgstr "メンバー" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2106,26 +2109,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "最終アクセス時刻" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "最終 IP アドレス" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "順位を表示する" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2135,200 +2142,200 @@ msgstr "" msgid "Admin" msgstr "管理" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "コメントミュート" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "ある利用者は沈黙の時に能力を発揮する。" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "利用者スクリプト" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "サイトのカスタマイズするためのユーザー定義 JavaScript。" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "現在のコンテスト" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "数式エンジン" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "数式の表示に使用されるレンダリングエンジン。" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "内部メモ" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "ユーザープロフィール" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "ユーザープロフィール" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "要求時刻" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "状態" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "保留中" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "承認済" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "却下された" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "理由" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "組織への参加要求" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "組織への参加要求" @@ -2571,15 +2578,15 @@ msgstr "内部エラー(判定サーバエラー)" msgid "submission time" msgstr "提出時刻" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "実行時間" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "メモリ使用量" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "付与された点数" @@ -2587,141 +2594,141 @@ msgstr "付与された点数" msgid "submission language" msgstr "提出言語" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "状態" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "結果" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "コンパイルエラー" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "バッチのケース" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "テストケースの点数" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "テストケースの合計点" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "判定された" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "予備テストのみ実行された" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "提出" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "関連する提出物" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "ソースコード" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "提出ソース" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "提出ソース" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "テストケースの ID" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "状態フラグ" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "可能な点数" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "バッチ番号" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "判定のフィードバック" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "プログラムの出力" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "提出テストケース" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "提出テストケース" @@ -2785,16 +2792,6 @@ msgstr "チケットのメッセージ" msgid "ticket messages" msgstr "チケットのメッセージ" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "ページ [page] / [topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "ページ %s / %s" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2851,40 +2848,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "あなたの電子メールプロバイダは不正利用の履歴のため許可されていません。信頼できる電子メールプロバイダを利用してください。" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "ページ {page_number} / {total_pages}" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "空のバッチは、許可されていません。" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "非バッチケース #%d のために点数が定義されなければなりません。" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "ケース%dの入力ファイルが存在しません: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "ケース%dの出力ファイルが存在しません: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "ケース #%d のバッチ開始には点数が必要です。" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "ケース #%d の外でバッチの終了を試みる。" -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "どのようにあなたが zip パスを破損したか?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "どのようにあなたがジェネレータのパスを破損したか?" @@ -2936,45 +2957,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "投稿のページ %d" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "私たちはめちゃくちゃですか?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "あなたは既に投票しました。" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "サイトから編集された" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "コメントの編集" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "そのようなコンテストはありません" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "鍵 \"%s\" を持つコンテストは見つかりませんでした。" @@ -2983,111 +3004,111 @@ msgstr "鍵 \"%s\" を持つコンテストは見つかりませんでした。" msgid "Contests" msgstr "コンテスト" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "このようなコンテストは見つかりませんでした。" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "コンテスト \"%s\" へのアクセスは拒否されました" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "コンテストをクローンする" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "開催中ではないコンテスト" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" は現在開催中ではありません。" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "\"%s\" のアクセスコードを入力してください" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "あなたはコンテストに参加していません: \"%s\"。" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "%(month)sのコンテスト" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "Y年n月" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "%s 順位表" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "あなたの %(contest)s への参加" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "%(user)s の %(contest)s への参加" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "ライブ" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "参加" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "コンテストタグ: %s" @@ -3116,245 +3137,253 @@ msgstr "破損ページ %s" msgid "Runtimes" msgstr "ランタイム" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "このような組織はありません" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "鍵 \"%s\" を持つ組織は見つかりませんでした。" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "このような組織を見つけることができませんでした。" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "組織" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s のメンバー" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "所属している組織" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "あなたは、既にこの組織にしょぞくしています。" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "この組織は公開ではありません。" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "組織から脱退する" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "あなたは \"%s\" に所属していません。" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "%s への参加を申し込む" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "参加申込みの詳細" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "%s への参加申込みを管理する" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "あなたの組織はあと%d人のメンバーしか受け入れられません。" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "あなたは%d人の利用者を承認できません。" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d人の利用者を承認しました。" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d人の利用者を拒否しました。" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "%s を編集" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "組織を編集できません" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "あなたは、この組織を編集することは許可されていません。" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "あなたはこの組織から人を追い出すことを許可されていません。" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "利用者を追い出せません" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "あなたが追い出そうとしている利用者は存在しません!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "あなたが追い出そうとしているユーザは組織内にいません: %s" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "そのような課題はありません" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "コード \"%s\" を有する課題は見つかりませんでした。" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} の論説" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "そのような論説はありません" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "コード \"%s\" を有する論説は見つかりませんでした。" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "提出が禁止された" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "あなたはこの課題に感謝しない人として宣言されている。あなたはこの課題に提出することを永続的に禁止されている。" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "提出物が多過ぎます" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "あなたは、この課題の提出制限を超えました。" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "課題を複製する" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "チェッカー引数は JSON オブジェクトでなければなりません。" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "チェッカー引数は不正な JSON です。" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "あなたの zip ファイルは不正です!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "{0} への提出物の比較" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "{0} のデータの編集" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "%s のデータの編集" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "%s への生成された init.yml" @@ -3380,51 +3409,51 @@ msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "%s の最優秀解答" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "%(contest)s 中の %(problem)s への最優秀解答" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "%(contest)s の課題 %(number)s への最優秀解答" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "利用者名は文字、数字またはアンダースコアを含めることができます。" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "時間帯" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "好みの言語" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "ニュースレターを購読しますか?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "あなたの電子メールプロバイダは不正利用の履歴のため許可されていません。信頼できる電子メールプロバイダを利用してください。" - -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "登録" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "認証の失敗" @@ -3436,77 +3465,77 @@ msgstr "その他" msgid "Language statistics" msgstr "言語の統計" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "状態" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "バージョンマトリックス" +msgid "Version" +msgstr "バージョン" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "%(user)s による %(problem)s への提出物" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "全ての提出物" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "私の全ての提出物" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "%s による全ての提出物" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "%s への全ての提出物" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "%(problem)s への私の提出物" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(problem)s への %(user)s による提出物" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "{contest} 中の {problem} への {user} による提出物" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "{contest} 中の課題 {number} への {user} による提出物" @@ -3561,102 +3590,157 @@ msgstr "誰もいません" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "そのような利用者はいません" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "利用者ハンドル \"%s\" はありません。" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "自分のアカウント" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "利用者 %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "ログイン" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "Y年n月j日 G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "プロフィールを編集できません" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "サイトで更新された" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "プロフィールを編集する" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "リーダーボード" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3682,13 +3766,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3708,49 +3792,50 @@ msgstr "" msgid "Edit user" msgstr "利用者を編集する" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "こんにちは、%(username)s。" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "なりすましを停止する" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "ログアウト" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "ログイン" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "または" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "観戦中" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "このサイトはJavaScriptを有効にすると最適に動作します。" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "編集" @@ -3950,15 +4035,15 @@ msgstr "得点" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4039,7 +4124,7 @@ msgstr "カレンダー" msgid "Info" msgstr "情報" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "統計" @@ -4251,7 +4336,7 @@ msgstr "受理率" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "利用者" @@ -4259,7 +4344,7 @@ msgstr "利用者" msgid "Editorials" msgstr "論説" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "論説" @@ -4423,19 +4508,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "利用者の参加を見る" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "組織を表示する" @@ -4606,6 +4691,17 @@ msgstr "時刻:" msgid "Reason:" msgstr "理由:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "利用者" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "時間" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4622,7 +4718,7 @@ msgid "There are no requests to approve." msgstr "承認するための要求がありません。" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "削除しますか?" @@ -4658,59 +4754,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "YAML を見る" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "カラムを表示:" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "出力プレフィクス" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "出力制限" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "チェッカー" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "ジェネレータの引数" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "タイプ" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "入力ファイル" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "出力ファイル" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "事前テストか?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "提出!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "新しいケースを追加する" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4727,98 +4831,98 @@ msgid "Author:" msgid_plural "Authors:" msgstr[0] "著者:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "タイプで絞り込む..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "ホットな課題" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "カテゴリ" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "タイプ" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "受理 %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "言語で絞り込む:" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4894,11 +4998,11 @@ msgstr "点数:" msgid "(partial)" msgstr "(部分点)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "制限時間:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "メモリ制限:" @@ -4933,14 +5037,6 @@ msgstr "解説を要求する" msgid "Report an issue" msgstr "問題を報告する" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "制限時間:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "メモリ制限:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "課題検索" @@ -4978,8 +5074,8 @@ msgstr "課題のタイプ" msgid "Point range" msgstr "点数の範囲" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "実行する" @@ -4988,7 +5084,7 @@ msgid "Random" msgstr "ランダム" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5000,30 +5096,30 @@ msgstr "結果" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "警告!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "あなたのデフォルト言語 %(language)s はこの課題に利用可能ではないので選択を解除しました。" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "あなたには提出物が残っていません" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "この課題は判定器が利用可能ではありません。" @@ -5126,6 +5222,66 @@ msgstr[0] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "不正な利用者名またはパスワードです。" @@ -5229,7 +5385,7 @@ msgstr "%(site_name)s チーム" msgid "Password reset on %(site_name)s" msgstr "%(site_name)s のパスワードをリセットする" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "続行 >" @@ -5242,36 +5398,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "電子メール" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(もう1度、確認のため)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(最寄りの大都市を選択してください)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "地図から選ぶ" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "デフォルトの言語" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "所属組織" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "まもなく開催予定のコンテストを通知する" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "登録!" @@ -5305,7 +5465,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5313,17 +5473,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5332,7 +5492,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5350,12 +5510,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5424,8 +5584,8 @@ msgid "Judges" msgstr "判定器" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "バージョンマトリックス" +msgid "Versions" +msgstr "バージョン" #: templates/submission/info-base.html:8 #, python-format @@ -5449,27 +5609,27 @@ msgstr "採点中に内部エラーが発生しました。" msgid "Error information" msgstr "エラー情報" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "状態で絞り込む..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "言語で絞り込む..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "提出物を絞り込む" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "合計:" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "あなたは切断されました。最終更新を表示するためにリフレッシュして下さい。" @@ -5506,7 +5666,7 @@ msgstr "状態を表示する" msgid "View raw source" msgstr "生のソースを表示する" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "再提出する" @@ -5592,15 +5752,15 @@ msgstr "予備テストに通過したことは、システムテストでの満 msgid "Submission aborted!" msgstr "提出が中断された!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "ソースを表示する" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "中断する" @@ -5633,32 +5793,32 @@ msgstr "再オープンしました: " msgid "Closed: " msgstr "閉じられました: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "デスクトップ通知を利用する" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "閉じたチケットを非表示にする" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "私のチケットだけを表示する" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "利用者を埋める" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "担当者" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "題目" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "担当者" @@ -5709,152 +5869,152 @@ msgstr "担当者メモ" msgid "Nothing here." msgstr "何もありません。" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "ランク" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "ハンドルで検索..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "自己紹介:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "最寄りの大都市を選択してください" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "時間帯:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "言語:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "エディタのテーマ:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "数式エンジン:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "所属組織:" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "アバターを変更する" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "パスワードを変更する" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "非表示" + +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "非表示" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "利用者スクリプト:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "プロフィールの更新" diff --git a/locale/ja/LC_MESSAGES/djangojs.po b/locale/ja/LC_MESSAGES/djangojs.po index 688b1a1fe2..4984576880 100644 --- a/locale/ja/LC_MESSAGES/djangojs.po +++ b/locale/ja/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Japanese\n" "Language: ja_JP\n" @@ -17,13 +17,13 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d 日 %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/kk/LC_MESSAGES/django.po b/locale/kk/LC_MESSAGES/django.po new file mode 100644 index 0000000000..2ac7cbcdec --- /dev/null +++ b/locale/kk/LC_MESSAGES/django.po @@ -0,0 +1,6260 @@ +msgid "" +msgstr "" +"Project-Id-Version: dmoj\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:24\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: dmoj\n" +"X-Crowdin-Project-ID: 142963\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: django.po\n" +"X-Crowdin-File-ID: 10\n" + +#: dmoj/settings.py:392 +msgid "Catalan" +msgstr "Catalan" + +#: dmoj/settings.py:393 +msgid "German" +msgstr "Немісше" + +#: dmoj/settings.py:394 +msgid "Greek" +msgstr "Грекше" + +#: dmoj/settings.py:395 +msgid "English" +msgstr "Ағылшынша" + +#: dmoj/settings.py:396 +msgid "Spanish" +msgstr "Испанша" + +#: dmoj/settings.py:397 +msgid "French" +msgstr "Французша" + +#: dmoj/settings.py:398 +msgid "Croatian" +msgstr "Хорватша" + +#: dmoj/settings.py:399 +msgid "Hungarian" +msgstr "Мажар тілі" + +#: dmoj/settings.py:400 +msgid "Japanese" +msgstr "Жапонша" + +#: dmoj/settings.py:401 +msgid "Korean" +msgstr "Кәрісше" + +#: dmoj/settings.py:402 +msgid "Brazilian Portuguese" +msgstr "Бразилиялық португалша" + +#: dmoj/settings.py:403 +msgid "Romanian" +msgstr "Румынше" + +#: dmoj/settings.py:404 +msgid "Russian" +msgstr "Орысша" + +#: dmoj/settings.py:405 +msgid "Serbian (Latin)" +msgstr "Сербше (латынша)" + +#: dmoj/settings.py:406 +msgid "Turkish" +msgstr "Түрікше" + +#: dmoj/settings.py:407 +msgid "Vietnamese" +msgstr "Вьетнамша" + +#: dmoj/settings.py:408 +msgid "Simplified Chinese" +msgstr "Қытайша (Жеңілдетілген)" + +#: dmoj/settings.py:409 +msgid "Traditional Chinese" +msgstr "Қытайша (Дәстүрлі)" + +#: dmoj/urls.py:31 +msgid "Activation Successful!" +msgstr "Белсендіру сәтті өтті!" + +#: dmoj/urls.py:39 +msgid "Registration Completed" +msgstr "Тіркеу аяқталды" + +#: dmoj/urls.py:43 +msgid "Registration Not Allowed" +msgstr "Тіркеуге рұқсат етілмейді" + +#: dmoj/urls.py:95 templates/base.html:193 +msgid "Home" +msgstr "Басты бет" + +#: judge/admin/comments.py:25 judge/admin/interface.py:73 +msgid "Content" +msgstr "Мазмұны" + +#: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Пікірлерді жасыру" + +#: judge/admin/comments.py:43 +#, python-format +msgid "%d comment successfully hidden." +msgid_plural "%d comments successfully hidden." +msgstr[0] "%d пікір сәтті жасырылды." +msgstr[1] "%d пікір сәтті жасырылды." + +#: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Пікірлерді көрсету" + +#: judge/admin/comments.py:50 +#, python-format +msgid "%d comment successfully unhidden." +msgid_plural "%d comments successfully unhidden." +msgstr[0] "%d пікір сәтті көрсетілді." +msgstr[1] "%d пікір сәтті көрсетілді." + +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "байланысты бет" + +#: judge/admin/contest.py:31 +msgid "Included contests" +msgstr "Қосылған сайыстар" + +#: judge/admin/contest.py:65 templates/contest/contest.html:195 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 +#: templates/user/user-problems.html:102 +msgid "Problem" +msgstr "Есеп" + +#: judge/admin/contest.py:66 judge/views/problem.py:353 +#: templates/contest/contest.html:191 templates/user/user-tabs.html:5 +#: templates/user/users-table.html:23 +msgid "Problems" +msgstr "Есептер" + +#: judge/admin/contest.py:77 judge/admin/submission.py:245 +#: 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:90 +msgid "Rejudge" +msgstr "Қайта тексеру" + +#: judge/admin/contest.py:122 +msgid "Settings" +msgstr "Баптаулар" + +#: judge/admin/contest.py:125 +msgid "Scheduling" +msgstr "Кесте" + +#: judge/admin/contest.py:126 +msgid "Details" +msgstr "Егжей" + +#: judge/admin/contest.py:127 +msgid "Format" +msgstr "Форматы" + +#: judge/admin/contest.py:128 templates/contest/ranking-table.html:5 +msgid "Rating" +msgstr "Рейтинг" + +#: judge/admin/contest.py:129 +msgid "Access" +msgstr "Рұқсат" + +#: judge/admin/contest.py:131 judge/admin/problem.py:136 +msgid "Justice" +msgstr "Әділет" + +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Сайысты көрінетін етіп белгілеу" + +#: judge/admin/contest.py:230 +#, python-format +msgid "%d contest successfully marked as visible." +msgid_plural "%d contests successfully marked as visible." +msgstr[0] "%d контест көрінетіндей болып белгіленді." +msgstr[1] "%d контесттер көрінетіндей болып белгіленді." + +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Сайыстарды жасырын етіп белгілеу" + +#: judge/admin/contest.py:239 +#, python-format +msgid "%d contest successfully marked as hidden." +msgid_plural "%d contests successfully marked as hidden." +msgstr[0] "%d контест көрінбейтіндей болып белгіленді." +msgstr[1] "%d контесттер көрінбейтіндей болып белгіленді." + +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "контест тапсырылымдарын бұғаттау" + +#: judge/admin/contest.py:248 +#, python-format +msgid "%d contest successfully locked." +msgid_plural "%d contests successfully locked." +msgstr[0] "%d контест сәтті бұғатталды." +msgstr[1] "%d контесттер сәтті бұғатталды." + +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Сайыс тапсырылымдарын ашу" + +#: judge/admin/contest.py:257 +#, python-format +msgid "%d contest successfully unlocked." +msgid_plural "%d contests successfully unlocked." +msgstr[0] "%d контест бұғаттан сәтті ашылды." +msgstr[1] "%d контесттер бұғаттан сәтті ашылды." + +#: judge/admin/contest.py:280 judge/admin/submission.py:177 +#, python-format +msgid "%d submission was successfully scheduled for rejudging." +msgid_plural "%d submissions were successfully scheduled for rejudging." +msgstr[0] "%d тапсырылымы қайта тексеру үшін күнтізбекке қойылды." +msgstr[1] "%d тапсырылымдары қайта тексеру үшін күнтізбекке қойылды." + +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Нәтижелерді қайта есептеу" + +#: judge/admin/contest.py:359 +#, python-format +msgid "%d participation recalculated." +msgid_plural "%d participations recalculated." +msgstr[0] "%d қатысушысы қайта есептелді." +msgstr[1] "%d қатысушыалыр қайта есептелді." + +#: judge/admin/contest.py:363 judge/admin/organization.py:110 +msgid "username" +msgstr "қолданушы аты" + +#: judge/admin/contest.py:367 templates/base.html:259 +msgid "virtual" +msgstr "виртуалды" + +#: judge/admin/interface.py:28 judge/models/interface.py:46 +msgid "link path" +msgstr "сілтеме бумасы" + +#: judge/admin/interface.py:74 +msgid "Summary" +msgstr "Қорытынды" + +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 +#: judge/models/ticket.py:32 +msgid "user" +msgstr "қолданушы" + +#: judge/admin/interface.py:154 +msgid "object" +msgstr "объект" + +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 +msgid "View on site" +msgstr "Сайтта көру" + +#: judge/admin/problem.py:21 +msgid "Edit reason" +msgstr "Өңдеу себебі" + +#: judge/admin/problem.py:30 +msgid "Describe the changes you made (optional)" +msgstr "Жасаған өзгерістерді сипаттаңыз (міндетті емес)" + +#: judge/admin/problem.py:131 +msgid "Social Media" +msgstr "Әлеуметтік Медиа" + +#: judge/admin/problem.py:132 +msgid "Taxonomy" +msgstr "Таксономия" + +#: judge/admin/problem.py:133 templates/contest/contest.html:196 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 +#: templates/user/user-problems.html:60 +msgid "Points" +msgstr "Ұпайлар" + +#: judge/admin/problem.py:134 +msgid "Limits" +msgstr "Шектеулер" + +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 +msgid "Language" +msgstr "Тіл" + +#: judge/admin/problem.py:137 +msgid "History" +msgstr "Тарих" + +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "авторлар" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Жариялау күнін қазірге орнатыңыз" + +#: judge/admin/problem.py:192 +#, python-format +msgid "%d problem's publish date successfully updated." +msgid_plural "%d problems' publish date successfully updated." +msgstr[0] "%d есептің жарияланған күні сәтті жаңартылды." +msgstr[1] "%d есептің жарияланған күндері сәтті жаңартылды." + +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Есепті жалпыға ортақ етіп белгілеу" + +#: judge/admin/problem.py:201 +#, python-format +msgid "%d problem successfully marked as public." +msgid_plural "%d problems successfully marked as public." +msgstr[0] "%d есеп жалпыға ортақ болып сәтті белгіленді." +msgstr[1] "%d есеп жалпыға ортақ болып сәтті белгіленді." + +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Есепті жеке етіп белгілеу" + +#: judge/admin/problem.py:210 +#, python-format +msgid "%d problem successfully marked as private." +msgid_plural "%d problems successfully marked as private." +msgstr[0] "%d есеп жеке ретінде сәтті белгіленді." +msgstr[1] "%d есеп жеке ретінде сәтті белгіленді." + +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 +#: judge/models/problem_data.py:35 judge/models/submission.py:68 +msgid "problem" +msgstr "есеп" + +#: judge/admin/profile.py:36 judge/admin/profile.py:115 +msgid "timezone" +msgstr "Уақыт белдеуі" + +#: judge/admin/profile.py:111 +msgid "email" +msgstr "эл. пошта" + +#: judge/admin/profile.py:119 +msgid "date joined" +msgstr "қосылу күні" + +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Ұпайларды қайта есептеу" + +#: judge/admin/profile.py:129 +#, python-format +msgid "%d user had scores recalculated." +msgid_plural "%d users had scores recalculated." +msgstr[0] "%d қолданушының ұпайы қайта есептелді." +msgstr[1] "%d қолданушының ұпайы қайта есептелді." + +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 +msgid "Regenerate" +msgstr "Қайта генерация жасау" + +#: judge/admin/runtime.py:66 +msgid "Description" +msgstr "Сипаттамасы" + +#: judge/admin/runtime.py:67 +msgid "Information" +msgstr "Ақпарат" + +#: judge/admin/runtime.py:68 +msgid "Capabilities" +msgstr "Мүмкіндіктер" + +#: judge/admin/submission.py:24 judge/admin/submission.py:43 +#: judge/admin/submission.py:230 +msgid "None" +msgstr "Еш" + +#: judge/admin/submission.py:24 +msgid "Not done" +msgstr "Аяқталмады" + +#: judge/admin/submission.py:24 +msgid "Exceptional" +msgstr "Ерекше" + +#: judge/admin/submission.py:43 +msgid "Unaccepted" +msgstr "Қабылданбады" + +#: judge/admin/submission.py:85 +#, python-format +msgid "%s (spectating)" +msgstr "%s (көрермен)" + +#: judge/admin/submission.py:87 +#, python-format +msgid "%s (virtual %d)" +msgstr "%s (виртуалды %d)" + +#: judge/admin/submission.py:94 +#, python-format +msgctxt "contest problem" +msgid "%(problem)s in %(contest)s" +msgstr "%(problem)s - %(contest)s" + +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Таңдалған тапсырылымдарға қайта тексерту жасау" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 +msgid "You do not have the permission to rejudge submissions." +msgstr "Тапсырылымдарға қайта тексерту жасауға сіздің рұқсатыңыз жоқ." + +#: judge/admin/submission.py:168 +msgid "You do not have the permission to rejudge THAT many submissions." +msgstr "МҰНША көп тапсырылымдарды қайта тексерту жасауға сіздің рұқсатыңыз жоқ." + +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Таңдалған тапсырылымдар ұпайын қайта есептеу" + +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 +#, python-format +msgid "%d submission was successfully rescored." +msgid_plural "%d submissions were successfully rescored." +msgstr[0] "%d тапсырылымның ұпайы қайта есептелді." +msgstr[1] "%d тапсырылымның ұпайы қайта есептелді." + +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "есеп коды" + +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "есеп атауы" + +#: judge/admin/submission.py:222 +msgid "time" +msgstr "уақыт" + +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "жады" + +#: judge/admin/submission.py:232 +#, python-format +msgid "%d KB" +msgstr "%d KB" + +#: judge/admin/submission.py:234 +#, python-format +msgid "%.2f MB" +msgstr "%.2f MB" + +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "тіл" + +#: judge/admin/submission.py:243 +msgid "Locked" +msgstr "Бұғатталған" + +#: judge/admin/taxon.py:11 judge/admin/taxon.py:34 +msgid "Included problems" +msgstr "Қосылған есептер" + +#: judge/admin/taxon.py:14 +msgid "These problems are included in this group of problems." +msgstr "Аталмыш есептер мына топ есептеріне кіріктірілді." + +#: judge/admin/taxon.py:37 +msgid "These problems are included in this type of problems." +msgstr "Аталмыш есептер мына типті есептеріне қосылды." + +#: judge/apps.py:8 +msgid "Online Judge" +msgstr "Online Judge" + +#: judge/comments.py:41 +msgid "Comment body" +msgstr "Пікір денесі" + +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 +msgid "Your part is silent, little toad." +msgstr "Тыныш отыр, балақай." + +#: judge/comments.py:49 templates/comments/list.html:146 +msgid "You must solve at least one problem before your voice can be heard." +msgstr "Дауысыңыз естілмес бұрын кем дегенде бір есепті шешуіңіз керек." + +#: judge/comments.py:96 +msgid "Posted comment" +msgstr "Жарияланған пікірлер" + +#: judge/contest_format/atcoder.py:19 +msgid "AtCoder" +msgstr "AtCoder" + +#: judge/contest_format/atcoder.py:117 judge/contest_format/default.py:79 +#: judge/contest_format/icpc.py:127 judge/contest_format/legacy_ioi.py:97 +msgid "The maximum score submission for each problem will be used." +msgstr "Әрбір берілген тапсырма үшін максималды балл беріледі." + +#: judge/contest_format/atcoder.py:122 judge/contest_format/icpc.py:132 +#, python-format +msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." +msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." +msgstr[0] "бірінші максималды баллмен тапсырылымдарға дейінгі әрбір тапсырылымдар мынаған әкеп соғады **айыппұл %d минутқа**." +msgstr[1] "бірінші максималды баллмен тапсырылымдарға дейінгі әрбір тапсырылымдар мынаған әкеп соғады **айыппұл %d минутта**." + +#: judge/contest_format/atcoder.py:127 +msgid "Ties will be broken by the last score altering submission time." +msgstr "Байланыстар беру уақытын өзгертетін соңғы тапсырылымдар бойынша үзіледі." + +#: judge/contest_format/default.py:18 +msgid "Default" +msgstr "Әдепкі" + +#: judge/contest_format/default.py:80 +msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." +msgstr "Байланыстар нөлдік емес баллмен соңғы тапсырма беру уақытының сомасына бөлінеді." + +#: judge/contest_format/ecoo.py:18 +msgid "ECOO" +msgstr "ECOO" + +#: judge/contest_format/ecoo.py:130 +msgid "The score on your **last** non-CE submission for each problem will be used." +msgstr "Әрбір есеп бойынша сіздің **өткен** СЕ-емес тапсырылымдарының бағасы пайдаланылады." + +#: judge/contest_format/ecoo.py:135 +#, python-format +msgid "There is a **%d bonus** for fully solving on your first non-CE submission." +msgstr "CE тапсырылымдары емес, бірінші тапсырылымдарды толық шығарғаны үшін **%d бонус** беріледі." + +#: judge/contest_format/ecoo.py:141 +#, python-format +msgid "For every **%d minute** you submit before the end of your window, there will be a **1** point bonus." +msgid_plural "For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus." +msgstr[0] "Сіздің терезеңіздің жабылуына дейін жіберілген әрбір **%d минут** үшін **1** ұпай түріндегі бонус беріледі." +msgstr[1] "Сіздің терезеңіздің жабылуына дейін жіберілген әрбір **%d минуттар** үшін **1** ұпай түріндегі бонус беріледі." + +#: judge/contest_format/ecoo.py:147 +msgid "Ties will be broken by the sum of the last submission time on **all** problems." +msgstr "**Барлық** есептер бойынша соңғы тапсырылымдардың беру уақытының сомасы бойынша байланыстар үзілетін болады." + +#: judge/contest_format/ecoo.py:149 judge/contest_format/ioi.py:102 +#: judge/contest_format/legacy_ioi.py:103 +msgid "Ties by score will **not** be broken." +msgstr "Тең ұтыстар **жоқ** болмайды." + +#: judge/contest_format/icpc.py:19 +msgid "ICPC" +msgstr "ICPC" + +#: judge/contest_format/icpc.py:137 +msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score, followed by the time of the last score altering submission." +msgstr "Нөлдік балмен тапсырмалардың берілу уақыты өзгеретін, соңғы баллдың суммасынан байланыс ажыратылады, содан кейін нәтижені өзгертетін соңғы берілімнің уақытына келеді." + +#: judge/contest_format/ioi.py:11 +msgid "IOI" +msgstr "IOI" + +#: judge/contest_format/ioi.py:96 +msgid "The maximum score for each problem batch will be used." +msgstr "Әрбір берілген тапсырма үшін максималды балл беріледі." + +#: judge/contest_format/ioi.py:99 judge/contest_format/legacy_ioi.py:100 +msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score." +msgstr "Байланыстар нөлдік емес баллмен соңғы тапсырма беру уақытының сомасына бөлінеді." + +#: judge/contest_format/legacy_ioi.py:18 +msgid "IOI (pre-2016)" +msgstr "IOI (2016-ға дейін)" + +#: judge/forms.py:31 +#, python-brace-format +msgid "Two-factor authentication tokens must be {count} decimal digit." +msgid_plural "Two-factor authentication tokens must be {count} decimal digits." +msgstr[0] "Екі факторлы аутентификация таңбалауыштары {count} ондық цифры болуы керек." +msgstr[1] "Екі факторлы аутентификация таңбалауыштары {count} ондық цифрлары болуы керек." + +#: judge/forms.py:36 +msgid "Invalid two-factor authentication token." +msgstr "Екі факторлы аутентификацияның жарамсыз белгісі." + +#: judge/forms.py:39 +msgid "Scratch codes must be 16 Base32 characters." +msgstr "Скретч-кодта 16 база 32 таңба болуы қажет." + +#: judge/forms.py:41 judge/forms.py:288 +msgid "Invalid scratch code." +msgstr "Жарамсыз скретч-код." + +#: judge/forms.py:48 +msgid "Subscribe to contest updates" +msgstr "Жаңартылған байқауға жазылу" + +#: judge/forms.py:49 +msgid "Enable experimental features" +msgstr "Тәжірибелік функцияларды қосу" + +#: judge/forms.py:74 +msgid "You must solve at least one problem before you can update your profile." +msgstr "Профильді жаңарту үшін кем дегенде бір есепті шешуіңіз керек." + +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 +#, python-brace-format +msgid "You may not be part of more than {count} public organization." +msgid_plural "You may not be part of more than {count} public organizations." +msgstr[0] "Сіз {count} астам қоғамдық ұйымның мүшесі бола алмайсыз." +msgstr[1] "Сіз {count} астам қоғамдық ұйымның мүшесі бола алмайсыз." + +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 +msgid "Download comments?" +msgstr "Пікірлерді жүктеу?" + +#: judge/forms.py:122 +msgid "Download submissions?" +msgstr "Тапсырылымдарды жүктеу?" + +#: judge/forms.py:123 +msgid "Filter by problem code glob:" +msgstr "Есеп коды арқылы cүзгілеу:" + +#: judge/forms.py:127 +msgid "Leave empty to include all submissions" +msgstr "Барлық жіберілімдерді қосу үшін бос қалдырыңыз" + +#: judge/forms.py:130 templates/problem/manage_submission.html:144 +msgid "Filter by result:" +msgstr "Нәтижесі бойынша сүзгілеу:" + +#: judge/forms.py:136 +msgid "Please select at least one thing to download." +msgstr "Жүктеу үшін кем дегенде бір нәрсені таңдаңыз." + +#: judge/forms.py:162 +msgid "Any judge" +msgstr "кез келген сот" + +#: judge/forms.py:183 judge/views/register.py:22 +#: templates/problem/submission-diff.html:63 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 +msgid "Username" +msgstr "Қолданушы аты" + +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 +msgid "Password" +msgstr "Құпиясөз" + +#: judge/forms.py:216 +msgid "Invalid code length." +msgstr "Кодтың ұзындығы қате." + +#: judge/forms.py:247 +msgid "Invalid WebAuthn response." +msgstr "WebAuthn жауабы жарамсыз." + +#: judge/forms.py:250 +msgid "No WebAuthn challenge issued." +msgstr "" + +#: judge/forms.py:256 +msgid "Invalid WebAuthn credential ID." +msgstr "Web Authen тіркелген ID дұрыс емес." + +#: judge/forms.py:286 +msgid "Invalid two-factor authentication token or scratch code." +msgstr "Жарамсыз екі факторлы аутентификация таңбалауышы немесе скреч коды." + +#: judge/forms.py:290 +msgid "Must specify either totp_token or webauthn_response." +msgstr "totp_token немесе webauthn_response көрсетілуі керек." + +#: judge/forms.py:294 judge/models/problem.py:118 +msgid "Problem code must be ^[a-z0-9]+$" +msgstr "Есеп коды ^[a-z0-9]+$ болуы тиіс" + +#: judge/forms.py:299 +msgid "Problem with code already exists." +msgstr "Мұндай кодты есеп әлдеқашан бар." + +#: judge/forms.py:304 judge/models/contest.py:68 +msgid "Contest id must be ^[a-z0-9]+$" +msgstr "Сайыс коды ^[a-z0-9]+$ болуы тиіс" + +#: judge/forms.py:309 +msgid "Contest with key already exists." +msgstr "Мұндай кілтті сайыс әлдеқашан бар." + +#: judge/jinja2/datetime.py:29 templates/blog/content.html:27 +#: templates/problem/vote-ajax.html:6 templates/submission/info-base.html:6 +msgid "N j, Y, g:i a" +msgstr "N j, Y, g:i a" + +#: judge/jinja2/rating.py:24 +msgid "Unrated" +msgstr "Рейтингсіз" + +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "Сайт кейіпіне бағыну" + +#: judge/models/choices.py:60 +msgid "Leave as LaTeX" +msgstr "LaTeX түрінде қалдыру" + +#: judge/models/choices.py:61 +msgid "SVG only" +msgstr "Тек SVG" + +#: judge/models/choices.py:62 +msgid "MathML only" +msgstr "Тек MathML" + +#: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "MathJax, резерві ретінде SVG" + +#: judge/models/choices.py:64 +msgid "Detect best quality" +msgstr "Ең жақсы сапаны анықтау" + +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "Әдепкі жүйеге бағыну" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Жарық" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Қараңғы" + +#: judge/models/comment.py:23 +msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" +msgstr "Беттің коды ^[pcs]:[a-z0-9]+$|^b:\\d+$ болуы тиіс" + +#: judge/models/comment.py:27 +msgid "commenter" +msgstr "пікір жазушы" + +#: judge/models/comment.py:28 +msgid "posted time" +msgstr "жариялау уақыты" + +#: judge/models/comment.py:31 +msgid "votes" +msgstr "дауыстар" + +#: judge/models/comment.py:32 +msgid "body of comment" +msgstr "пікір бөлігі" + +#: judge/models/comment.py:33 templates/contest/list.html:50 +msgid "hidden" +msgstr "жасырын" + +#: judge/models/comment.py:34 +msgid "parent" +msgstr "ата-анасы" + +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "ревизиялар" + +#: judge/models/comment.py:39 +msgid "comment" +msgstr "пікір" + +#: judge/models/comment.py:40 +msgid "comments" +msgstr "пікірлер" + +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 +#, python-format +msgid "Editorial for %s" +msgstr "%s талдауы" + +#: judge/models/comment.py:155 +#, python-format +msgid "%(page)s by %(user)s" +msgstr "%(page)s - %(user)s" + +#: judge/models/comment.py:177 +msgid "comment vote" +msgstr "" + +#: judge/models/comment.py:178 +msgid "comment votes" +msgstr "Пікірлер үшін дауыстар" + +#: judge/models/comment.py:187 +msgid "Override comment lock" +msgstr "Пікірлерді бұғаттауды қайта анықтау" + +#: judge/models/comment.py:189 +msgid "comment lock" +msgstr "пікірді бұғаттау" + +#: judge/models/comment.py:190 +msgid "comment locks" +msgstr "пікірлерді бұғаттау" + +#: judge/models/contest.py:28 +msgid "Invalid colour." +msgstr "Жарамсыз түс." + +#: judge/models/contest.py:30 +msgid "tag name" +msgstr "белгі аты" + +#: judge/models/contest.py:31 +msgid "Lowercase letters and hyphens only." +msgstr "Тек кіші әріптер мен сызықшалар." + +#: judge/models/contest.py:32 +msgid "tag colour" +msgstr "белгі түсі" + +#: judge/models/contest.py:33 +msgid "tag description" +msgstr "белгі сипаттамасы" + +#: judge/models/contest.py:52 +msgid "contest tag" +msgstr "контест белгісі" + +#: judge/models/contest.py:53 judge/models/contest.py:153 +msgid "contest tags" +msgstr "контест белгілері" + +#: judge/models/contest.py:62 +msgid "Visible" +msgstr "Көрінетін" + +#: judge/models/contest.py:63 +msgid "Hidden for duration of contest" +msgstr "Контест уақытында жасырылған" + +#: judge/models/contest.py:64 +msgid "Hidden for duration of participation" +msgstr "Қатысу уақытында жасырылған" + +#: judge/models/contest.py:65 +msgid "Hidden permanently" +msgstr "Тұрақты түрде жасырылған" + +#: judge/models/contest.py:67 +msgid "contest id" +msgstr "контест id-i" + +#: judge/models/contest.py:69 +msgid "contest name" +msgstr "контест аты" + +#: judge/models/contest.py:71 +msgid "These users will be able to edit the contest." +msgstr "Осы пайдаланушылар контестті өңдей алатын болады." + +#: judge/models/contest.py:73 judge/models/problem.py:127 +msgid "curators" +msgstr "кураторлар" + +#: judge/models/contest.py:74 +msgid "These users will be able to edit the contest, but will not be listed as authors." +msgstr "Осы пайдаланушылар контестті өңдей алатын болады, бірақ авторлар ретінде көрсетілмейді." + +#: judge/models/contest.py:77 judge/models/problem.py:130 +msgid "testers" +msgstr "тексергіштер" + +#: judge/models/contest.py:78 +msgid "These users will be able to view the contest, but not edit it." +msgstr "Осы пайдаланушылар контестті көре алғанымен, өңдей алмайды." + +#: judge/models/contest.py:80 +msgid "testers see scoreboard" +msgstr "тестілеушілер таблоны көреді" + +#: judge/models/contest.py:81 +msgid "If testers can see the scoreboard." +msgstr "Егер тестілеушілер таблоны көре алса." + +#: judge/models/contest.py:82 +msgid "testers see submissions" +msgstr "сынақшылар тапсырылымдарды көре алады" + +#: judge/models/contest.py:83 +msgid "If testers can see in-contest submissions." +msgstr "Егер тестілеушілер конкурста берілген тапсырмаларды көре алса." + +#: judge/models/contest.py:84 +msgid "spectators" +msgstr "көрермендер" + +#: judge/models/contest.py:85 +msgid "These users will be able to spectate the contest, but not see the problems ahead of time." +msgstr "Бұл пайдаланушылар байқауды бақылай алады, бірақ есепті уақытынан бұрын көре алмайды." + +#: judge/models/contest.py:88 judge/models/runtime.py:139 +msgid "description" +msgstr "сипаттамасы" + +#: judge/models/contest.py:89 judge/models/problem.py:506 +#: judge/models/runtime.py:141 +msgid "problems" +msgstr "есептер" + +#: judge/models/contest.py:90 judge/models/contest.py:501 +msgid "start time" +msgstr "басталу уақыты" + +#: judge/models/contest.py:91 +msgid "end time" +msgstr "аяқталу уақыты" + +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 +msgid "time limit" +msgstr "уақыт шектеуі" + +#: judge/models/contest.py:93 judge/models/problem.py:155 +msgid "publicly visible" +msgstr "көпшілікке көрінетін" + +#: judge/models/contest.py:94 +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:97 +msgid "contest rated" +msgstr "рейтингті контест " + +#: judge/models/contest.py:97 +msgid "Whether this contest can be rated." +msgstr "Бұл байқауды бағалауға бола ма." + +#: judge/models/contest.py:99 +msgid "view contest scoreboard" +msgstr "байқау тақтасын қарау" + +#: judge/models/contest.py:101 +msgid "These users will be able to view the scoreboard." +msgstr "Осы пайдаланушылар тақтаны көре алатын болады." + +#: judge/models/contest.py:102 +msgid "can see contest submissions" +msgstr "сіз байқау жұмыстармен таныса аласыз" + +#: judge/models/contest.py:104 +msgid "These users will be able to see in-contest submissions." +msgstr "Бұл пайдаланушылар байқауға ұсынылған тапсырмалармен таныса алады." + +#: judge/models/contest.py:106 +msgid "scoreboard visibility" +msgstr "scoreboard visibility" + +#: judge/models/contest.py:107 +msgid "Scoreboard visibility through the duration of the contest." +msgstr "Байқаудың барлық мезетінде тақтадан көрінуі." + +#: judge/models/contest.py:109 +msgid "no comments" +msgstr "пікірлер жоқ" + +#: judge/models/contest.py:110 +msgid "Use clarification system instead of comments." +msgstr "Анықтама жүйесін пікірлер орнына қолданыңыз." + +#: judge/models/contest.py:112 +msgid "rating floor" +msgstr "номиналды қабат" + +#: judge/models/contest.py:113 +msgid "Do not rate users who have a lower rating." +msgstr "Төмен рейтингі бар пайдаланушыларды бағаламаңыз." + +#: judge/models/contest.py:114 +msgid "rating ceiling" +msgstr "рейтинг шегі" + +#: judge/models/contest.py:115 +msgid "Do not rate users who have a higher rating." +msgstr "Жоғары рейтингі бар пайдаланушыларды бағаламаңыз." + +#: judge/models/contest.py:117 +msgid "rate all" +msgstr "барлығын бағалаңыз" + +#: judge/models/contest.py:117 +msgid "Rate all users who joined." +msgstr "Қатысқан пайдаланушылардың барлығын бағалаңыз." + +#: judge/models/contest.py:118 +msgid "exclude from ratings" +msgstr "рейтингтен шығарылсын" + +#: judge/models/contest.py:120 +msgid "private to specific users" +msgstr "12345" + +#: judge/models/contest.py:121 +msgid "private contestants" +msgstr "жеке қатысушылар" + +#: judge/models/contest.py:122 +msgid "If non-empty, only these users may see the contest." +msgstr "Егер орын бос болмаса, тек осы пайдаланушылар ғана байқауды көре алады." + +#: judge/models/contest.py:124 +msgid "hide problem tags" +msgstr "мәселе тегтерін жасыру" + +#: judge/models/contest.py:125 +msgid "Whether problem tags should be hidden by default." +msgstr "Есеп тегтері жасырылуы қажет пе." + +#: judge/models/contest.py:127 +msgid "hide problem authors" +msgstr "есептің авторларын жасыру" + +#: judge/models/contest.py:128 +msgid "Whether problem authors should be hidden by default." +msgstr "Есеп тегтері жасырылуы қажет пе." + +#: judge/models/contest.py:130 +msgid "run pretests only" +msgstr "тек сынақ тесттерді іске қосу" + +#: judge/models/contest.py:131 +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:135 +msgid "show short form settings display" +msgstr "қысқа пішіннің нұсқауының сипатын көрсету" + +#: judge/models/contest.py:136 +msgid "Whether to show a section containing contest settings on the contest page or not." +msgstr "Байқау параметрлері бар бөлімді байқау бетінде көрсету керек пе, жоқ па." + +#: judge/models/contest.py:139 judge/models/problem.py:181 +msgid "private to organizations" +msgstr "жеке тұлғадан ұйымдарға" + +#: judge/models/contest.py:140 judge/models/problem.py:179 +#: judge/models/profile.py:99 +msgid "organizations" +msgstr "ұйымдар" + +#: judge/models/contest.py:141 +msgid "If non-empty, only these organizations may see the contest." +msgstr "Бос болмаса, тек осы ұйымдар ғана байқауға қосыла алады." + +#: judge/models/contest.py:142 +msgid "limit organizations that can join" +msgstr "қосыла алатын ұйымдарды шектеңіз" + +#: judge/models/contest.py:143 +msgid "join organizations" +msgstr "ұйымдарға қосылу" + +#: judge/models/contest.py:144 +msgid "If non-empty, only these organizations may join the contest." +msgstr "Бос болмаса, тек осы ұйымдар ғана контестке қосыла алады." + +#: judge/models/contest.py:146 judge/models/profile.py:143 +msgid "classes" +msgstr "сыныптар" + +#: judge/models/contest.py:147 +msgid "If organization private, only these classes may see the contest." +msgstr "Егер ұйым жеке болса, байқауды тек осы сыныптар көре алады." + +#: judge/models/contest.py:148 judge/models/interface.py:74 +#: judge/models/problem.py:165 +msgid "OpenGraph image" +msgstr "OpenGraph суреті" + +#: judge/models/contest.py:149 judge/models/profile.py:58 +msgid "logo override image" +msgstr "логотипті алмастыратын сурет" + +#: judge/models/contest.py:151 +msgid "This image will replace the default site logo for users inside the contest." +msgstr "Бұл сурет байқауға қатысатын пайдаланушылар үшін әдепкі сайт логотипін ауыстырады." + +#: judge/models/contest.py:154 +msgid "the amount of live participants" +msgstr "нақты қатысушылар саны" + +#: judge/models/contest.py:155 +msgid "contest summary" +msgstr "" + +#: judge/models/contest.py:156 judge/models/problem.py:167 +msgid "Plain-text, shown in meta description tag, e.g. for social media." +msgstr "Әлеуметтік желі үшін мета-бейнелеу тегінде көрсетілген кәдімгі текст." + +#: judge/models/contest.py:157 judge/models/profile.py:57 +#: judge/models/profile.py:110 +msgid "access code" +msgstr "кіру коды" + +#: judge/models/contest.py:158 +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:160 judge/models/problem.py:161 +msgid "personae non gratae" +msgstr "белгісіз тұлғалар" + +#: judge/models/contest.py:161 +msgid "Bans the selected users from joining this contest." +msgstr "Таңдалған пайдаланушыларға осы байқауға қатысуға тыйым салады." + +#: judge/models/contest.py:162 +msgid "contest format" +msgstr "байқау форматы" + +#: judge/models/contest.py:163 +msgid "The contest format module to use." +msgstr "Қолданылатын байқау форматының модулі." + +#: judge/models/contest.py:164 +msgid "contest format configuration" +msgstr "байқау форматын конфигурациясы" + +#: judge/models/contest.py:165 +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 нысаны. None қолданбау үшін бос қалдырыңыз. Нақты формат таңдалған байқау форматына байланысты." + +#: judge/models/contest.py:168 +msgid "contest problem label script" +msgstr "байқау есептерінің жазу сценарийі" + +#: judge/models/contest.py:169 +msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." +msgstr "Есеп белгілерін жасау үшін Lua пайдаланушы функциясы. Бүтін параметрі бар жалғыз функция қажет, нөлдік индексі бар байқау есептерінің индексі және жолды, белгіні қайтарады." + +#: judge/models/contest.py:172 +msgid "contest lock" +msgstr "байқауды бұғаттау" + +#: judge/models/contest.py:173 +msgid "Prevent submissions from this contest from being rejudged after this date." +msgstr "Осы уақыттан кейін осы байқауға қатысуға өтінімдерді қайта қарауға жол бермеңіз." + +#: judge/models/contest.py:175 +msgid "precision points" +msgstr "нақты нүктелер" + +#: judge/models/contest.py:177 +msgid "Number of digits to round points to." +msgstr "Мәні дөңгелектелген сандар саны." + +#: judge/models/contest.py:479 +msgid "See private contests" +msgstr "Жеке байқауды қараңыз" + +#: judge/models/contest.py:480 +msgid "Edit own contests" +msgstr "Өз байқауларыңызды өңдеңіз" + +#: judge/models/contest.py:481 +msgid "Edit all contests" +msgstr "Барлық контестті өңдеу" + +#: judge/models/contest.py:482 +msgid "Clone contest" +msgstr "Клондар байқауы" + +#: judge/models/contest.py:483 templates/contest/moss.html:76 +msgid "MOSS contest" +msgstr "MOSS контесті" + +#: judge/models/contest.py:484 +msgid "Rate contests" +msgstr "Контесттерді бағалау" + +#: judge/models/contest.py:485 +msgid "Contest access codes" +msgstr "Байқауға кіру кодтары" + +#: judge/models/contest.py:486 +msgid "Create private contests" +msgstr "Жеке байқауды жасаңыз" + +#: judge/models/contest.py:487 +msgid "Change contest visibility" +msgstr "Байқаудың көрінуін өзгерту" + +#: judge/models/contest.py:488 +msgid "Edit contest problem label script" +msgstr "байқау есептерінің жазу сценарийі" + +#: judge/models/contest.py:489 +msgid "Change lock status of contest" +msgstr "Байқаудың бұғаттау күйін өзгерту" + +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 +msgid "contest" +msgstr "cайыс" + +#: judge/models/contest.py:492 +msgid "contests" +msgstr "контесттер" + +#: judge/models/contest.py:499 +msgid "associated contest" +msgstr "байланысты контест" + +#: judge/models/contest.py:502 +msgid "score" +msgstr "Нәтиже" + +#: judge/models/contest.py:503 +msgid "cumulative time" +msgstr "жиынтық уақыт" + +#: judge/models/contest.py:504 +msgid "is disqualified" +msgstr "дисквалификацияланған" + +#: judge/models/contest.py:505 +msgid "Whether this participation is disqualified." +msgstr "Бұған қатысу дисквалификацияланады ма." + +#: judge/models/contest.py:506 +msgid "tie-breaking field" +msgstr "байланыстарды бөлу үшін өріс" + +#: judge/models/contest.py:507 +msgid "virtual participation id" +msgstr "виртуалды қатысушы идентификаторы" + +#: judge/models/contest.py:508 +msgid "0 means non-virtual, otherwise the n-th virtual participation." +msgstr "0 виртуалды емес, керісінше N-e виртуалды қатысуды білдіреді." + +#: judge/models/contest.py:509 +msgid "contest format specific data" +msgstr "байқау форматы туралы нақты деректер" + +#: judge/models/contest.py:577 +#, python-format +msgid "%(user)s spectating in %(contest)s" +msgstr "%(user)s %(contest)s нысанында бақылайды" + +#: judge/models/contest.py:579 +#, python-format +msgid "%(user)s in %(contest)s, v%(id)d" +msgstr "%(user)s %(contest)s, %(id)d" + +#: judge/models/contest.py:582 +#, python-format +msgid "%(user)s in %(contest)s" +msgstr "%(user)s %(contest)s" + +#: judge/models/contest.py:585 +msgid "contest participation" +msgstr "байқауға қатысу" + +#: judge/models/contest.py:586 +msgid "contest participations" +msgstr "байқауға қатысушылар" + +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 +msgid "points" +msgstr "ұпайлар" + +#: judge/models/contest.py:595 +msgid "partial" +msgstr "Жеке дифференциал" + +#: judge/models/contest.py:596 judge/models/contest.py:622 +msgid "is pretested" +msgstr "қорғалған" + +#: judge/models/contest.py:597 judge/models/interface.py:43 +msgid "order" +msgstr "реті" + +#: judge/models/contest.py:598 +msgid "output prefix length override" +msgstr "шығыс префиксінің ұзындығын қайта анықтау" + +#: judge/models/contest.py:600 +msgid "max submissions" +msgstr " максималды тапсырмалар" + +#: judge/models/contest.py:601 +msgid "Maximum number of submissions for this problem, or leave blank for no limit." +msgstr "Осы тапсырмаға арналған өтінімдердің максималды саны немесе шектеусіз бос қалдырыңыз." + +#: judge/models/contest.py:604 +msgid "Why include a problem you can't submit to?" +msgstr "Неліктен сіз шеше алмайтын есепті қосу керек?" + +#: judge/models/contest.py:609 +msgid "contest problem" +msgstr "контест есебі" + +#: judge/models/contest.py:610 +msgid "contest problems" +msgstr "контест есептері" + +#: judge/models/contest.py:615 judge/models/submission.py:231 +msgid "submission" +msgstr "тапсырылымдар" + +#: judge/models/contest.py:619 judge/models/contest.py:634 +msgid "participation" +msgstr "қатысу" + +#: judge/models/contest.py:623 +msgid "Whether this submission was ran only on pretests." +msgstr "Бұл жөнелтулер тек алдын ала тесттермен тексерілді ме." + +#: judge/models/contest.py:627 +msgid "contest submission" +msgstr "контест тапсырылымы" + +#: judge/models/contest.py:628 +msgid "contest submissions" +msgstr "сайыс тапсырылымдары" + +#: judge/models/contest.py:636 +msgid "rank" +msgstr "дәреже" + +#: judge/models/contest.py:637 +msgid "rating" +msgstr "Рейтинг" + +#: judge/models/contest.py:638 +msgid "raw rating" +msgstr "бастапқы рейтинг" + +#: judge/models/contest.py:639 +msgid "contest performance" +msgstr "байқауда сөз сөйлеу" + +#: judge/models/contest.py:640 +msgid "last rated" +msgstr "соңғы рейтинг" + +#: judge/models/contest.py:644 +msgid "contest rating" +msgstr "сайыс рейтингі" + +#: judge/models/contest.py:645 +msgid "contest ratings" +msgstr "байқау рейтингі" + +#: judge/models/contest.py:664 +msgid "contest moss result" +msgstr "moss байқау нәтижесі" + +#: judge/models/contest.py:665 +msgid "contest moss results" +msgstr "moss байқау нәтижелері" + +#: judge/models/interface.py:17 judge/models/problem.py:60 +msgid "key" +msgstr "кілт" + +#: judge/models/interface.py:18 +msgid "value" +msgstr "мәні" + +#: judge/models/interface.py:24 +msgid "configuration item" +msgstr "конфигурация элементі" + +#: judge/models/interface.py:25 +msgid "miscellaneous configuration" +msgstr "әр түрлі конфигурация" + +#: judge/models/interface.py:37 +msgid "navigation item" +msgstr "навигация элементі" + +#: judge/models/interface.py:38 +msgid "navigation bar" +msgstr "Навигация жолағы" + +#: judge/models/interface.py:44 +msgid "identifier" +msgstr "идентификатор" + +#: judge/models/interface.py:45 +msgid "label" +msgstr "белгі" + +#: judge/models/interface.py:47 +msgid "highlight regex" +msgstr "тұрақты өрнекті бөлектеңіз" + +#: judge/models/interface.py:48 +msgid "parent item" +msgstr "ата-ана элементі" + +#: judge/models/interface.py:66 +msgid "post title" +msgstr "Жазбаның тақырыбы" + +#: judge/models/interface.py:68 +msgid "slug" +msgstr "шырыш" + +#: judge/models/interface.py:69 judge/models/problem.py:551 +msgid "public visibility" +msgstr "көпшілікке көріну" + +#: judge/models/interface.py:70 +msgid "sticky" +msgstr "Жабысқақ" + +#: judge/models/interface.py:71 +msgid "publish after" +msgstr "кейін жариялау" + +#: judge/models/interface.py:72 +msgid "post content" +msgstr "контент жариялау" + +#: judge/models/interface.py:73 +msgid "post summary" +msgstr "хабарламаның қысқаша мазмұны" + +#: judge/models/interface.py:96 +msgid "Edit all posts" +msgstr "Барлық хабарламаларды өңдеу" + +#: judge/models/interface.py:97 +msgid "Edit post visibility" +msgstr "Хабарламаның көрінуін өңдеу" + +#: judge/models/interface.py:99 +msgid "blog post" +msgstr "блог жазбасы" + +#: judge/models/interface.py:100 +msgid "blog posts" +msgstr "блог жазбалары" + +#: judge/models/problem.py:29 +#, python-format +msgid "Disallowed characters: %(value)s" +msgstr "Тыйым салынған таңбалар: %(value)s" + +#: judge/models/problem.py:34 +msgid "problem category ID" +msgstr "ID санатындағы есеп" + +#: judge/models/problem.py:35 +msgid "problem category name" +msgstr "есеп санатының атауы" + +#: judge/models/problem.py:42 +msgid "problem type" +msgstr "есеп атауы" + +#: judge/models/problem.py:43 judge/models/problem.py:133 +msgid "problem types" +msgstr "есеп атаулары" + +#: judge/models/problem.py:47 +msgid "problem group ID" +msgstr "ID тобындағы есеп" + +#: judge/models/problem.py:48 +msgid "problem group name" +msgstr "атау тобындағы есеп" + +#: judge/models/problem.py:55 judge/models/problem.py:135 +msgid "problem group" +msgstr "топтық есеп" + +#: judge/models/problem.py:56 +msgid "problem groups" +msgstr "топтар есебі" + +#: judge/models/problem.py:62 +msgid "link" +msgstr "сілтеме" + +#: judge/models/problem.py:63 +msgid "full name" +msgstr "толық есім" + +#: judge/models/problem.py:64 judge/models/profile.py:45 +#: judge/models/runtime.py:24 +msgid "short name" +msgstr "қысқа есім" + +#: judge/models/problem.py:65 +msgid "Displayed on pages under this license." +msgstr "Осы лицензияға жататын беттерде көрсетіледі." + +#: judge/models/problem.py:66 +msgid "icon" +msgstr "таңба" + +#: judge/models/problem.py:66 +msgid "URL to the icon." +msgstr "Таңбаға сілтеме." + +#: judge/models/problem.py:67 +msgid "license text" +msgstr "лицензия мәтіні" + +#: judge/models/problem.py:76 judge/models/problem.py:163 +msgid "license" +msgstr "лицензия" + +#: judge/models/problem.py:77 +msgid "licenses" +msgstr "лицензиялар" + +#: judge/models/problem.py:111 +msgid "Follow global setting" +msgstr "Жаһандық параметрлерді орындаңыз" + +#: judge/models/problem.py:112 +msgid "Always visible" +msgstr "Әрқашан көрінетін" + +#: judge/models/problem.py:113 +msgid "Visible if problem solved" +msgstr "Егер мәселе шешілсе, көрінеді" + +#: judge/models/problem.py:114 +msgid "Only own submissions" +msgstr "тек осы тақырыптар" + +#: judge/models/problem.py:119 +msgid "A short, unique code for the problem, used in the URL after /problem/" +msgstr " /есеп/кейін URL мекенжайында пайдаланылатын қысқа бірегей мәселе коды" + +#: judge/models/problem.py:121 +msgid "The full name of the problem, as shown in the problem list." +msgstr "Есеп тізімінде көрсетілгендей есептің толық атауы." + +#: judge/models/problem.py:123 +msgid "problem body" +msgstr "есеп коды" + +#: judge/models/problem.py:124 +msgid "creators" +msgstr "жасаушылар" + +#: judge/models/problem.py:125 +msgid "These users will be able to edit the problem, and be listed as authors." +msgstr "Осы пайдаланушылар есепті өңдей алатын болады, бірақ авторлар ретінде көрсетілмейді." + +#: judge/models/problem.py:128 +msgid "These users will be able to edit the problem, but not be listed as authors." +msgstr "Осы пайдаланушылар есепті өңдей алатын болады, бірақ авторлар ретінде көрсетілмейді." + +#: judge/models/problem.py:132 +msgid "These users will be able to view the private problem, but not edit it." +msgstr "Осы пайдаланушылар есепті көре алғанымен, өңдей алмайды." + +#: judge/models/problem.py:134 +msgid "The type of problem, as shown on the problem's page." +msgstr "Есеп бетте көрсетілгендей есеп түрі." + +#: judge/models/problem.py:136 +msgid "The group of problem, shown under Category in the problem list." +msgstr "Есептер тізіміндегі санат бөлімінде көрсетілген есептер тобы." + +#: judge/models/problem.py:138 +msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." +msgstr "Осы есепті секундта шешу үшін уақыттың шектеулігі. Секундтың фракцияларына қолдау көрсетіледі (мысалы, 1,5)." + +#: judge/models/problem.py:142 judge/models/problem.py:538 +msgid "memory limit" +msgstr "жадты шектеу" + +#: judge/models/problem.py:143 +msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." +msgstr "Бұл есеп үшін жадты килобайтпен шектеу (мысалы 256mb = 262144 килобайт)." + +#: judge/models/problem.py:147 +msgid "short circuit" +msgstr "қысқа тұйықталу" + +#: judge/models/problem.py:149 +msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." +msgstr "Есепті орындағаны үшін ұпайлар беріледі. Нүктелер ішінара болса, \"p\" жұрнағымен көрсетіледі." + +#: judge/models/problem.py:152 +msgid "allows partial points" +msgstr "ішінара нүктелерге мүмкіндік береді" + +#: judge/models/problem.py:153 +msgid "allowed languages" +msgstr "рұқсат етілген тілдер" + +#: judge/models/problem.py:154 +msgid "List of allowed submission languages." +msgstr "Рұқсат тілдер жіберілімдерінің тізімі." + +#: judge/models/problem.py:156 +msgid "manually managed" +msgstr "қолмен басқарылады" + +#: judge/models/problem.py:157 +msgid "Whether judges should be allowed to manage data or not." +msgstr "Судьяларға деректерді басқаруға рұқсат беру керек пе, жоқ па." + +#: judge/models/problem.py:158 +msgid "date of publishing" +msgstr "жарияланған күні" + +#: judge/models/problem.py:160 +msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." +msgstr "Кері үйлесімділікке байланысты автоматты түрде жариялаудың сиқырлы қабілеті жоқ." + +#: judge/models/problem.py:162 +msgid "Bans the selected users from submitting to this problem." +msgstr "Таңдалған пайдаланушыларға бұл есептер туралы хабарлауға тыйым салады." + +#: judge/models/problem.py:164 +msgid "The license under which this problem is published." +msgstr "Бұл есеп жарияланған лицензия." + +#: judge/models/problem.py:166 +msgid "problem summary" +msgstr "есептің қысқаша мазмұны" + +#: judge/models/problem.py:168 +msgid "number of users" +msgstr "пайдаланушылар саны" + +#: judge/models/problem.py:169 +msgid "The number of users who solved the problem." +msgstr "Есепті шешкен пайдаланушылар саны." + +#: judge/models/problem.py:170 +msgid "solve rate" +msgstr "шешім жылдамдығы" + +#: judge/models/problem.py:171 +msgid "allow full markdown access" +msgstr "белгілеуге толық қол жеткізуге рұқсат беру" + +#: judge/models/problem.py:172 +msgid "submission source visibility" +msgstr "тапсырма көзінің көрінуі" + +#: judge/models/problem.py:180 +msgid "If private, only these organizations may see the problem." +msgstr "Егер олар жеке болса, есепті тек осы ұйымдар көре алады." + +#: judge/models/problem.py:495 +msgid "See hidden problems" +msgstr "Жасырын есептерді қараңыз" + +#: judge/models/problem.py:496 +msgid "Edit own problems" +msgstr "Өз есептеріңізді өңдеңіз" + +#: judge/models/problem.py:497 +msgid "Edit all problems" +msgstr "Барлық есептерді өңдеңіз" + +#: judge/models/problem.py:498 +msgid "Edit all public problems" +msgstr "Барлық қоғамдық есептерді өңдеңіз" + +#: judge/models/problem.py:499 +msgid "Edit problems with full markup" +msgstr "Толық түзетумен өңдеу есептері" + +#: judge/models/problem.py:500 templates/problem/problem.html:181 +msgid "Clone problem" +msgstr "Клондау есептері" + +#: judge/models/problem.py:501 +msgid "Change is_public field" +msgstr "_қоғамдық өріс өзгерісі" + +#: judge/models/problem.py:502 +msgid "Change is_manually_managed field" +msgstr "Your username, in case you've forgotten:" + +#: judge/models/problem.py:503 +msgid "See organization-private problems" +msgstr "Ұйымдастыру және жеке есептер бөлімін қараңыз" + +#: judge/models/problem.py:512 +msgid "translated name" +msgstr "атын аудару" + +#: judge/models/problem.py:513 +msgid "translated description" +msgstr "сипаттамасын аудару" + +#: judge/models/problem.py:518 +msgid "problem translation" +msgstr "есептерді аудару" + +#: judge/models/problem.py:519 +msgid "problem translations" +msgstr "есептердің аударылымдары" + +#: judge/models/problem.py:523 +msgid "clarified problem" +msgstr "нақтыланған есеп" + +#: judge/models/problem.py:524 +msgid "clarification body" +msgstr "түсіндіру жөніндегі орган" + +#: judge/models/problem.py:525 +msgid "clarification timestamp" +msgstr "уақыт белгісін нақтылау" + +#: judge/models/problem.py:528 +msgid "problem clarification" +msgstr " есептерді нақтылау" + +#: judge/models/problem.py:529 +msgid "problem clarifications" +msgstr "есептерді нақтылаулар" + +#: judge/models/problem.py:544 +msgid "language-specific resource limit" +msgstr "белгілі бір тіл үшін ресурстарды шектеу" + +#: judge/models/problem.py:545 +msgid "language-specific resource limits" +msgstr "белгілі бір тіл үшін ресурстарды шектеулер" + +#: judge/models/problem.py:549 +msgid "associated problem" +msgstr "байланысты есеп" + +#: judge/models/problem.py:552 +msgid "publish date" +msgstr "жариялау уақыты" + +#: judge/models/problem.py:554 +msgid "editorial content" +msgstr "редакциялық контент" + +#: judge/models/problem.py:577 +msgid "See hidden solutions" +msgstr "Жасырын шешімдерді қараңыз" + +#: judge/models/problem.py:579 +msgid "solution" +msgstr "шешім" + +#: judge/models/problem.py:580 +msgid "solutions" +msgstr "шешімдер" + +#: judge/models/problem.py:585 +msgid "proposed points" +msgstr "ұсынылатын тармақтар" + +#: judge/models/problem.py:586 +msgid "The amount of points the voter thinks this problem deserves." +msgstr "Дауыс беруші бұл есептерге лайық деп санайтын ұпайлар саны." + +#: judge/models/problem.py:592 +msgid "voter" +msgstr "Дауыс беруші" + +#: judge/models/problem.py:595 +msgid "vote time" +msgstr "дауыс беру уақыты" + +#: judge/models/problem.py:595 +msgid "The time this vote was cast." +msgstr "Бұл дауыс берілген уақыт." + +#: judge/models/problem.py:597 +msgid "note" +msgstr "ескерту" + +#: judge/models/problem.py:597 +msgid "Justification for problem point value." +msgstr "Есептік нүктенің мәнін негіздеу." + +#: judge/models/problem.py:601 +msgid "problem vote" +msgstr "есептік дауыс беру" + +#: judge/models/problem.py:602 +msgid "problem votes" +msgstr "есептік дауыс берулер" + +#: judge/models/problem.py:605 +#, python-format +msgid "Points vote by %(voter)s for %(problem)s" +msgstr "Шешуші %(voter)s %(problem)s үшін дауыс береді" + +#: judge/models/problem_data.py:23 +msgid "Standard" +msgstr "Стандартты" + +#: judge/models/problem_data.py:24 +msgid "Floats" +msgstr "қалқымалар" + +#: judge/models/problem_data.py:25 +msgid "Floats (absolute)" +msgstr "қалқымалы (абсолютті)" + +#: judge/models/problem_data.py:26 +msgid "Floats (relative)" +msgstr "қалқымалы (салыстырмалы)" + +#: judge/models/problem_data.py:27 +msgid "Non-trailing spaces" +msgstr "Шексіз бос орындар" + +#: judge/models/problem_data.py:28 +msgid "Sorted" +msgstr "Сұрыпталған" + +#: judge/models/problem_data.py:29 +msgid "Byte identical" +msgstr "бірдей байт" + +#: judge/models/problem_data.py:30 +msgid "Line-by-line" +msgstr "Жол бойынша" + +#: judge/models/problem_data.py:37 +msgid "data zip file" +msgstr "zip деректер файлы" + +#: judge/models/problem_data.py:39 +msgid "generator file" +msgstr "файл генераторы" + +#: judge/models/problem_data.py:41 judge/models/problem_data.py:92 +msgid "output prefix length" +msgstr "шығу префиксінің ұзындығы" + +#: judge/models/problem_data.py:42 judge/models/problem_data.py:93 +msgid "output limit length" +msgstr "шығу сигналының шекті ұзындығы" + +#: judge/models/problem_data.py:43 +msgid "init.yml generation feedback" +msgstr "init.yml генерациялы кері байланыс" + +#: judge/models/problem_data.py:44 judge/models/problem_data.py:94 +msgid "checker" +msgstr "бақылаушы" + +#: judge/models/problem_data.py:45 +msgid "enable unicode" +msgstr "юникодты қосыңыз" + +#: judge/models/problem_data.py:46 +msgid "disable bigInteger / bigDecimal" +msgstr "bigInteger / bigDecimal өшіру" + +#: judge/models/problem_data.py:47 judge/models/problem_data.py:95 +msgid "checker arguments" +msgstr "тексеру құралының дәлелдері" + +#: judge/models/problem_data.py:48 +msgid "Checker arguments as a JSON object." +msgstr "JSON нысаны түріндегі тексеру аргументтері." + +#: judge/models/problem_data.py:79 +msgid "problem data set" +msgstr "проблемалық деректер жиынтығы" + +#: judge/models/problem_data.py:81 +msgid "case position" +msgstr "корпустың жағдайы" + +#: judge/models/problem_data.py:82 +msgid "case type" +msgstr "корпус түрі" + +#: judge/models/problem_data.py:83 +msgid "Normal case" +msgstr "Жалпы жағдай" + +#: judge/models/problem_data.py:84 +msgid "Batch start" +msgstr "Дестені іске қосу" + +#: judge/models/problem_data.py:85 +msgid "Batch end" +msgstr "дестенің аяқталуы" + +#: judge/models/problem_data.py:87 +msgid "input file name" +msgstr "кіріс файлының атауы" + +#: judge/models/problem_data.py:88 +msgid "output file name" +msgstr "шығу файлының атауы" + +#: judge/models/problem_data.py:89 +msgid "generator arguments" +msgstr "генератор аргументтері" + +#: judge/models/problem_data.py:90 +msgid "point value" +msgstr "нүктелік мән" + +#: judge/models/problem_data.py:91 +msgid "case is pretest?" +msgstr "жағдай - бұл алдын ала тестілеу ме?" + +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "JSON нысаны түріндегі тексеру аргументтері" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + +#: judge/models/profile.py:42 +msgid "organization title" +msgstr "ұйымның атауы" + +#: judge/models/profile.py:43 +msgid "organization slug" +msgstr "ұйымдар" + +#: judge/models/profile.py:44 +msgid "Organization name shown in URLs." +msgstr "URL-адрестерде көрсетілген ұйымның атауы." + +#: judge/models/profile.py:46 +msgid "Displayed beside user name during contests." +msgstr "Байқаулар кезінде пайдаланушы атының жанында көрсетіледі." + +#: judge/models/profile.py:47 +msgid "organization description" +msgstr "ұйымның сипаттамасы" + +#: judge/models/profile.py:48 judge/models/profile.py:112 +msgid "administrators" +msgstr "Әкімшілер" + +#: judge/models/profile.py:49 +msgid "Those who can edit this organization." +msgstr "Бұл ұйымды өңдей алатындар." + +#: judge/models/profile.py:50 +msgid "creation date" +msgstr "Құру күні" + +#: judge/models/profile.py:51 +msgid "is open organization?" +msgstr "ұйым ашық па?" + +#: judge/models/profile.py:52 +msgid "Allow joining organization." +msgstr "Ұйымға қосылуға рұқсат етіңіз." + +#: judge/models/profile.py:53 +msgid "maximum size" +msgstr "максималды өлшем" + +#: judge/models/profile.py:54 +msgid "Maximum amount of users in this organization, only applicable to private organizations." +msgstr "Бұл ұйымдағы пайдаланушылардың максималды саны тек жеке ұйымдарға қолданылады." + +#: judge/models/profile.py:56 judge/models/profile.py:111 +msgid "Student access code." +msgstr "Студенттің кіру коды." + +#: judge/models/profile.py:60 +msgid "This image will replace the default site logo for users viewing the organization." +msgstr "Бұл сурет байқауға қатысатын пайдаланушылар үшін әдепкі сайт логотипін ауыстырады." + +#: judge/models/profile.py:62 +msgid "class membership required" +msgstr "сынып мүшелігі қажет" + +#: judge/models/profile.py:63 +msgid "Whether members are compelled to select a class when joining." +msgstr "Қатысушылар қосылу кезінде сыныпты таңдауға мәжбүр бола ма?" + +#: judge/models/profile.py:67 +msgid "Class membership cannot be enforced when organization has open enrollment." +msgstr "Егер ұйымда тіркеу ашық болса, сынып мүшелігін мәжбүрлеп енгізу мүмкін емес." + +#: judge/models/profile.py:95 +msgid "Administer organizations" +msgstr "Ұйымдарды басқару" + +#: judge/models/profile.py:96 +msgid "Edit all organizations" +msgstr "Барлық ұйымдарды өзгерту" + +#: judge/models/profile.py:98 judge/models/profile.py:103 +#: judge/models/profile.py:161 judge/models/profile.py:381 +msgid "organization" +msgstr "ұйым" + +#: judge/models/profile.py:104 +msgid "The organization that this class belongs to." +msgstr "Осы сыныпқа жататын ұйым." + +#: judge/models/profile.py:106 +msgid "class name" +msgstr "Сынып аты" + +#: judge/models/profile.py:107 +msgid "class slug" +msgstr "сынып слагы?" + +#: judge/models/profile.py:107 +msgid "Class name shown in URLs." +msgstr "URL-да сынып атауы көрсетілген." + +#: judge/models/profile.py:108 +msgid "class description" +msgstr "сынып сипаттамасы" + +#: judge/models/profile.py:109 +msgid "is class active" +msgstr "сынып белсенді ме" + +#: judge/models/profile.py:113 +msgid "Those who can approve membership to this class." +msgstr "Осы сыныпқа мүшелікті мақұлдай алатындар." + +#: judge/models/profile.py:114 +msgid "members" +msgstr "Мүшелер" + +#: judge/models/profile.py:128 +#, python-format +msgid "%(class)s in %(organization)s" +msgstr "%(class)s %(organization)s" + +#: judge/models/profile.py:142 judge/models/profile.py:389 +msgid "class" +msgstr "Сынып" + +#: judge/models/profile.py:148 +msgid "user associated" +msgstr "пайдаланушыға байланысты" + +#: judge/models/profile.py:149 +msgid "self-description" +msgstr "өзін-өзі сипаттау" + +#: judge/models/profile.py:150 +msgid "time zone" +msgstr "Уақыт белдеуі" + +#: judge/models/profile.py:152 +msgid "preferred language" +msgstr "Аударма тілі" + +#: judge/models/profile.py:157 +msgid "Ace theme" +msgstr "Ace тақырыбы" + +#: judge/models/profile.py:158 +msgid "site theme" +msgstr "Сайт тақырыбы" + +#: judge/models/profile.py:159 +msgid "last access time" +msgstr "соңғы кіру уақыты" + +#: judge/models/profile.py:160 +msgid "last IP" +msgstr "Соңғы IP" + +#: judge/models/profile.py:163 +msgid "display rank" +msgstr "display rank" + +#: judge/models/profile.py:165 +msgid "Normal User" +msgstr "Кәдімгі пайдаланушы" + +#: judge/models/profile.py:166 +msgid "Problem Setter" +msgstr "Есептерді қоюшы" + +#: judge/models/profile.py:167 templates/base.html:221 +#: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 +#: templates/contest/ranking-table.html:51 +#: templates/problem/problem-list-tabs.html:6 +#: templates/submission/info-base.html:15 +#: templates/submission/submission-list-tabs.html:15 +#: templates/ticket/message.html:18 +msgid "Admin" +msgstr "Әкімші" + +#: judge/models/profile.py:168 +msgid "comment mute" +msgstr "түсініктеме өшірілген" + +#: judge/models/profile.py:168 +msgid "Some users are at their best when silent." +msgstr "Кейбір пайдаланушылар тыныш болған кезде өздерін жақсы көрсетеді." + +#: judge/models/profile.py:170 +msgid "unlisted user" +msgstr "тізімге енгізілмеген пайдаланушы" + +#: judge/models/profile.py:170 +msgid "User will not be ranked." +msgstr "Пайдаланушы рейтингке ие болмайды." + +#: judge/models/profile.py:173 +msgid "banned from voting on problem point values" +msgstr "есептің ұпайлары бойынша дауыс беруге тыйым салынады" + +#: judge/models/profile.py:174 +msgid "User will not be able to vote on problems' point values." +msgstr "Пайдаланушы есептер бойынша ұпай мәндеріне дауыс бере алмайды." + +#: judge/models/profile.py:178 +msgid "user script" +msgstr "пайдаланушы скрипі" + +#: judge/models/profile.py:179 +msgid "User-defined JavaScript for site customization." +msgstr "JavaScript үшін сайтты өңдеу үшін анықталған пайдаланушы." + +#: judge/models/profile.py:180 +msgid "current contest" +msgstr "ағымдағы байқау" + +#: judge/models/profile.py:182 +msgid "math engine" +msgstr "математикалық қозғалтқыш" + +#: judge/models/profile.py:184 +msgid "The rendering engine used to render math." +msgstr "Математиканы көрсету үшін қолданылатын рендеринг механизмі." + +#: judge/models/profile.py:185 +msgid "TOTP 2FA enabled" +msgstr "TOTP 2FA қосылған" + +#: judge/models/profile.py:186 +msgid "Check to enable TOTP-based two-factor authentication." +msgstr "OTP-негізіндегі екі факторлы аутентификацияның қосылғанын тексеріңіз." + +#: judge/models/profile.py:187 +msgid "WebAuthn 2FA enabled" +msgstr "WebAuthn 2FA қосылған" + +#: judge/models/profile.py:188 +msgid "Check to enable WebAuthn-based two-factor authentication." +msgstr " WebAuthn-негізіндегі екі факторлы аутентификацияның қосылғанын тексеріңіз." + +#: judge/models/profile.py:189 +msgid "TOTP key" +msgstr "TOTP кілті" + +#: judge/models/profile.py:190 +msgid "32-character Base32-encoded key for TOTP." +msgstr "TOTP үшін 32-таңбалы База32-кодталған кілт." + +#: judge/models/profile.py:192 +msgid "TOTP key must be empty or Base32." +msgstr "TOTP кілт бос немесе База32 болуы керек." + +#: judge/models/profile.py:193 +msgid "scratch codes" +msgstr "скретч-коды" + +#: judge/models/profile.py:194 +msgid "JSON array of 16-character Base32-encoded codes for scratch codes." +msgstr "JSON скретч кодтары үшін База32 кодтауындағы 16 таңбалы кодтар массиві." + +#: judge/models/profile.py:198 +msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." +msgstr "Скретч кодтары бос болуы керек немесе 16-таңбалы База32 кодтарының JSON массиві болуы керек." + +#: judge/models/profile.py:200 +msgid "last TOTP timecode" +msgstr " соңғы TOTP уақыт коды" + +#: judge/models/profile.py:201 +msgid "API token" +msgstr "API белгі" + +#: judge/models/profile.py:202 +msgid "64-character hex-encoded API access token." +msgstr "Оналтылық кодтағы 64-таңбалы API қол жетімділік белгісі." + +#: judge/models/profile.py:204 +msgid "API token must be None or hexadecimal" +msgstr "API таңбалауышы нөлдік немесе он алтылық болуы керек" + +#: judge/models/profile.py:205 +msgid "internal notes" +msgstr "ішкі ескертпелер" + +#: judge/models/profile.py:206 +msgid "Notes for administrators regarding this user." +msgstr "Осы пайдаланушыға қатысты әкімшілерге арналған ескертпелер." + +#: judge/models/profile.py:207 +msgid "last data download time" +msgstr "деректерді соңғы жүктеу уақыты" + +#: judge/models/profile.py:208 +msgid "display name override" +msgstr "көрсетілген атауды қайта анықтау" + +#: judge/models/profile.py:209 +msgid "Name displayed in place of username." +msgstr "Пайдаланушы атының орнына көрсетілетін атау." + +#: judge/models/profile.py:335 +msgid "Shows in-progress development stuff" +msgstr "Әзірлеу процесінде тұрған материалдарды көрсетеді" + +#: judge/models/profile.py:336 +msgid "Edit TOTP settings" +msgstr "TOTP параметрлерін өңдеу" + +#: judge/models/profile.py:338 +msgid "user profile" +msgstr "Қолданушы профилі" + +#: judge/models/profile.py:339 +msgid "user profiles" +msgstr "Қолданушы профилі" + +#: judge/models/profile.py:351 +msgid "device name" +msgstr "Құрылғы атауы" + +#: judge/models/profile.py:352 +msgid "credential ID" +msgstr "ID тіркелгі деректері" + +#: judge/models/profile.py:353 +msgid "public key" +msgstr "ашық кілт" + +#: judge/models/profile.py:354 +msgid "sign counter" +msgstr "белгі есептегіші" + +#: judge/models/profile.py:372 +#, python-format +msgid "WebAuthn credential: %(name)s" +msgstr "WebAuthn тіркелген деректер: %(name)s" + +#: judge/models/profile.py:375 +msgid "WebAuthn credential" +msgstr "WebAuthn тіркелген деректер" + +#: judge/models/profile.py:376 +msgid "WebAuthn credentials" +msgstr "WebAuthn тіркелген деректер" + +#: judge/models/profile.py:383 +msgid "request time" +msgstr "Сұраныс уақыты" + +#: judge/models/profile.py:384 +msgid "state" +msgstr "Аймақ" + +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 +msgid "Pending" +msgstr "қарастырылу" + +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 +msgid "Approved" +msgstr "Қабылданды" + +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 +msgid "Rejected" +msgstr "Қабылданбады" + +#: judge/models/profile.py:390 +msgid "reason" +msgstr "себеп" + +#: judge/models/profile.py:399 +msgid "organization join request" +msgstr "ұйымға қосылу туралы сұрау салу" + +#: judge/models/profile.py:400 +msgid "organization join requests" +msgstr "ұйымға қосылу туралы өтініштер" + +#: judge/models/runtime.py:19 +msgid "short identifier" +msgstr "қысқа идентификатор" + +#: judge/models/runtime.py:20 +msgid "The identifier for this language; the same as its executor id for judges." +msgstr "Сол тілге арналған идентификатор; судьялар үшін оның орындаушы идентификаторымен бірдей." + +#: judge/models/runtime.py:22 +msgid "long name" +msgstr "ұзақ атау" + +#: judge/models/runtime.py:23 +msgid "Longer name for the language, e.g. \"Python 2\" or \"C++11\"." +msgstr "Тілдің ұзағырақ атауы, \"Python 2\" немесе \"C++11\"." + +#: judge/models/runtime.py:25 +msgid "More readable, but short, name to display publicly; e.g. \"PY2\" or \"C++11\". If left blank, it will default to the short identifier." +msgstr "Көпшілікке көрсету үшін оқылатын, бірақ қысқа тақырып; \"PY2\" немесе \"C++11\". Егер сіз өрісті бос қалдырсаңыз, әдепкі бойынша қысқа идентификатор қолданылады." + +#: judge/models/runtime.py:29 +msgid "common name" +msgstr "жалпы атауы" + +#: judge/models/runtime.py:30 +msgid "Common name for the language. For example, the common name for C++03, C++11, and C++14 would be \"C++\"." +msgstr "Бұл тілдің жалпы атауы. Мысалы, жалпы атау C++03, C++11, және C++14 үшін \"C++\" болар еді." + +#: judge/models/runtime.py:32 +msgid "ace mode name" +msgstr "ACE моделінің атауы" + +#: judge/models/runtime.py:33 +msgid "Language ID for Ace.js editor highlighting, appended to \"mode-\" to determine the Ace JavaScript file to use, e.g., \"python\"." +msgstr "\"Python\" сияқты пайдаланылатын Ace JavaScript файлын анықтау үшін \"mode-\" ке қосылатын Ace.js редакторын бөлектеуге арналған тіл идентификаторы." + +#: judge/models/runtime.py:35 +msgid "pygments name" +msgstr "pygments name" + +#: judge/models/runtime.py:36 +msgid "Language ID for Pygments highlighting in source windows." +msgstr "Бастапқы терезелердегі фрагменттерді бөлектеу үшін ID тіл идентификаторы." + +#: judge/models/runtime.py:37 +msgid "code template" +msgstr "код үлгісі" + +#: judge/models/runtime.py:38 +msgid "Code template to display in submission editor." +msgstr "Жіберу редакторында көрсетілетін код үлгісі." + +#: judge/models/runtime.py:39 +msgid "runtime info override" +msgstr "жұмыс уақыты туралы ақпаратты қайта анықтау" + +#: judge/models/runtime.py:40 +msgid "Do not set this unless you know what you're doing! It will override the usually more specific, judge-provided runtime info!" +msgstr "Егер сіз не істеп жатқаныңызды білмесеңіз, оны орнатпаңыз! Бұл әдетте судья ұсынатын нақты жұмыс уақыты туралы ақпаратты қайта анықтайды!" + +#: judge/models/runtime.py:42 +msgid "language description" +msgstr "сипаттамасын аудару" + +#: judge/models/runtime.py:43 +msgid "Use this field to inform users of quirks with your environment, additional restrictions, etc." +msgstr "Пайдаланушыларға қоршаған ортаның ерекшеліктері, қосымша шектеулер және т. б. туралы хабарлау үшін осы өрісті пайдаланыңыз." + +#: judge/models/runtime.py:45 +msgid "extension" +msgstr "" + +#: judge/models/runtime.py:46 +msgid "The extension of source files, e.g., \"py\" or \"cpp\"." +msgstr "Бастапқы файлдарды кеңейту, \"py\" немесе \"cpp\" сияқты." + +#: judge/models/runtime.py:112 +msgid "languages" +msgstr "тілдер" + +#: judge/models/runtime.py:116 +msgid "language to which this runtime belongs" +msgstr "бұл орындау ортасы жататын тіл" + +#: judge/models/runtime.py:117 +msgid "judge on which this runtime exists" +msgstr "бұл орындау ортасы қандай негізде бар екенін бағалаңыз" + +#: judge/models/runtime.py:118 +msgid "runtime name" +msgstr "жұмыс уақытының атауы" + +#: judge/models/runtime.py:119 +msgid "runtime version" +msgstr "орындауға арналған нұсқа" + +#: judge/models/runtime.py:120 +msgid "order in which to display this runtime" +msgstr "осы орындау ортасын көрсету тәртібі" + +#: judge/models/runtime.py:124 +msgid "judge name" +msgstr "сот есімі" + +#: judge/models/runtime.py:124 +msgid "Server name, hostname-style." +msgstr "Сервер атауы, хост-атауы стилінде." + +#: judge/models/runtime.py:126 +msgid "time of creation" +msgstr "құру уақыты" + +#: judge/models/runtime.py:127 +msgid "A key to authenticate this judge." +msgstr "Бұл судьяның аутентификациясының кілті." + +#: judge/models/runtime.py:128 +msgid "authentication key" +msgstr "аутентификация кілті." + +#: judge/models/runtime.py:129 +msgid "block judge" +msgstr "блок судьясы" + +#: judge/models/runtime.py:130 +msgid "Whether this judge should be blocked from connecting, even if its key is correct." +msgstr "Бұл судьяның кілті дұрыс болса да, оған қосылуды бұғаттау керек пе." + +#: judge/models/runtime.py:132 +msgid "disable judge" +msgstr "судьяны өшіру" + +#: judge/models/runtime.py:133 +msgid "Whether this judge should be removed from judging queue." +msgstr "Бұл судьяны төрешілер кезегінен шығару керек пе." + +#: judge/models/runtime.py:134 +msgid "judge online status" +msgstr " судья статусы онлайн" + +#: judge/models/runtime.py:135 +msgid "judge start time" +msgstr "судьяның басталу уақыты" + +#: judge/models/runtime.py:136 +msgid "response time" +msgstr "жауап беру уақыты" + +#: judge/models/runtime.py:137 +msgid "system load" +msgstr "жүйеге жүктеме" + +#: judge/models/runtime.py:138 +msgid "Load for the last minute, divided by processors to be fair." +msgstr "Әділдік үшін процессорларға бөлінген соңғы минуттық жүктеу." + +#: judge/models/runtime.py:140 +msgid "last connected IP" +msgstr "соңғы қосылған IP " + +#: judge/models/runtime.py:142 judge/models/runtime.py:191 +msgid "judges" +msgstr "судьялар" + +#: judge/models/runtime.py:190 +msgid "judge" +msgstr "сот" + +#: judge/models/submission.py:22 judge/models/submission.py:50 +#: judge/utils/problems.py:66 +msgid "Accepted" +msgstr "Қабылданды" + +#: judge/models/submission.py:23 judge/models/submission.py:51 +msgid "Wrong Answer" +msgstr "Қате Жауап" + +#: judge/models/submission.py:24 judge/models/submission.py:53 +msgid "Time Limit Exceeded" +msgstr "Уақыт шегінен асып кетті" + +#: judge/models/submission.py:25 judge/models/submission.py:54 +msgid "Memory Limit Exceeded" +msgstr "Жад шегінен асып кетті" + +#: judge/models/submission.py:26 judge/models/submission.py:55 +msgid "Output Limit Exceeded" +msgstr "Шығу шегінен асып кетті" + +#: judge/models/submission.py:27 judge/models/submission.py:56 +msgid "Invalid Return" +msgstr "Жарамсыз қайтару" + +#: judge/models/submission.py:28 judge/models/submission.py:57 +msgid "Runtime Error" +msgstr "Орындау кезіндегі қате" + +#: judge/models/submission.py:29 judge/models/submission.py:44 +#: judge/models/submission.py:58 judge/utils/problems.py:68 +msgid "Compile Error" +msgstr "Компляциялық қате" + +#: judge/models/submission.py:30 judge/models/submission.py:43 +msgid "Internal Error" +msgstr "Ішкі қате" + +#: judge/models/submission.py:31 judge/models/submission.py:52 +msgid "Short Circuited" +msgstr "қысқа тұйықталу" + +#: judge/models/submission.py:32 judge/models/submission.py:45 +#: judge/models/submission.py:64 +msgid "Aborted" +msgstr "Үзілді" + +#: judge/models/submission.py:39 judge/models/submission.py:60 +msgid "Queued" +msgstr "Кезекте" + +#: judge/models/submission.py:40 judge/models/submission.py:61 +msgid "Processing" +msgstr "Өңдеу" + +#: judge/models/submission.py:41 judge/models/submission.py:62 +msgid "Grading" +msgstr "Жіктеу" + +#: judge/models/submission.py:42 judge/models/submission.py:63 +msgid "Completed" +msgstr "Тапсырыс орындалды." + +#: judge/models/submission.py:59 +msgid "Internal Error (judging server error)" +msgstr "Ішкі қате (сервер қатесі бойынша)" + +#: judge/models/submission.py:69 +msgid "submission time" +msgstr "Жіберу уақыты" + +#: judge/models/submission.py:70 judge/models/submission.py:282 +msgid "execution time" +msgstr "Орындау уақыты:" + +#: judge/models/submission.py:71 judge/models/submission.py:283 +msgid "memory usage" +msgstr "Жадтың пайдаланылуы" + +#: judge/models/submission.py:72 judge/models/submission.py:284 +msgid "points granted" +msgstr "есептелген ұпайлар" + +#: judge/models/submission.py:73 +msgid "submission language" +msgstr "тапсырмалар тілі" + +#: judge/models/submission.py:75 +msgid "status" +msgstr "Статус" + +#: judge/models/submission.py:76 +msgid "result" +msgstr "Нәтиже" + +#: judge/models/submission.py:78 +msgid "compile errors" +msgstr "Компляциялық қате" + +#: judge/models/submission.py:80 +msgid "batched cases" +msgstr "пакеттік өтініштер" + +#: judge/models/submission.py:81 +msgid "test case points" +msgstr "сынақ нүктелері" + +#: judge/models/submission.py:82 +msgid "test case total points" +msgstr "сынақ мысалдарының жалпы саны" + +#: judge/models/submission.py:83 +msgid "judged on" +msgstr "бойынша сотталады" + +#: judge/models/submission.py:85 +msgid "submission judge time" +msgstr "судьяның тапсырмаларды қарау уақыты" + +#: judge/models/submission.py:86 +msgid "last rejudge date by admin" +msgstr "әкімшінің соңғы қайта қараған күні" + +#: judge/models/submission.py:87 +msgid "was ran on pretests only" +msgstr "тек алдын ала сынақтарда іске қосылды" + +#: judge/models/submission.py:90 +msgid "submission lock" +msgstr "тапсырмаларды бұғаттау" + +#: judge/models/submission.py:198 +#, python-format +msgid "Submission %(id)d of %(problem)s by %(user)s" +msgstr "Тапсырмалар %(id)d %(problem)s %(user)s" + +#: judge/models/submission.py:223 +msgid "Abort any submission" +msgstr "Кез келген тапсырманы тоқтату" + +#: judge/models/submission.py:224 +msgid "Rejudge the submission" +msgstr "Тапсырманы қайта қарау" + +#: judge/models/submission.py:225 +msgid "Rejudge a lot of submissions" +msgstr "Көптеген тапсырмаарды қабылдамау" + +#: judge/models/submission.py:226 +msgid "Submit without limit" +msgstr "Шектеусіз жіберу" + +#: judge/models/submission.py:227 +msgid "View all submission" +msgstr "Барлық жіберілген тапсырылымдарды қараңыз" + +#: judge/models/submission.py:228 +msgid "Resubmit others' submission" +msgstr "Басқа' тапсырылымдарды қайта жіберу" + +#: judge/models/submission.py:229 +msgid "Change lock status of submission" +msgstr "Тапсырылымның бұғаттау күйін өзгерту" + +#: judge/models/submission.py:232 +msgid "submissions" +msgstr "тапсырылымдар" + +#: judge/models/submission.py:262 judge/models/submission.py:278 +msgid "associated submission" +msgstr "өкілдік тапсырылымдар" + +#: judge/models/submission.py:264 +msgid "source code" +msgstr "Бастапқы код" + +#: judge/models/submission.py:267 +#, python-format +msgid "Source of %(submission)s" +msgstr "%(submission)s дерек көзі" + +#: judge/models/submission.py:270 +msgid "submission source" +msgstr "тапсырылымдар дерек көзі" + +#: judge/models/submission.py:271 +msgid "submission sources" +msgstr "тапсырылымдар дерек көздері" + +#: judge/models/submission.py:280 +msgid "test case ID" +msgstr "ID сынақ тесті" + +#: judge/models/submission.py:281 +msgid "status flag" +msgstr "флаг күйі" + +#: judge/models/submission.py:285 +msgid "points possible" +msgstr "мүмкін ұпайлар" + +#: judge/models/submission.py:286 +msgid "batch number" +msgstr "партия нөмірі" + +#: judge/models/submission.py:287 +msgid "judging feedback" +msgstr "бағалаушы кері байланыс" + +#: judge/models/submission.py:288 +msgid "extended judging feedback" +msgstr "судьялармен кеңейтілген кері байланыс" + +#: judge/models/submission.py:289 +msgid "program output" +msgstr "бағдарламалық жасақтама" + +#: judge/models/submission.py:303 +msgid "submission test case" +msgstr "тапсырылымның сынақ тесті" + +#: judge/models/submission.py:304 +msgid "submission test cases" +msgstr "тапсырылымның сынақтар тесті" + +#: judge/models/ticket.py:10 +msgid "ticket title" +msgstr "билет атауы" + +#: judge/models/ticket.py:11 +msgid "ticket creator" +msgstr "билет жасаушы" + +#: judge/models/ticket.py:13 +msgid "creation time" +msgstr "Жасалу уақыты" + +#: judge/models/ticket.py:14 +msgid "assignees" +msgstr "заңдықабылдаушы" + +#: judge/models/ticket.py:16 +msgid "quick notes" +msgstr "Тез жазбалар" + +#: judge/models/ticket.py:17 +msgid "Staff notes for this issue to aid in processing." +msgstr "Өңдеуді жеңілдету үшін осы мәселе бойынша қызметкерлердің ескертулері." + +#: judge/models/ticket.py:18 +msgid "linked item type" +msgstr "байланысқан элемент түрі" + +#: judge/models/ticket.py:20 +msgid "linked item ID" +msgstr "ID байланысқан элемент" + +#: judge/models/ticket.py:22 +msgid "is ticket open?" +msgstr "билет ашық па?" + +#: judge/models/ticket.py:25 judge/models/ticket.py:30 +msgid "ticket" +msgstr "билет" + +#: judge/models/ticket.py:26 +msgid "tickets" +msgstr "билеттер" + +#: judge/models/ticket.py:34 +msgid "message body" +msgstr "хабарлама мәтіні" + +#: judge/models/ticket.py:35 +msgid "message time" +msgstr "хабарлама уақыты" + +#: judge/models/ticket.py:38 +msgid "ticket message" +msgstr "билет хабарламасы" + +#: judge/models/ticket.py:39 +msgid "ticket messages" +msgstr "билет хабарламалары" + +#: judge/ratings.py:194 +msgid "Newbie" +msgstr "Бастаушы" + +#: judge/ratings.py:195 +msgid "Amateur" +msgstr "Әуесқой" + +#: judge/ratings.py:196 +msgid "Expert" +msgstr "Мамандар" + +#: judge/ratings.py:197 +msgid "Candidate Master" +msgstr "Магистр дәрежесіне үміткер" + +#: judge/ratings.py:198 +msgid "Master" +msgstr "Шебер" + +#: judge/ratings.py:199 +msgid "Grandmaster" +msgstr "Гроссмейстер" + +#: judge/ratings.py:200 +msgid "Target" +msgstr "Таргет" + +#: judge/tasks/contest.py:19 +msgid "Recalculating contest scores" +msgstr "Байқау балдарын қайта есептеу" + +#: judge/tasks/contest.py:40 +msgid "Running MOSS" +msgstr "Жүгіретін MOSS" + +#: judge/tasks/submission.py:47 +msgid "Modifying submissions" +msgstr "Жіберілген тапсырмаларды өзгерту" + +#: judge/tasks/submission.py:60 +msgid "Recalculating user points" +msgstr "Пайдаланушы ұпайларын қайта есептеу" + +#: judge/tasks/user.py:49 +msgid "Applying filters" +msgstr "Сүзгілерді қолдану" + +#: judge/tasks/user.py:64 +msgid "Preparing your submission data" +msgstr "Тапсырмаларды жіберуге дайындау" + +#: judge/tasks/user.py:95 +msgid "Preparing your comment data" +msgstr "Тапсырмаларды жіберуге дайындау" + +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "Теріс пайдалануға байланысты электрондық пошта провайдеріне кіруге тыйым салынады. Сенімді электрондық пошта провайдерін пайдаланыңыз." + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "{page_number} немесе {total_pages} бет" + +#: judge/utils/problem_data.py:64 +msgid "Empty batches not allowed." +msgstr "Бос партияларға жол берілмейді." + +#: judge/utils/problem_data.py:83 +#, python-format +msgid "Points must be defined for non-batch case #%d." +msgstr "Нүктелер пакеттік емес жағдай үшін анықталуы керек #%d." + +#: judge/utils/problem_data.py:88 +#, python-format +msgid "Input file for case %d does not exist: %s" +msgstr "%d жағдайына арналған кіріс файлы жоқ: %s" + +#: judge/utils/problem_data.py:91 +#, python-format +msgid "Output file for case %d does not exist: %s" +msgstr "%d жағдайына арналған шығыс файлы жоқ: %s" + +#: judge/utils/problem_data.py:117 +#, python-format +msgid "Batch start case #%d requires points." +msgstr "#%d пакетін іске қосу үшін ұпайлар қажет." + +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "Пакетті бір жағдайда аяқтауға тырысыңыз #%d." + +#: judge/utils/problem_data.py:172 +msgid "How did you corrupt the zip path?" +msgstr "Пошта жолын қалай бұздыңыз?" + +#: judge/utils/problem_data.py:178 +msgid "How did you corrupt the generator path?" +msgstr "Генератор жолын қалай бұздыңыз?" + +#: judge/utils/problems.py:67 +msgid "Wrong" +msgstr "Қате" + +#: judge/utils/problems.py:69 +msgid "Timeout" +msgstr "Күту уақыты" + +#: judge/utils/problems.py:70 +msgid "Error" +msgstr "Қате" + +#: judge/utils/pwned.py:109 +msgid "This password is too common." +msgstr "Бұл құпия сөз тым кең таралған." + +#: judge/utils/pwned.py:112 +msgid "Your password can't be a commonly used password." +msgstr "Сіздің құпия сөзіңіз жиі қолданылатын құпия сөз бола алмайды." + +#: judge/utils/timedelta.py:49 +msgctxt "time format with day" +msgid "%d day %h:%m:%s" +msgid_plural "%d days %h:%m:%s" +msgstr[0] "%d күн %h:%m:%s" +msgstr[1] "%d күн %h:%m:%s" + +#: judge/utils/timedelta.py:53 +msgctxt "time format without day" +msgid "%h:%m:%s" +msgstr "%h:%m:%s" + +#: judge/utils/timedelta.py:59 +msgctxt "time format no seconds with day" +msgid "%d day %h:%m" +msgid_plural "%d days %h:%m" +msgstr[0] "%d күн %h:%m" +msgstr[1] "%d күн %h:%m" + +#: judge/utils/timedelta.py:61 +#, python-format +msgid "%d day" +msgid_plural "%d days" +msgstr[0] "%d күн" +msgstr[1] "%d күн" + +#: judge/utils/timedelta.py:63 +msgctxt "hours and minutes" +msgid "%h:%m" +msgstr "%h:%m" + +#: judge/views/blog.py:37 +#, python-format +msgid "Page %d of Posts" +msgstr " %d хабарламалар беті" + +#: judge/views/comment.py:28 +msgid "Messing around, are we?" +msgstr "Жетіспейтін, солай емес пе?" + +#: judge/views/comment.py:37 +msgid "You must solve at least one problem before you can vote." +msgstr "Дауыс бермес бұрын кем дегенде бір есепті шешу керек." + +#: judge/views/comment.py:51 +msgid "Comment not found." +msgstr "Пікір табылмады." + +#: judge/views/comment.py:54 +msgid "You cannot vote on your own comments." +msgstr "Өз пікіріңізге дауыс бере алмайсыз." + +#: judge/views/comment.py:72 +msgid "You already voted." +msgstr "Дауыс беріп қойдыңыз." + +#: judge/views/comment.py:135 judge/views/organization.py:386 +msgid "Edited from site" +msgstr "Сайттан өңделген" + +#: judge/views/comment.py:160 +msgid "Editing comment" +msgstr "Пікірді өзгерту" + +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 +msgid "No such contest" +msgstr "Мұндай контест жоқ" + +#: judge/views/contests.py:59 judge/views/contests.py:249 +#, python-format +msgid "Could not find a contest with the key \"%s\"." +msgstr "\"%s\" кілті бар контест табылмады." + +#: judge/views/contests.py:72 +msgid "Contests" +msgstr "Сайыстар" + +#: judge/views/contests.py:252 +msgid "Could not find such contest." +msgstr "Мұндай сайыс табылмады." + +#: judge/views/contests.py:255 +#, python-format +msgid "Access to contest \"%s\" denied" +msgstr "\"%s\" сайысына рұқсат жоқ." + +#: judge/views/contests.py:300 +msgid "Clone Contest" +msgstr "Сайысты Клондау" + +#: judge/views/contests.py:334 +#, python-format +msgid "Cloned contest from %s" +msgstr "%s сайысынан клондалды " + +#: judge/views/contests.py:370 +msgid "Contest not ongoing" +msgstr "Байқау өткізілмейді" + +#: judge/views/contests.py:371 +#, python-format +msgid "\"%s\" is not currently ongoing." +msgstr "\"%s\" қазіргі уақытта жүргізілмейді." + +#: judge/views/contests.py:376 +msgid "Banned from joining" +msgstr "Қосылуға тыйым салынады" + +#: judge/views/contests.py:377 +msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." +msgstr "Сіз бұл байқауда non grata тұлғасы деп жарияландыңыз. Сізге бұл байқауға қатысуға біржола тыйым салынады." + +#: judge/views/contests.py:407 +msgid "Cannot enter" +msgstr "Кіру мүмкін емес" + +#: judge/views/contests.py:408 +msgid "You are not able to join this contest." +msgstr "Сіз бұл байқауға қатыса алмайсыз." + +#: judge/views/contests.py:446 +#, python-format +msgid "Enter access code for \"%s\"" +msgstr "\"%s\" кіру кодын енгізіңіз" + +#: judge/views/contests.py:457 +#, python-format +msgid "You are not in contest \"%s\"." +msgstr "Сіз жарысқа қатыспайсыз \"%s\"." + +#: judge/views/contests.py:515 +#, python-format +msgid "Contests in %(month)s" +msgstr "%(month)s байқаулар" + +#: judge/views/contests.py:515 +msgid "F Y" +msgstr "F Y" + +#: judge/views/contests.py:573 +#, python-format +msgid "%s Statistics" +msgstr "%s Статистика" + +#: judge/views/contests.py:748 +#, python-format +msgid "%s Rankings" +msgstr "%s Рейтингтер" + +#: judge/views/contests.py:756 +msgid "???" +msgstr "???" + +#: judge/views/contests.py:772 +#, python-format +msgid "Your participation in %(contest)s" +msgstr "Сіздің %(contest)s қатысуыңыз" + +#: judge/views/contests.py:773 +#, python-format +msgid "%(user)s's participation in %(contest)s" +msgstr "%(user)s %(contest)s қатысуыңыз" + +#: judge/views/contests.py:782 +msgid "Live" +msgstr "Тікелей эфир" + +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 +msgid "Participation" +msgstr "қатысу" + +#: judge/views/contests.py:838 +#, python-format +msgid "%s MOSS Results" +msgstr "%s MOSS Нәтиже" + +#: judge/views/contests.py:865 +#, python-format +msgid "Running MOSS for %s..." +msgstr "Жүгіретін MOSS үшін %s..." + +#: judge/views/contests.py:888 +#, python-format +msgid "Contest tag: %s" +msgstr "контест белгілері: %s" + +#: judge/views/error.py:14 +msgid "404 error" +msgstr "404 қатесі" + +#: judge/views/error.py:15 +#, python-format +msgid "Could not find page \"%s\"" +msgstr "Бетті табу мүмкін болмады \"%s\"" + +#: judge/views/error.py:22 +#, python-format +msgid "no permission for %s" +msgstr "%s үшін рұқсат жоқ" + +#: judge/views/error.py:30 +#, python-format +msgid "corrupt page %s" +msgstr "%s бүлінген бет" + +#: judge/views/language.py:12 templates/status/judge-status-table.html:10 +#: templates/status/status-tabs.html:5 +msgid "Runtimes" +msgstr "Рантаймдар" + +#: judge/views/organization.py:53 judge/views/organization.py:56 +msgid "No such organization" +msgstr "Мұндай ұйым жоқ" + +#: judge/views/organization.py:54 +#, python-format +msgid "Could not find an organization with the key \"%s\"." +msgstr "\"%s\" кілті бар контест табылмады." + +#: judge/views/organization.py:57 +msgid "Could not find such organization." +msgstr "Мұндай ұйымды таба алмадым." + +#: judge/views/organization.py:98 judge/views/register.py:30 +#: templates/user/user-list-tabs.html:5 +msgid "Organizations" +msgstr "Ұйымдар" + +#: judge/views/organization.py:141 +#, python-format +msgid "%s Members" +msgstr "%s мүше" + +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 +msgid "Joining organization" +msgstr "Ұйымға қосылу" + +#: judge/views/organization.py:167 +msgid "You are already in the organization." +msgstr "Сіз қазірдің өзінде ұйымдасыз." + +#: judge/views/organization.py:170 +msgid "This organization is not open." +msgstr "Бұл ұйым ашық емес." + +#: judge/views/organization.py:189 +msgid "Leaving organization" +msgstr "Ұйымға қосылу" + +#: judge/views/organization.py:189 +#, python-format +msgid "You are not in \"%s\"." +msgstr "Сіз \"%s\" жоқсыз." + +#: judge/views/organization.py:216 judge/views/organization.py:478 +#, python-format +msgid "Can't request to join %s" +msgstr "%s қосылуды сұрай алмайды" + +#: judge/views/organization.py:217 judge/views/organization.py:479 +#, python-format +msgid "You already have a pending request to join %s." +msgstr "%s сізде қосылуға сұраныс күтіп тұр." + +#: judge/views/organization.py:230 +#, python-format +msgid "Request to join %s" +msgstr "%s қосылу туралы сұрау" + +#: judge/views/organization.py:249 +msgid "Join request detail" +msgstr "Қосылу туралы сұрау туралы толық ақпарат" + +#: judge/views/organization.py:290 +#, python-format +msgid "Managing join requests for %s" +msgstr "%s үшін қосылу сұрауларын басқару" + +#: judge/views/organization.py:322 +#, python-format +msgid "Your organization can only receive %d more member." +msgid_plural "Your organization can only receive %d more members." +msgstr[0] "Сіздің ұйымыңыз тек %d көбірек қатысушы қабылдай алады." +msgstr[1] "Сіздің ұйымыңыз тек %d көбірек қатысушыларды қабылдай алады." + +#: judge/views/organization.py:324 +#, python-format +msgid "You cannot approve %d user." +msgid_plural "You cannot approve %d users." +msgstr[0] "Сіз %d пайдаланушыны мақұлдай алмайсыз." +msgstr[1] "Сіз %d пайдаланушыларды мақұлдай алмайсыз." + +#: judge/views/organization.py:339 +#, python-format +msgid "Approved %d user." +msgid_plural "Approved %d users." +msgstr[0] "%d мақұлданған пайдаланушы." +msgstr[1] "%d мақұлданған пайдаланушылар." + +#: judge/views/organization.py:340 +#, python-format +msgid "Rejected %d user." +msgid_plural "Rejected %d users." +msgstr[0] "%d қабылданбаған пайдаланушы." +msgstr[1] "%d қабылданбаған пайдаланушылар." + +#: judge/views/organization.py:370 +#, python-format +msgid "Editing %s" +msgstr "%s өңдеу" + +#: judge/views/organization.py:394 judge/views/organization.py:402 +msgid "Can't edit organization" +msgstr "Ұйымды өңдеу мүмкін емес" + +#: judge/views/organization.py:395 +msgid "You are not allowed to edit this organization." +msgstr "Сізге бұл ұйымды өңдеуге рұқсат етілмейді." + +#: judge/views/organization.py:403 +msgid "You are not allowed to kick people from this organization." +msgstr "Сізге бұл ұйымнан адамдарды шығаруға рұқсат етілмейді." + +#: judge/views/organization.py:408 judge/views/organization.py:412 +msgid "Can't kick user" +msgstr "Пайдаланушыны шығару мүмкін емес" + +#: judge/views/organization.py:409 +msgid "The user you are trying to kick does not exist!" +msgstr "Сіз шығарғыңыз келетін пайдаланушы жоқ!" + +#: judge/views/organization.py:413 +#, python-format +msgid "The user you are trying to kick is not in organization: %s" +msgstr "Сіз шығарғыңыз келетін пайдаланушы ұйымға кірмейді:%s" + +#: judge/views/organization.py:450 +#, python-brace-format +msgid "Class {name} in {organization}" +msgstr "Сынып {name} {organization} да" + +#: judge/views/organization.py:456 +#, python-brace-format +msgid "Class {name} - {organization}" +msgstr "Сынып {name} - {organization} " + +#: judge/views/organization.py:484 +#, python-brace-format +msgid "Request to join {name} in {organization}" +msgstr "{name} {organization} да қосылу туралы өтініш" + +#: judge/views/problem.py:71 +msgid "No such problem" +msgstr "Мұндай есеп жоқ" + +#: judge/views/problem.py:72 +#, python-format +msgid "Could not find a problem with the code \"%s\"." +msgstr "%s есеп кодын табу мүмкін болмады." + +#: judge/views/problem.py:114 judge/views/problem.py:117 +#, python-brace-format +msgid "Editorial for {0}" +msgstr "{0} үшін талдауы" + +#: judge/views/problem.py:137 +msgid "No such editorial" +msgstr "Мұндай редакциялық мақала жоқ" + +#: judge/views/problem.py:138 +#, python-format +msgid "Could not find an editorial with the code \"%s\"." +msgstr "%s коды бар редакциялық мақаланы табу мүмкін болмады." + +#: judge/views/problem.py:239 +msgid "Not allowed to vote on this problem." +msgstr "Бұл есеп бойынша дауыс беруге рұқсат етілмейді." + +#: judge/views/problem.py:262 +msgid "Not allowed to delete votes on this problem." +msgstr "Бұл есеп бойынша дауыстарды алып тастауға рұқсат етілмейді." + +#: judge/views/problem.py:265 +msgid "success" +msgstr "Жетістік" + +#: judge/views/problem.py:648 judge/views/problem.py:656 +#, python-format +msgid "Submit to %s" +msgstr "%s ұсыну" + +#: judge/views/problem.py:701 +msgid "You submitted too many submissions." +msgstr "Сіз тым көп тапсырмалар жібердіңіз." + +#: judge/views/problem.py:705 +msgid "Banned from submitting" +msgstr "Жіберуге тыйым салынады" + +#: judge/views/problem.py:706 +msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." +msgstr "Сіз бұл байқауда non grata тұлғасы деп жарияландыңыз. Сізге бұл есепті шешуге қатысуға біржола тыйым салынады." + +#: judge/views/problem.py:710 +msgid "Too many submissions" +msgstr " максималды тапсырмалар" + +#: judge/views/problem.py:711 +msgid "You have exceeded the submission limit for this problem." +msgstr "Сіз бұл есеп бойынша жіберу шегінен асып кеттіңіз." + +#: judge/views/problem.py:761 +msgid "Do you want me to ban you?" +msgstr "Сізге тыйым салғанымды қалайсыз ба?" + +#: judge/views/problem.py:779 +msgid "Clone Problem" +msgstr "Клондау есептері" + +#: judge/views/problem.py:806 +#, python-format +msgid "Cloned problem from %s" +msgstr "%s клондау есептері үшін" + +#: judge/views/problem_data.py:38 +msgid "Checker arguments must be a JSON object." +msgstr "JSON нысаны түріндегі тексеру аргументтері." + +#: judge/views/problem_data.py:40 +msgid "Checker arguments is invalid JSON." +msgstr "Тексеру аргументтері жарамсыз JSON болып табылады." + +#: judge/views/problem_data.py:47 +msgid "Your zip file is invalid!" +msgstr "Сіздің zip файлыңыз жарамсыз!" + +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 +#, python-brace-format +msgid "Comparing submissions for {0}" +msgstr "{0} үшін ұсынылған материалдарды салыстыру" + +#: judge/views/problem_data.py:158 +#, python-brace-format +msgid "Editing data for {0}" +msgstr "{0} үшін деректерді өңдеу" + +#: judge/views/problem_data.py:161 +#, python-format +msgid "Editing data for %s" +msgstr "%s үшін деректерді өңдеу" + +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 +#, python-format +msgid "Generated init.yml for %s" +msgstr "%s үшін init.yml жасалған" + +#: judge/views/problem_manage.py:50 judge/views/problem_manage.py:53 +#, python-format +msgid "Managing submissions for %s" +msgstr "%s үшін тапсырылымдарды басқару" + +#: judge/views/problem_manage.py:96 +#, python-format +msgid "Rejudging selected submissions for %s..." +msgstr "%s үшін таңдалған тапсырылымдарды күту..." + +#: judge/views/problem_manage.py:111 +#, python-format +msgid "Rescoring all submissions for %s..." +msgstr "%s үшін барлық тапсырылымдарды қалпына келтіру..." + +#: judge/views/problem_manage.py:120 +#, python-format +msgid "Successfully scheduled %d submission for rejudging." +msgid_plural "Successfully scheduled %d submissions for rejudging." +msgstr[0] "Сәтті жоспарланған %d тапсырылымға қайта төрелік ету." +msgstr[1] "Сәтті жоспарланған %d тапсырылымдарға қайта төрелік ету." + +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 +#, python-format +msgid "Best solutions for %s" +msgstr "%s үшін ең жақсы шешімдер" + +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 +#, python-format +msgid "Best solutions for %(problem)s in %(contest)s" +msgstr "%(contest)s %(problem)s үшін ең жақсы шешімдер" + +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 +#, python-format +msgid "Best solutions for problem %(number)s in %(contest)s" +msgstr "%(contest)s да %(number)s есептер үшін ең жақсы шешімдер" + +#: judge/views/register.py:23 +msgid "A username must contain letters, numbers, or underscores." +msgstr "Пайдаланушы атында әріптер, сандар немесе астын сызу таңбалары болуы керек." + +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Уақыт белдеуі" + +#: judge/views/register.py:27 +msgid "Preferred language" +msgstr "Аударма тілі" + +#: judge/views/register.py:34 +msgid "Subscribe to newsletter?" +msgstr "Ақпараттық бюллетеньге жазыласыз ба?" + +#: judge/views/register.py:41 +#, python-format +msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." +msgstr "Электрондық пошта мекенжайы \"%s\" бос емес. Әрбір мекенжай үшін тек бір тіркелуге рұқсат етіледі." + +#: judge/views/register.py:57 +msgid "Register" +msgstr "Тіркелу" + +#: judge/views/register.py:93 +msgid "Activation Key Invalid" +msgstr "Жарамсыз белсендіру кілті" + +#: judge/views/register.py:104 +msgid "Authentication failure" +msgstr "Аутентификация сәтсіз аяқталды" + +#: judge/views/stats.py:23 +msgid "Other" +msgstr "Басқасы" + +#: judge/views/stats.py:62 +msgid "Language statistics" +msgstr "Тіл статистикасы" + +#: judge/views/status.py:23 templates/submission/list.html:310 +msgid "Status" +msgstr "Статус" + +#: judge/views/status.py:108 +msgid "Version" +msgstr "Нұсқа" + +#: judge/views/submission.py:71 +#, python-format +msgid "Permission denied. Solve %(problem)s in order to view it." +msgstr "Рұқсаттан бас тартылды. Оны көру үшін %(problem)s шешіңіз." + +#: judge/views/submission.py:76 judge/views/submission.py:78 +msgid "Can't access submission" +msgstr "Тапсырылымдарға қол жеткізу мүмкін емес" + +#: judge/views/submission.py:78 +msgid "Permission denied." +msgstr "Рұқсаттан бас тартылды." + +#: judge/views/submission.py:82 judge/views/submission.py:89 +#, python-format +msgid "Submission of %(problem)s by %(user)s" +msgstr "Тапсырылымдар %(problem)s үшін %(user)s" + +#: judge/views/submission.py:233 judge/views/submission.py:234 +#: templates/problem/problem.html:132 +msgid "All submissions" +msgstr "барлық тапсырылымдар" + +#: judge/views/submission.py:400 judge/views/submission.py:405 +msgid "All my submissions" +msgstr "Менің барлық тапсырылымдарым" + +#: judge/views/submission.py:401 judge/views/submission.py:406 +#, python-format +msgid "All submissions by %s" +msgstr "Барлық тапсырылымдар %s" + +#: judge/views/submission.py:434 judge/views/submission.py:437 +#, python-format +msgid "All submissions for %s" +msgstr "Барлық тапсырылымдар %s үшін" + +#: judge/views/submission.py:498 judge/views/submission.py:505 +#, python-format +msgid "My submissions for %(problem)s" +msgstr "Менің тапсырылымдарым %(problem)s үшін" + +#: judge/views/submission.py:499 judge/views/submission.py:509 +#, python-format +msgid "%(user)s's submissions for %(problem)s" +msgstr "%(user)s тапсырылымдар үшін %(problem)s" + +#: judge/views/submission.py:609 judge/views/submission.py:624 +#, python-format +msgid "My submissions in %(contest)s" +msgstr "Менің тапсырылымдарым %(contest)s" + +#: judge/views/submission.py:610 judge/views/submission.py:628 +#, python-format +msgid "%(user)s's submissions in %(contest)s" +msgstr "%(user)s тапсырылымдар %(contest)s" + +#: judge/views/submission.py:646 judge/views/submission.py:664 +#, python-brace-format +msgid "{user}'s submissions for {problem} in {contest}" +msgstr "{user}'лар тапсырылымдар {contest} дағы {problem} үшін" + +#: judge/views/submission.py:651 judge/views/submission.py:672 +#, python-brace-format +msgid "{user}'s submissions for problem {number} in {contest}" +msgstr "{user}'лар {contest} да {number} есептер үшін тапсырылымдар" + +#: judge/views/ticket.py:33 judge/views/ticket.py:39 +msgid "Ticket title" +msgstr "билет атауы" + +#: judge/views/ticket.py:40 +msgid "Issue description" +msgstr "Мәселенің сипаттамасы" + +#: judge/views/ticket.py:48 +msgid "You must solve at least one problem before you can create a ticket." +msgstr "Өтініш жасамас бұрын кем дегенде бір есепті шешу керек." + +#: judge/views/ticket.py:91 judge/views/ticket.py:94 +#, python-format +msgid "New ticket for %s" +msgstr "%s үшін жаңа билет" + +#: judge/views/ticket.py:148 +#, python-format +msgid "%(title)s - Ticket %(id)d" +msgstr "%(title)s - Билет %(id)d" + +#: judge/views/ticket.py:255 +#, python-format +msgid "Tickets - Page %(number)d of %(total)d" +msgstr "Билеттер - Бет %(number)d %(total)d" + +#: judge/views/ticket.py:307 +#, python-format +msgid "New Ticket: %s" +msgstr "жаңа билет:%s" + +#: judge/views/ticket.py:308 +#, python-format +msgid "#%(id)d, assigned to: %(users)s" +msgstr "#%(id)d, тағайындалған: %(users)s" + +#: judge/views/ticket.py:310 +msgid ", " +msgstr ", " + +#: judge/views/ticket.py:310 +msgid "no one" +msgstr "ешкім" + +#: judge/views/ticket.py:330 +#, python-format +msgid "New Ticket Message For: %s" +msgstr "Тіркелу туралы жаңа билет:%s" + +#: judge/views/two_factor.py:50 +msgid "Enable Two-factor Authentication" +msgstr "Екі факторлы анықтауды қосу" + +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" +msgstr "" + +#: judge/views/two_factor.py:118 +msgid "Disable Two-factor Authentication" +msgstr "Екі-факторлы аутентификацияны өшіру" + +#: judge/views/two_factor.py:167 +msgid "Invalid WebAuthn response" +msgstr "WebAuthn жауабы жарамсыз." + +#: judge/views/two_factor.py:170 +msgid "Invalid name" +msgstr "Қате есімі." + +#: judge/views/two_factor.py:223 +msgid "Staff may not disable 2FA" +msgstr "Қызметкерлердің 2FA өшіруге құқығы жоқ" + +#: judge/views/two_factor.py:231 +msgid "Perform Two-factor Authentication" +msgstr "Екі-факторлы аутентификацияны орындаңыз" + +#: judge/views/user.py:83 +msgid "No such user" +msgstr "Мұндай қолданушы жоқ" + +#: judge/views/user.py:83 +#, python-format +msgid "No user handle \"%s\"." +msgstr "\"%s\" қолданатын дискриптор жоқ." + +#: judge/views/user.py:87 +msgid "My account" +msgstr "менің аккаунтым" + +#: judge/views/user.py:88 +#, python-format +msgid "User %s" +msgstr "%s қолданушы" + +#: judge/views/user.py:135 +msgid "Login" +msgstr "Логин" + +#: judge/views/user.py:176 +msgid "M j, Y, G:i" +msgstr "M j, Y, G:i" + +#: judge/views/user.py:300 +msgid "Preparing your data..." +msgstr "Сіздің деректеріңізді дайындаймыз..." + +#: judge/views/user.py:304 templates/user/edit-profile.html:349 +msgid "Download your data" +msgstr "Деректерді жүктеп алыңыз" + +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "Профильді өңдеу мүмкін емес" + +#: judge/views/user.py:360 +msgid "Updated on site" +msgstr "Сайтта жаңартылды" + +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 +#: templates/user/user-tabs.html:16 +msgid "Edit profile" +msgstr "Анкетаны өзгерту" + +#: judge/views/user.py:406 +msgid "Generated API token for user" +msgstr "Пайдаланушы үшін жасалған API таңбалауышы" + +#: judge/views/user.py:418 +msgid "Removed API token for user" +msgstr "Пайдаланушы үшін API таңбалауышы жойылды" + +#: judge/views/user.py:428 +msgid "Generated scratch codes for user" +msgstr "Пайдаланушы үшін жасалған сызат кодтары" + +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 +msgid "Leaderboard" +msgstr "Лидерлер тізімі" + +#: judge/views/user.py:495 +msgid "You have been successfully logged out." +msgstr "Сіз жүйеден сәтті шықтыңыз." + +#: judge/views/user.py:515 +msgid "You have sent too many password reset requests. Please try again later." +msgstr "Сіз парольді қалпына келтіру туралы тым көп сұраулар жібердіңіз. Кейінірек қайталап көріңіз." + +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + +#: templates/admin/judge/contest/change_form.html:9 +msgid "Are you sure you want to rejudge ALL the submissions?" +msgstr "Сіз ұсынылған барлық тапсырылымдарды күткіңіз келетініне сенімдісіз бе?" + +#: templates/admin/judge/contest/change_form.html:17 +#: templates/admin/judge/contest/change_form.html:20 +msgid "Rate" +msgstr "Бағалау" + +#: templates/admin/judge/contest/change_list.html:9 +msgid "Rate all ratable contests" +msgstr "Барлық рейтингтік байқауларды бағалаңыз" + +#: templates/admin/judge/judge/change_form.html:16 +#: templates/admin/judge/judge/change_form.html:19 +msgid "Disconnect" +msgstr "Ажырату" + +#: templates/admin/judge/judge/change_form.html:21 +#: templates/admin/judge/judge/change_form.html:24 +msgid "Terminate" +msgstr "Тоқтату" + +#: templates/admin/judge/judge/change_form.html:27 +#: templates/admin/judge/judge/change_form.html:30 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 +msgid "Disable" +msgstr "Өшіру" + +#: templates/admin/judge/judge/change_form.html:33 +#: templates/admin/judge/judge/change_form.html:36 +#: templates/user/edit-profile.html:408 +msgid "Enable" +msgstr "Қосылды" + +#: templates/admin/judge/problem/change_form.html:15 +#: templates/admin/judge/problem/change_form.html:18 +#: templates/user/user-base.html:37 +msgid "View submissions" +msgstr " максималды тапсырылымдар" + +#: templates/admin/judge/problem/change_form.html:20 +#: templates/admin/judge/problem/change_form.html:23 +msgid "View problem votes" +msgstr "Есептер бойынша дауыстарды қарау" + +#: templates/admin/judge/profile/change_form.html:14 +#: templates/admin/judge/profile/change_form.html:17 +msgid "Edit user" +msgstr "Пайдаланушыны өңдеу" + +#: templates/base.html:216 +#, python-format +msgid "Hello, %(username)s." +msgstr "Сәлем, %(username)s." + +#: templates/base.html:225 +msgid "Stop impersonating" +msgstr "Өзіңізді басқа біреу ретінде көрсетуді доғарыңыз" + +#: templates/base.html:230 +msgid "Log out" +msgstr "Шығу" + +#: templates/base.html:239 +#: templates/registration/password_reset_complete.html:4 +msgid "Log in" +msgstr "кіру" + +#: templates/base.html:240 templates/registration/registration_form.html:177 +msgid "or" +msgstr "немесе" + +#: templates/base.html:241 +msgid "Sign up" +msgstr "Тіркелу" + +#: templates/base.html:253 +msgid "spectating" +msgstr "бақылаушы" + +#: templates/base.html:266 +msgid "This site works best with JavaScript enabled." +msgstr "Бұл сайт JavaScript қосылған кезде жақсы жұмыс істейді." + +#: templates/base.html:293 +msgid "proudly powered by **DMOJ**" +msgstr "**DMOJ** базасында жақсы жұмыс жасайды" + +#: templates/blog/content.html:13 templates/comments/list.html:89 +#: templates/comments/list.html:105 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:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 +msgid "Edit" +msgstr "Түзету" + +#: templates/blog/content.html:27 +#, python-format +msgid "posted on %(time)s" +msgstr "%(time)s жарияланған" + +#: templates/blog/list.html:45 +msgid "Blog" +msgstr "Блог" + +#: templates/blog/list.html:47 +msgid "Events" +msgstr "оқиғалар" + +#: templates/blog/list.html:52 +msgid "News" +msgstr "жаңалықтар" + +#: templates/blog/list.html:66 +#, python-brace-format +msgid "posted on {time}" +msgstr "{time} жарияланған" + +#: templates/blog/list.html:66 +#, python-brace-format +msgid "posted {time}" +msgstr "{time} жарияланған " + +#: templates/blog/list.html:81 +msgid "Continue reading..." +msgstr "Оқуды жалғастырыңыз..." + +#: templates/blog/list.html:95 templates/problem/problem.html:331 +msgid "Clarifications" +msgstr "Түсіндіру" + +#: templates/blog/list.html:111 templates/problem/problem.html:342 +msgid "No clarifications have been made at this time." +msgstr "Қазіргі уақытта ешқандай түсініктеме болған жоқ." + +#: templates/blog/list.html:119 templates/contest/list.html:189 +msgid "Ongoing contests" +msgstr "Ағымдағы байқаулар" + +#: templates/blog/list.html:127 +#, python-format +msgid "Ends in %(countdown)s." +msgstr "%(countdown)s аяқталды." + +#: templates/blog/list.html:137 templates/contest/list.html:226 +msgid "Upcoming contests" +msgstr "Ағымдағы байқаулар" + +#: templates/blog/list.html:145 templates/contest/contest.html:41 +#, python-format +msgid "Starting in %(countdown)s." +msgstr "%(countdown)s басталды." + +#: templates/blog/list.html:154 +msgid "Comment stream" +msgstr "Пікірлер ағыны" + +#: templates/blog/list.html:174 +msgid "New problems" +msgstr "Жаңа есептер" + +#: templates/blog/list.html:191 +msgid "My open tickets" +msgstr "Менің ашық билеттерім" + +#: templates/blog/list.html:210 +msgid "New tickets" +msgstr "жаңа билеттер" + +#: templates/comments/edit-ajax.html:16 templates/comments/list.html:163 +#: templates/ticket/ticket.html:181 +msgid "Post!" +msgstr "Пост!" + +#: templates/comments/list.html:2 templates/user/prepare-data.html:98 +msgid "Comments" +msgstr "пікірлер" + +#: templates/comments/list.html:5 +msgid "There are no comments at the moment." +msgstr "Қазіргі уақытта ешқандай түсініктеме жоқ." + +#: templates/comments/list.html:12 +msgid "Comments are disabled on this page." +msgstr "Бұл беттегі пікірлер өшірілген." + +#: templates/comments/list.html:31 templates/comments/list.html:40 +msgid "Please log in to vote" +msgstr "Дауыс беру үшін жүйеге кіріңіз" + +#: templates/comments/list.html:60 +#, python-brace-format +msgid "commented on {time}" +msgstr "{time} түсініктеме" + +#: templates/comments/list.html:60 +#, python-brace-format +msgid "commented {time}" +msgstr "{time} түсініктемеде" + +#: templates/comments/list.html:71 +#, python-format +msgid "edit %(edits)s" +msgstr "өңдеу %(edits)s" + +#: templates/comments/list.html:73 templates/comments/media-js.html:77 +msgid "edited" +msgstr "өңделген" + +#: templates/comments/list.html:82 +msgid "Link" +msgstr "сілтеме" + +#: templates/comments/list.html:87 templates/comments/list.html:101 +msgid "Reply" +msgstr "Жауап беру" + +#: templates/comments/list.html:93 templates/comments/votes.html:1 +msgid "Votes" +msgstr "Дауыс беру" + +#: templates/comments/list.html:94 +msgid "Hide" +msgstr "Жасыру" + +#: templates/comments/list.html:119 +msgid "This comment is hidden due to too much negative feedback." +msgstr "Бұл түсініктеме тым көп теріс пікірлерге байланысты жасырылған." + +#: templates/comments/list.html:120 +msgid "Show it anyway." +msgstr "Мұны бәрібір көрсетіңіз." + +#: templates/comments/list.html:141 +msgid "New comment" +msgstr "Жаңа пікірлер" + +#: templates/comments/list.html:155 +msgid "Invalid comment body." +msgstr "Жарамсыз түсініктеме мәтіні." + +#: templates/comments/media-js.html:12 +msgid "Replying to comment" +msgstr "Түсініктемеге жауап беру" + +#: templates/comments/media-js.html:72 +#, python-brace-format +msgid "edit {edits}" +msgstr "өңдеу {edits}" + +#: templates/comments/media-js.html:75 +msgid "original" +msgstr "Түпнұсқа" + +#: templates/comments/media-js.html:101 +#, python-brace-format +msgid "Could not vote: {error}" +msgstr "Дауыс беру мүмкін болмады: {error}" + +#: templates/comments/media-js.html:137 +msgid "Are you sure you want to hide this comment?" +msgstr "Сіз бұл пікірді жасырғыңыз келетініне сенімдісіз бе?" + +#: templates/comments/media-js.html:145 +msgid "Could not hide comment." +msgstr "Түсініктемені жасыра алмады." + +#: templates/comments/media-js.html:180 +msgid "updated" +msgstr "Жаңартулар" + +#: templates/comments/media-js.html:182 +msgid "Failed to update comment body." +msgstr "Түсініктеме мәтінін жаңарту мүмкін болмады." + +#: templates/comments/media-js.html:185 +#, python-brace-format +msgid "Could not edit comment: {error}" +msgstr "Түсініктемені өңдеу мүмкін болмады: {error}" + +#: templates/comments/votes.html:5 +msgid "Voter" +msgstr "Дауыс беруші" + +#: templates/comments/votes.html:6 templates/user/user-problems.html:103 +msgid "Score" +msgstr "Нәтиже" + +#: templates/comments/votes.html:17 +msgid "No votes" +msgstr "Дауыстар жоқ" + +#: templates/common-content.html:32 templates/user/edit-profile.html:214 +msgid "Click to copy" +msgstr "Көшіру үшін басыңыз" + +#: templates/common-content.html:33 templates/user/edit-profile.html:215 +msgid "Copy" +msgstr "Көшіру" + +#: templates/common-content.html:44 templates/user/edit-profile.html:226 +msgid "Copied!" +msgstr "Көшірілді!" + +#: templates/contest/access_code.html:26 +msgid "Invalid access code." +msgstr "Кіру коды дұрыс емес." + +#: templates/contest/access_code.html:29 +msgid "Please enter your access code:" +msgstr "Кіру кодын енгізіңіз:" + +#: templates/contest/access_code.html:32 +msgid "Join Contest" +msgstr "Байқауға қосылыңыз" + +#: templates/contest/calendar.html:12 +msgid "Sunday" +msgstr "Жексенбі" + +#: templates/contest/calendar.html:13 +msgid "Monday" +msgstr "Дүйсенбі" + +#: templates/contest/calendar.html:14 +msgid "Tuesday" +msgstr "Сейсенбі" + +#: templates/contest/calendar.html:15 +msgid "Wednesday" +msgstr "Сәрсенбі" + +#: templates/contest/calendar.html:16 +msgid "Thursday" +msgstr "Бейсенбі" + +#: templates/contest/calendar.html:17 +msgid "Friday" +msgstr "Жұма" + +#: templates/contest/calendar.html:18 +msgid "Saturday" +msgstr "Сенбі" + +#: templates/contest/clone.html:37 +msgid "Enter a new key for the cloned contest:" +msgstr "Клондалған байқаудың жаңа кілтін енгізіңіз:" + +#: templates/contest/clone.html:40 templates/problem/clone.html:40 +msgid "Clone!" +msgstr "Клонд!" + +#: templates/contest/contest-list-tabs.html:7 +msgid "Prev" +msgstr "Алдыңғы" + +#: templates/contest/contest-list-tabs.html:10 +msgid "Today" +msgstr "Бүгін" + +#: templates/contest/contest-list-tabs.html:13 +msgid "Next" +msgstr "Келесі" + +#: templates/contest/contest-list-tabs.html:16 +msgid "Export" +msgstr "Экспорт" + +#: templates/contest/contest-list-tabs.html:22 +#: templates/problem/problem-list-tabs.html:5 +msgid "List" +msgstr "Бет" + +#: templates/contest/contest-list-tabs.html:23 +msgid "Calendar" +msgstr "Күнтізбе" + +#: templates/contest/contest-tabs.html:4 +msgid "Info" +msgstr "Мәліметтер" + +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 +msgid "Statistics" +msgstr "Статисткалар" + +#: templates/contest/contest-tabs.html:11 +msgid "Rankings" +msgstr "Рейтингтер" + +#: templates/contest/contest-tabs.html:16 +msgid "Hidden Rankings" +msgstr "Жасырын рейтингтер" + +#: templates/contest/contest-tabs.html:21 +msgid "MOSS" +msgstr "MOSS" + +#: templates/contest/contest-tabs.html:26 +msgid "Clone" +msgstr "Клон" + +#: templates/contest/contest-tabs.html:38 +#: templates/contest/contest-tabs.html:58 +msgid "Leave contest" +msgstr "Байқаудан шығу" + +#: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 +msgid "Virtual join" +msgstr "Виртуалды байланыс" + +#: templates/contest/contest-tabs.html:56 +msgid "Stop spectating" +msgstr "Бақылауды тоқтатыңыз" + +#: templates/contest/contest-tabs.html:67 +#: templates/contest/contest-tabs.html:81 +msgid "Join contest" +msgstr "Байқауға қосылыңыз" + +#: templates/contest/contest-tabs.html:73 +msgid "Spectate contest" +msgstr "Байқауды бақылаңыз" + +#: templates/contest/contest-tabs.html:80 templates/contest/list.html:137 +msgid "You cannot join this contest." +msgstr " бұл байқауға қатыса алмайсыз." + +#: templates/contest/contest-tabs.html:90 +msgid "Log in to participate" +msgstr "Қатысу үшін жүйеге кіріңіз" + +#: templates/contest/contest.html:33 +#, python-format +msgid "Spectating, contest ends in %(countdown)s." +msgstr "Қатысушылар, байқау %(countdown)s аяқталады." + +#: templates/contest/contest.html:35 +#, python-format +msgid "Participating virtually, %(countdown)s remaining." +msgstr "Виртуальды қатысқандар, %(countdown)s қалады." + +#: templates/contest/contest.html:37 +msgid "Participating virtually." +msgstr "Виртуальды қатысу." + +#: templates/contest/contest.html:43 +msgid "Contest is over." +msgstr "Байқау аяқталды." + +#: templates/contest/contest.html:47 +#, python-format +msgid "Your time is up! Contest ends in %(countdown)s." +msgstr "Сіздің уақытыңыз өтті! Байқау %(countdown)s аяқталды." + +#: templates/contest/contest.html:49 +#, python-format +msgid "You have %(countdown)s remaining." +msgstr "Сізде %(countdown)s қалды." + +#: templates/contest/contest.html:52 +#, python-format +msgid "Contest ends in %(countdown)s." +msgstr "Байқау %(countdown)s аяқталды." + +#: templates/contest/contest.html:58 templates/contest/contest.html:60 +msgid "F j, Y, G:i T" +msgstr "F j, Y, G:i T" + +#: templates/contest/contest.html:62 +#, python-format +msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" +msgstr "%(time_limit)s терезе арасында %(start_time)s және %(end_time)s" + +#: templates/contest/contest.html:65 +#, python-format +msgid "%(length)s long starting on %(start_time)s" +msgstr "%(length)s ұзақ басталу %(start_time)s" + +#: templates/contest/contest.html:75 +#, python-format +msgid "The author of this contest is %(link_authors)s." +msgid_plural "The authors of this contest are %(link_authors)s." +msgstr[0] "Бұл байқау авторлары %(link_authors)s." +msgstr[1] "Бұл байқау авторлары %(link_authors)s." + +#: templates/contest/contest.html:86 +#, python-format +msgid "Special thanks to %(link_testers)s for testing and feedback on the problems." +msgid_plural "Special thanks to %(link_testers)s for testing and feedback on the problems." +msgstr[0] "Тестілеу және есептер туралы пікірлер үшін %(link_testers)s ерекше алғыс." +msgstr[1] "Тестілеу және есептер туралы пікірлер үшін %(link_testers)s ерекше алғыс." + +#: templates/contest/contest.html:98 +#, python-format +msgid "This contest will be **rated** for **all** participants who have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." +msgstr "Бұл байқау **%(rating_floor)d** және **%(rating_ceiling)d**, қоса алғанда **барлық** қатысушылар үшін **бағаланатын** болады." + +#: templates/contest/contest.html:100 +#, python-format +msgid "This contest will be **rated** for **all** participants who have a rating of at least **%(rating_floor)d**." +msgstr "Бұл байқау **%(rating_floor)d** рейтингі кем емес **барлық** қатысушылар үшін **бағаланатын** болады." + +#: templates/contest/contest.html:102 +#, python-format +msgid "This contest will be **rated** for **all** participants who have a rating of at most **%(rating_ceiling)d**." +msgstr "Бұл байқау **%(rating_ceiling)d** рейтингі кем емес **барлық** қатысушылар үшін **бағаланатын** болады." + +#: templates/contest/contest.html:104 +msgid "This contest will be **rated** for **all** participants." +msgstr "Бұл байқауда **барлық** қатысушылар **бағаланатын** болады." + +#: templates/contest/contest.html:108 +#, python-format +msgid "This contest will be **rated** for participants who submit at least once and have a rating between **%(rating_floor)d** and **%(rating_ceiling)d**, inclusive." +msgstr "Бұл байқау **%(rating_floor)d** және **%(rating_ceiling)d**, қоса алғанда қатысушылар үшін **бағаланатын** болады." + +#: templates/contest/contest.html:110 +#, python-format +msgid "This contest will be **rated** for participants who submit at least once and have a rating of at least **%(rating_floor)d**." +msgstr "Бұл байқау **%(rating_floor)d** рейтингі кем емес қатысушылар үшін **бағаланатын** болады." + +#: templates/contest/contest.html:112 +#, python-format +msgid "This contest will be **rated** for participants who submit at least once and have a rating of at most **%(rating_ceiling)d**." +msgstr "Бұл байқау **%(rating_ceiling)d** рейтингі кем емес қатысушылар үшін **бағаланатын** болады." + +#: templates/contest/contest.html:114 +msgid "This contest will be **rated** for participants who submit at least once." +msgstr "Бұл байқау кем дегенде бір рет өтінім берген қатысушылар үшін ** бағаланады**." + +#: templates/contest/contest.html:118 +msgid "This contest will **not** be rated." +msgstr "Бұл байқау ** бағаланбайды**." + +#: templates/contest/contest.html:123 +#, python-format +msgid "There is **%(count)s** problem in this contest." +msgid_plural "There are **%(count)s** problems in this contest." +msgstr[0] "Бұл байқауда **%(count)s** есеп бар." +msgstr[1] "Бұл байқауда **%(count)s** есептері бар." + +#: templates/contest/contest.html:132 +msgid "**Partial scoring is enabled** for some or all of these problems." +msgstr "Осы есептердің кейбірін немесе барлығын шешу үшін **ішінара бағалау кіреді**." + +#: templates/contest/contest.html:134 +msgid "This contest **will not use partial scoring**." +msgstr "Бұл байқауда **ішінара ұпай санау қолданылмайды**." + +#: templates/contest/contest.html:139 +msgid "The pretest system **will be used** for some or all of these problems." +msgstr "Осы мәселелердің кейбірін немесе барлығын шешу үшін алдын ала тестілеу жүйесі **пайдаланылатын болады**." + +#: templates/contest/contest.html:141 +msgid "The pretest system **will not be used** for this contest." +msgstr "Бұл байқауда алдын ала тестілеу жүйесі **пайдаланылмайтын болады**." + +#: templates/contest/contest.html:146 +msgid "Some or all of these problems **have a submission limit**." +msgstr "Осы мәселелердің кейбірінде немесе барлығында **тапсырылым шегі бар**." + +#: templates/contest/contest.html:148 +msgid "There is **no submission limit** for any of these problems." +msgstr "Осы есептердің барлығы үшін **тапсырылымға шектеу жоқ**." + +#: templates/contest/contest.html:154 +#, python-format +msgid "The contest format is **%(format)s**." +msgstr "Бұл байқау форматы **%(format)s**." + +#: templates/contest/contest.html:163 +msgid "The scoreboard will be **visible** for the duration of the contest." +msgstr "Табло бүкіл байқау барысында **көрінетін** болады." + +#: templates/contest/contest.html:165 +msgid "The scoreboard will be **hidden** until your window is over." +msgstr "Терезе аяқталғанға дейін табло **жасырын** болады." + +#: templates/contest/contest.html:167 +msgid "The scoreboard will be **hidden** for the entire duration of the contest." +msgstr "Табло байқауды өткізудің барлық уақытында **жасырын** болады." + +#: templates/contest/contest.html:169 +msgid "The scoreboard will be **hidden**, even after the contest is over." +msgstr "Байқау аяқталғаннан кейін де табло **жасырын** болады." + +#: templates/contest/contest.html:174 +msgid "An **access code is required** to join the contest." +msgstr "Байқауға қатысу үшін **кіру коды** қажет. " + +#: templates/contest/contest.html:197 +msgid "AC Rate" +msgstr "AC рейтингісі" + +#: templates/contest/contest.html:198 templates/contest/list.html:152 +#: templates/contest/list.html:194 templates/contest/list.html:271 +#: templates/problem/list.html:194 templates/problem/list.html:226 +msgid "Users" +msgstr "Қолданушылар" + +#: templates/contest/contest.html:200 +msgid "Editorials" +msgstr "Редакциялық мақалалар" + +#: templates/contest/contest.html:226 templates/problem/list.html:220 +msgid "Editorial" +msgstr "Талдаулар" + +#: templates/contest/list.html:17 templates/contest/media-js.html:9 +#: templates/contest/media-js.html:15 +msgid "Are you sure you want to join?" +msgstr "Сіз қосылғыңыз келетініне сенімдісіз бе?" + +#: templates/contest/list.html:18 +msgid "Joining a contest for the first time starts your timer, after which it becomes unstoppable." +msgstr "Байқауға бірінші рет қатысқан кезде сіздің таймеріңіз іске қосылады, содан кейін оны тоқтату мүмкін болмайды." + +#: templates/contest/list.html:70 +msgid "private" +msgstr "жеке" + +#: templates/contest/list.html:75 +msgid "rated" +msgstr "номиналды" + +#: templates/contest/list.html:102 +#, python-format +msgid "%(time_limit)s window" +msgstr "терезе %(time_limit)s" + +#: templates/contest/list.html:105 +#, python-format +msgid "%(duration)s long" +msgstr "%(duration)s ұзақтығы" + +#: templates/contest/list.html:125 templates/contest/list.html:137 +msgid "Join" +msgstr "Қосылыңыз" + +#: templates/contest/list.html:131 +msgid "Spectate" +msgstr "Бақылау" + +#: 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:168 +#, python-format +msgid "Window ends in %(countdown)s" +msgstr "Терезе %(countdown)s аяқталды" + +#: templates/contest/list.html:170 templates/contest/list.html:209 +#, python-format +msgid "Ends in %(countdown)s" +msgstr "%(countdown)s аяқталды" + +#: templates/contest/list.html:243 +#, python-format +msgid "Starting in %(countdown)s" +msgstr "%(countdown)s басталды" + +#: templates/contest/list.html:254 +msgid "There are no scheduled contests at this time." +msgstr "Қазіргі уақытта жоспарланған байқаулар өткізілмейді." + +#: templates/contest/list.html:260 +msgid "Past contests" +msgstr "Өткен байқаулар" + +#: templates/contest/media-js.html:4 +msgid "Are you sure you want to leave?" +msgstr "Сіз кеткіңіз келетініне сенімдісіз бе?" + +#: templates/contest/media-js.html:5 +msgid "You cannot come back to a virtual participation. You will have to start a new one." +msgstr "Сіз виртуалды қатысуға орала алмайсыз. Сізге жаңасын бастау керек." + +#: templates/contest/media-js.html:10 +msgid "Joining a contest starts your timer, after which it becomes unstoppable." +msgstr "Байқауға қосылу сіздің таймеріңізді іске қосады, содан кейін оны тоқтату мүмкін болмайды." + +#: templates/contest/media-js.html:16 +#, python-format +msgid "Joining this contest will leave %(contest)s." +msgstr "Осы байқауға қосылу арқылы сіз %(contest)s шығатын боласыз." + +#: templates/contest/moss.html:28 +msgid "Are you sure you want to MOSS the contest?" +msgstr "Сіз байқауды MOSS өткізіп жібергіңіз келетініне сенімдісіз бе?" + +#: templates/contest/moss.html:31 +msgid "Are you sure you want to delete the MOSS results?" +msgstr "Сіз Moss нәтижелерін жойғыңыз келетініне сенімдісіз бе?" + +#: templates/contest/moss.html:56 +#, python-format +msgid "%(count)s submission" +msgid_plural "%(count)s submissions" +msgstr[0] "%(count)s тапсырылымы" +msgstr[1] "%(count)s тапсырылымдары" + +#: templates/contest/moss.html:62 +msgid "No submissions" +msgstr "тапсырылымдар жоқ" + +#: templates/contest/moss.html:76 +msgid "Re-MOSS contest" +msgstr "Re-MOSS байқауы" + +#: templates/contest/moss.html:84 +msgid "Delete MOSS results" +msgstr "MOSS нәтижесін өшіру" + +#: templates/contest/private.html:5 +msgid "This contest is private to specific users." +msgstr "Бұл байқау белгілі бір пайдаланушылар үшін жабық." + +#: templates/contest/private.html:11 +msgid "Additionally, only the following organizations may access this contest:" +msgstr "Сонымен қатар, бұл байқауға келесі ұйымдар ғана қол жеткізе алады:" + +#: templates/contest/private.html:13 +msgid "Only the following organizations may access this contest:" +msgstr "Бұл байқауға тек келесі ұйымдар қатыса алады:" + +#: templates/contest/private.html:24 +msgid "Additionally, only the following classes may access this contest:" +msgstr "Сонымен қатар, бұл байқауға келесі сыныптар ғана қол жеткізе алады:" + +#: templates/contest/private.html:26 +msgid "Only the following classes may access this contest:" +msgstr "Бұл байқауға тек келесі сыныптар қатыса алады:" + +#: templates/contest/private.html:28 +msgid "Alternatively, the following classes may access this contest:" +msgstr "Сонымен қатар, келесі сабақтар осы байқауға қол жеткізе алады:" + +#: templates/contest/ranking-table.html:7 +msgid "Organization" +msgstr "Ұйым" + +#: templates/contest/ranking-table.html:27 +#, python-brace-format +msgid "Started on {time}" +msgstr "{time} басталады" + +#: templates/contest/ranking-table.html:27 +#, python-brace-format +msgid "Started {time}" +msgstr "{time} басталады" + +#: templates/contest/ranking-table.html:32 +msgid "Participation ended." +msgstr "Қатысу аяқталды." + +#: templates/contest/ranking-table.html:42 +msgid "Un-Disqualify" +msgstr "Дисквалификациядан бас тарту" + +#: templates/contest/ranking-table.html:45 +msgid "Disqualify" +msgstr "Дисквалификациялау" + +#: templates/contest/ranking.html:46 +msgid "Are you sure you want to disqualify this participation?" +msgstr "Сіз бұл қатысудан бас тартқыңыз келетініне сенімдісіз бе?" + +#: templates/contest/ranking.html:51 +msgid "Are you sure you want to un-disqualify this participation?" +msgstr "Сіз бұл мүшені дисквалификациялаудан бас тартқыңыз келетініне сенімдісіз бе?" + +#: templates/contest/ranking.html:124 +msgid "View user participation" +msgstr "Пайдаланушылардың қатысуын қарау" + +#: templates/contest/ranking.html:128 +msgid "Show organizations" +msgstr "Ұйымдарды көрсету" + +#: templates/contest/stats.html:38 +msgid "Problem Status Distribution" +msgstr "Есептің Статусын Бөлу" + +#: templates/contest/stats.html:43 +msgid "Problem AC Rate" +msgstr "AC рейтинг есебі" + +#: templates/contest/stats.html:48 templates/stats/language.html:16 +msgid "Submissions by Language" +msgstr " тілдер бойынша тапсырылымдар" + +#: templates/contest/stats.html:54 templates/stats/language.html:26 +msgid "Language AC Rate" +msgstr "AC рейтинг тілі" + +#: templates/license.html:12 +msgid "Visit source" +msgstr "Дереккөзге кіріңіз" + +#: templates/newsletter/common.html:6 +#: templates/newsletter/subscription_unsubscribe_activated.html:3 +#: templates/newsletter/subscription_unsubscribe_activated.html:6 +#: templates/newsletter/subscription_update_activated.html:3 +#: templates/newsletter/subscription_update_activated.html:6 +msgid "Newsletter" +msgstr "Ақпараттық бюллетень" + +#: templates/newsletter/subscription_unsubscribe_activated.html:3 +#: templates/newsletter/subscription_unsubscribe_activated.html:6 +#: templates/newsletter/subscription_update_activated.html:3 +#: templates/newsletter/subscription_update_activated.html:6 +msgid "activate" +msgstr "іске қосу" + +#: templates/newsletter/subscription_unsubscribe_activated.html:8 +msgid "You have successfully been unsubscribed." +msgstr "Сіз ақпараттық бюллетеннен сәтті бас тарттыңыз." + +#: templates/newsletter/subscription_unsubscribe_email_sent.html:3 +#: templates/newsletter/subscription_unsubscribe_email_sent.html:6 +#: templates/newsletter/subscription_unsubscribe_user.html:3 +#: templates/newsletter/subscription_unsubscribe_user.html:6 +msgid "Newsletter unsubscribe" +msgstr "Ақпараттық бюллетенге жазылудан бас тарту" + +#: templates/newsletter/subscription_unsubscribe_email_sent.html:8 +msgid "Your unsubscription request has successfully been received. An email has been sent to you with a link you need to follow in order to confirm your unsubscription." +msgstr "Сіздің бас тарту туралы өтінішіңіз сәтті қабылданды. Сізге жазылымнан бас тартуды растау үшін өту керек сілтемесі бар электрондық пошта жіберілді." + +#: templates/newsletter/subscription_unsubscribe_user.html:17 +msgid "Do you want to unsubscribe from this newsletter?" +msgstr "Сіз бұл ақпараттық бюллетеньге жазылудан бас тартқыңыз келе ме?" + +#: templates/newsletter/subscription_unsubscribe_user.html:21 +msgid "Unsubscribe" +msgstr "Жазылымнан бас тарту" + +#: templates/newsletter/subscription_update.html:3 +#: templates/newsletter/subscription_update.html:6 +#: templates/newsletter/subscription_update_email_sent.html:3 +#: templates/newsletter/subscription_update_email_sent.html:6 +msgid "Newsletter update" +msgstr "Ақпараттық бюллетеньді жаңарту" + +#: templates/newsletter/subscription_update.html:9 +msgid "Due to a technical error we were not able to submit your confirmation email. This could be because your email address is invalid." +msgstr "Техникалық қатеге байланысты біз сіздің растауыңызды электрондық поштаңызға жібере алмадық. Бұл сіздің электрондық пошта мекенжайыңыздың дұрыс болуына байланысты болуы мүмкін." + +#: templates/newsletter/subscription_update.html:14 +msgid "Update subscription" +msgstr "Жазылымды жаңарту" + +#: templates/newsletter/subscription_update_activated.html:8 +msgid "Your subscription has successfully been updated." +msgstr "Сіздің тапсырылымыңыз сәтті жаңартылды." + +#: templates/newsletter/subscription_update_email_sent.html:8 +msgid "Your update request was successfully received and an activation email has been sent to you. In that email you will find a link which you need to follow in order to update your subscription." +msgstr "Сіздің жаңарту сұрауыңыз сәтті қабылданды және сізге активациямен электронды хат жіберілді. Бұл электрондық хатта сіз тапсырылымыңызды жаңарту үшін керек сілтемені таба аласыз." + +#: templates/organization/edit.html:11 +#: templates/organization/requests/pending.html:34 +#: templates/ticket/edit-notes.html:4 +msgid "Update" +msgstr "Жаңартулар" + +#: templates/organization/home.html:28 +msgid "Are you sure you want to leave this organization?" +msgstr "Сіз бұл ұйымнан кеткіңіз келетініне сенімдісіз бе?" + +#: templates/organization/home.html:30 +msgid "You will have to rejoin to show up on the organization leaderboard." +msgstr "Ұйымның көшбасшылар тақтасында пайда болу үшін сізге қосылу керек." + +#: templates/organization/home.html:32 +msgid "You will have to request membership in order to join again." +msgstr "Қайта қосылу үшін мүшелікті сұрау керек." + +#: templates/organization/home.html:45 +msgid "Leave organization" +msgstr "Ұйымға шығу" + +#: templates/organization/home.html:50 +msgid "Join organization" +msgstr "Ұйымға қосылу" + +#: templates/organization/home.html:54 +msgid "Request membership" +msgstr "Мүшелікті сұрау" + +#: templates/organization/home.html:60 +msgid "Edit organization" +msgstr "Ұйымды өңдеу" + +#: templates/organization/home.html:65 +msgid "View requests" +msgstr "Сұрап көру" + +#: templates/organization/home.html:71 +msgid "Admin organization" +msgstr "Әкімшілік ұйым" + +#: templates/organization/home.html:76 +msgid "View members" +msgstr "Мүшелерді қарау" + +#: templates/organization/home.html:88 +msgid "Class" +msgstr "Сынып" + +#: templates/organization/home.html:97 +msgid "Joined" +msgstr "Қосылды" + +#: templates/organization/home.html:99 +msgid "Request to join" +msgstr "Қосылу туралы өтініш" + +#: templates/organization/list.html:22 templates/status/language-list.html:35 +msgid "Name" +msgstr "Аты" + +#: templates/organization/list.html:23 +msgid "Members" +msgstr "Мүшелер" + +#: templates/organization/new.html:10 templates/ticket/new.html:20 +msgid "Create" +msgstr "Жасау" + +#: templates/organization/requests/detail.html:13 +msgid "User:" +msgstr "Қолданушы:" + +#: templates/organization/requests/detail.html:17 +msgid "Organization:" +msgstr "Ұйым:" + +#: templates/organization/requests/detail.html:25 +msgid "Time:" +msgstr "Уақыт:" + +#: templates/organization/requests/detail.html:29 +msgid "Reason:" +msgstr "Себеп:" + +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Қолданушы" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Уақыт" + +#: templates/organization/requests/log.html:11 +#: templates/organization/requests/pending.html:14 +msgid "State" +msgstr "Аймақ" + +#: templates/organization/requests/log.html:12 +#: templates/organization/requests/pending.html:15 +msgid "Reason" +msgstr "Себеп" + +#: templates/organization/requests/log.html:28 +#: templates/organization/requests/pending.html:37 +msgid "There are no requests to approve." +msgstr "Бекіту туралы өтініштер жоқ." + +#: templates/organization/requests/pending.html:17 +#: templates/problem/data.html:398 +msgid "Delete?" +msgstr "Жою керек пе?" + +#: templates/organization/requests/request.html:24 +msgid "Select your class:" +msgstr "Сыныпты таңдаңыз:" + +#: templates/organization/requests/request.html:27 +msgid "Your reason for joining:" +msgstr "Сіздің қосылу себебіңіз:" + +#: templates/organization/requests/request.html:29 +msgid "Request!" +msgstr "Өтініш!" + +#: templates/organization/requests/tabs.html:7 +msgid "Log" +msgstr "кіру" + +#: templates/organization/users-table.html:15 +msgid "Kick" +msgstr "Шығу" + +#: templates/organization/users.html:29 +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:71 +msgid "precision (decimal digits)" +msgstr "дәлдік (ондық бөлшектер)" + +#: templates/problem/data.html:345 +msgid "View YAML" +msgstr "YAML көру" + +#: templates/problem/data.html:361 +msgid "Show columns:" +msgstr "бағанды ​​көрсету:" + +#: templates/problem/data.html:364 templates/problem/data.html:392 +msgid "Output prefix" +msgstr "Шығу префиксі" + +#: templates/problem/data.html:368 templates/problem/data.html:393 +msgid "Output limit" +msgstr "Шығу шегі" + +#: templates/problem/data.html:372 templates/problem/data.html:394 +msgid "Checker" +msgstr "бақылаушы" + +#: templates/problem/data.html:376 templates/problem/data.html:395 +msgid "Generator args" +msgstr "Генератор аргументтері" + +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 +msgid "Type" +msgstr "Түр" + +#: templates/problem/data.html:388 +msgid "Input file" +msgstr "Кіріс файлы" + +#: templates/problem/data.html:389 +msgid "Output file" +msgstr "Шығу файлы" + +#: templates/problem/data.html:391 +msgid "Pretest?" +msgstr "Алдын ала тест?" + +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 +msgid "Submit!" +msgstr "Ұсыну!" + +#: templates/problem/data.html:451 +msgid "Add new case" +msgstr "Жаңа регистрді қосыңыз" + +#: templates/problem/data.html:453 templates/problem/data.html:454 +msgid "Save" +msgstr "Сақтау" + +#: templates/problem/editorial.html:23 +msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." +msgstr "Бұл редакциялық мақаланы **тек** ұмытып қалғанда және **одан кодты көшірмеңіз немесе қоймаңыз** кезінде пайдалануды ұмытпаңыз. Есептің авторы мен редакторына құрметпен қараңыз." + +#: templates/problem/editorial.html:24 +msgid "Submitting an official solution before solving the problem yourself is a bannable offence." +msgstr "Есепті өзіңіз шешпес бұрын ресми шешім қабылдау тыйым салынатын құқық бұзушылық болып табылады." + +#: templates/problem/editorial.html:30 templates/problem/problem.html:230 +msgid "Author:" +msgid_plural "Authors:" +msgstr[0] "Автор:" +msgstr[1] "Авторлар:" + +#: templates/problem/list.html:49 +msgid "Filter by type..." +msgstr "Типі бойынша фильтр..." + +#: templates/problem/list.html:167 +msgid "Hot problems" +msgstr "Өткір есептер" + +#: templates/problem/list.html:189 templates/problem/list.html:207 +#: templates/problem/search-form.html:35 templates/user/user-problems.html:59 +msgid "Category" +msgstr "Санаты" + +#: templates/problem/list.html:191 templates/problem/list.html:211 +msgid "Types" +msgstr "Түр" + +#: templates/problem/list.html:218 +#, python-format +msgid "AC %%" +msgstr "AC %%" + +#: templates/problem/manage_submission.html:56 +msgid "Leave empty to not filter by language" +msgstr "Тіл бойынша сүзгіден өтпеу үшін бос қалдырыңыз" + +#: templates/problem/manage_submission.html:62 +msgid "Leave empty to not filter by result" +msgstr "Нәтиже бойынша сүзгіден өтпеу үшін бос қалдырыңыз" + +#: templates/problem/manage_submission.html:81 +msgid "Need valid values for both start and end IDs." +msgstr "Бастапқы және соңғы ID үшін жарамды мәндер қажет." + +#: templates/problem/manage_submission.html:84 +msgid "End ID must be after start ID." +msgstr "Соңғы ID бастапқы ID кейін болуы керек." + +#: templates/problem/manage_submission.html:92 +#, python-brace-format +msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" +msgstr "Сіз тапсырылымдарды {count} қайта қабылдамайсыз. Сіз мұны қалайтыныңызға сенімдісіз бе?" + +#: templates/problem/manage_submission.html:98 +msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" +msgstr "Сіз ұсынылған бірнеше тапсырылымдарды күтесіз. Сіз мұны қалайтыныңызға сенімдісіз бе?" + +#: templates/problem/manage_submission.html:117 +msgid "Rejudge Submissions" +msgstr "Тапсырылымды қайта қарау" + +#: templates/problem/manage_submission.html:122 +msgid "Filter by ID:" +msgstr "ID бойынша сүзу:" + +#: templates/problem/manage_submission.html:125 +msgid "Starting ID:" +msgstr "ID бастау:" + +#: templates/problem/manage_submission.html:129 +msgid "Ending ID:" +msgstr "ID еңгізу:" + +#: templates/problem/manage_submission.html:133 +msgid "This range includes both endpoints." +msgstr "Бұл диапазон екі соңғы нүктені де қамтиды." + +#: templates/problem/manage_submission.html:136 +msgid "Filter by language:" +msgstr "Тілдер бойынша сүзгілеу:" + +#: templates/problem/manage_submission.html:152 +msgid "Rejudge selected submissions" +msgstr "Таңдалған тапсырылымдарға қайта тексерту жасау" + +#: templates/problem/manage_submission.html:159 +msgid "Rescore Everything" +msgstr "Барлығын қалпына келтіріңіз" + +#: templates/problem/manage_submission.html:160 +#, python-format +msgid "This will rescore %(count)s submission." +msgid_plural "This will rescore %(count)s submissions." +msgstr[0] "Бұл жіберілген тапсырылым %(count)s қайта есепке алуға әкеледі." +msgstr[1] "Бұл жіберілген тапсырылымдар %(count)s қайта есепке алуға әкеледі." + +#: templates/problem/manage_submission.html:168 +#, python-format +msgid "Are you sure you want to rescore %(count)s submission?" +msgid_plural "Are you sure you want to rescore %(count)s submissions?" +msgstr[0] "Сіз жіберілген тапсырылым %(count)s қалпына келтіргіңіз келетініне сенімдісіз бе?" +msgstr[1] "Сіз жіберілген тапсырылымдар %(count)s қалпына келтіргіңіз келетініне сенімдісіз бе?" + +#: templates/problem/manage_submission.html:173 +msgid "Rescore all submissions" +msgstr "Барлық жіберілген тапсырылымдарды қалпына келтіріңіз" + +#: templates/problem/problem.html:96 +msgid "View as PDF" +msgstr "PDF форматында қарау" + +#: templates/problem/problem.html:106 templates/problem/problem.html:116 +#: templates/problem/problem.html:121 +msgid "Submit solution" +msgstr "Шешім жіберу" + +#: templates/problem/problem.html:109 +#, python-format +msgid "%(counter)s submission left" +msgid_plural "%(counter)s submissions left" +msgstr[0] "тапсырылым %(counter)s қалды" +msgstr[1] "тапсырылымдар %(counter)s қалды" + +#: templates/problem/problem.html:117 +msgid "0 submissions left" +msgstr "0 тапсырылым қалды" + +#: templates/problem/problem.html:129 +msgid "My submissions" +msgstr "Менің тапсырылымдарым" + +#: templates/problem/problem.html:133 +msgid "Best submissions" +msgstr "Жақсы тапсырылымдар" + +#: templates/problem/problem.html:140 +msgid "Vote on problem points" +msgstr "Есеп ұпайларына дауыс беріңіз" + +#: templates/problem/problem.html:142 +#, python-format +msgid "Edit points vote (%(points)d)" +msgstr "Дауыс беру ұпайларын өңдеу (%(points)d)" + +#: templates/problem/problem.html:146 templates/problem/vote-stats-ajax.html:3 +msgid "Voting statistics" +msgstr "Дауыс беру статистикасы" + +#: templates/problem/problem.html:151 +msgid "Read editorial" +msgstr "Редакциялық мақаланы оқыңыз" + +#: templates/problem/problem.html:156 +msgid "Manage tickets" +msgstr "Manage tickets" + +#: templates/problem/problem.html:160 +msgid "Edit problem" +msgstr "Есепті өңдеу" + +#: templates/problem/problem.html:162 +msgid "Edit test data" +msgstr "Сынақ деректерін өңдеу" + +#: templates/problem/problem.html:167 +msgid "My tickets" +msgstr "Менің билеттерім" + +#: templates/problem/problem.html:175 +msgid "Manage submissions" +msgstr "тапсырылымдарды жіберу" + +#: templates/problem/problem.html:188 templates/problem/vote-ajax.html:20 +msgid "Points:" +msgstr "Нүктелер:" + +#: templates/problem/problem.html:191 templates/problem/problem.html:193 +msgid "(partial)" +msgstr "(ішінара)" + +#: templates/problem/problem.html:198 templates/problem/raw.html:61 +msgid "Time limit:" +msgstr "Уақыт шектеуі:" + +#: templates/problem/problem.html:210 templates/problem/raw.html:70 +msgid "Memory limit:" +msgstr "жадты шектеу:" + +#: templates/problem/problem.html:246 +msgid "Problem type" +msgid_plural "Problem types" +msgstr[0] "Есеп түрі" +msgstr[1] "Есеп түрлері" + +#: templates/problem/problem.html:259 +msgid "Allowed languages" +msgstr "рұқсат етілген тілдер" + +#: templates/problem/problem.html:267 +#, python-format +msgid "No %(lang)s judge online" +msgstr "%(lang)s онлайн сот жоқ" + +#: templates/problem/problem.html:278 +msgid "Judge:" +msgid_plural "Judges:" +msgstr[0] "Сот:" +msgstr[1] "Судьялар:" + +#: templates/problem/problem.html:295 +msgid "none available" +msgstr "жоқ" + +#: templates/problem/problem.html:320 +msgid "Request clarification" +msgstr "Түсіндіруді сұрау" + +#: templates/problem/problem.html:322 +msgid "Report an issue" +msgstr "Мәселе туралы хабарлау" + +#: templates/problem/search-form.html:2 +msgid "Problem search" +msgstr "Есепті іздеу" + +#: templates/problem/search-form.html:8 +msgid "Search problems..." +msgstr "Есептерді іздеу..." + +#: templates/problem/search-form.html:14 +msgid "Full text search" +msgstr "Толық мәтінді іздеу" + +#: templates/problem/search-form.html:21 +msgid "Hide solved problems" +msgstr "Шешілген есептерді жасыру" + +#: templates/problem/search-form.html:27 +msgid "Has editorial" +msgstr "Редакциялық" + +#: templates/problem/search-form.html:32 +msgid "Show problem types" +msgstr "Есеп түрлерін көрсету" + +#: templates/problem/search-form.html:38 templates/problem/search-form.html:40 +#: templates/submission/submission-list-tabs.html:4 +msgid "All" +msgstr "барлығы" + +#: templates/problem/search-form.html:51 +msgid "Problem types" +msgstr "Есеп түрлері" + +#: templates/problem/search-form.html:62 +msgid "Point range" +msgstr "Нүктелер ауқымы" + +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 +msgid "Go" +msgstr "Өту" + +#: templates/problem/search-form.html:69 +msgid "Random" +msgstr "Кездейсоқ" + +#: templates/problem/submission-diff.html:62 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 +msgid "ID" +msgstr "ID" + +#: templates/problem/submission-diff.html:64 +msgid "Result" +msgstr "Нәтиже" + +#: templates/problem/submission-diff.html:66 +msgid "Date" +msgstr "Күні" + +#: templates/problem/submit.html:118 +msgid "Your source code must contain at most 65536 characters." +msgstr "Сіздің бастапқы кодыңызда 65536 таңбадан аспауы керек." + +#: templates/problem/submit.html:138 +msgid "Warning!" +msgstr "Ескерту!" + +#: templates/problem/submit.html:139 +#, python-format +msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." +msgstr "Сіздің әдепкі тіліңіз, %(language)s, бұл есепті шешу үшін қол жетімді емес және таңдалған." + +#: templates/problem/submit.html:147 +#, python-format +msgid "You have %(left)s submission left" +msgid_plural "You have %(left)s submissions left" +msgstr[0] "Сізде %(left)s тапсырылым қалды" +msgstr[1] "Сізде %(left)s тапсырылымдар қалды" + +#: templates/problem/submit.html:152 +msgid "You have 0 submissions left" +msgstr "Сізде 0 тапсырылым қалды" + +#: templates/problem/submit.html:186 +msgid "No judge is available for this problem." +msgstr "Бұл есепті бірде-бір судья шеше алмайды." + +#: templates/problem/vote-ajax.html:4 +msgid "Change vote" +msgstr "Дауыс беруді өзгерту" + +#: templates/problem/vote-ajax.html:7 +#, python-format +msgid "Last voted on %(date)s" +msgstr "%(date)s бойынша соңғы дауыс беру" + +#: templates/problem/vote-ajax.html:11 +msgid "Cast vote" +msgstr "Дауыс беріңіз" + +#: templates/problem/vote-ajax.html:25 +msgid "Justification:" +msgstr "Негіздеме:" + +#: templates/problem/vote-ajax.html:27 +msgid "A short justification for your vote to this problem's point value (optional)." +msgstr "Бұл есепті баллдық бағалау бойынша дауыс берудің қысқаша негіздемесі (міндетті емес)." + +#: templates/problem/vote-ajax.html:33 +msgid "Vote!" +msgstr "Дауыс беріңіз!" + +#: templates/problem/vote-ajax.html:35 +msgid "Delete vote" +msgstr "Дауыс беруді болдырмау" + +#: templates/problem/vote-stats-ajax.html:7 +msgid "No votes available!" +msgstr "Дауыстар жоқ!" + +#: templates/problem/vote-stats-ajax.html:16 +#, python-format +msgid "Median vote: %(val)s" +msgstr "орташа дауыс: %(val)s" + +#: templates/problem/vote-stats-ajax.html:17 +#, python-format +msgid "Mean vote: %(val)s" +msgstr "Жасырын дауыс беру: %(val)s" + +#: templates/problem/vote-stats-ajax.html:18 +#, python-format +msgid "Number of votes: %(val)d" +msgstr "Дауыс саны: %(val)d" + +#: templates/registration/activate.html:3 +#, python-format +msgid "%(key)s is an invalid activation key." +msgstr "%(key)s жарамсыз белсендіру кілті болып табылады." + +#: templates/registration/activation_complete.html:3 +msgid "Your account has been successfully activated." +msgstr "Сіздің есептік жазбаңыз сәтті іске қосылды." + +#: templates/registration/activation_email.html:6 +#, python-format +msgid "Thanks for registering on the %(site_name)s! We're glad to have you." +msgstr "%(site_name)s тіркелгеніңіз үшін рахмет! Бізбен болғаныңызға қуаныштымыз." + +#: templates/registration/activation_email.html:8 +#, python-format +msgid "The last step is activating your account. Please activate your %(site_name)s account in the next %(count)s day." +msgid_plural "The last step is activating your account. Please activate your %(site_name)s account in the next %(count)s days." +msgstr[0] "Соңғы қадам-есептік жазбаңызды белсендіру. Келесі күні %(count)s жазбаңызды %(site_name)s белсендіріңіз." +msgstr[1] "Соңғы қадам-есептік жазбаңызды белсендіру. Келесі күндері %(count)s жазбаңызды %(site_name)s белсендіріңіз." + +#: templates/registration/activation_email.html:14 +#: templates/registration/activation_email.txt:8 +msgid "Please click on the following link to activate your account:" +msgstr "Есептік жазбаңызды белсендіру үшін келесі сілтемеге өтіңіз:" + +#: templates/registration/activation_email.html:18 +#: templates/registration/activation_email.txt:11 +msgid "Alternatively, you can reply to this message to activate your account. Your reply must keep the following text intact for this to work:" +msgstr "Сонымен қатар, сіз өзіңіздің есептік жазбаңызды белсендіру үшін осы хабарламаға жауап бере аласыз. Бұл жұмыс істеуі үшін сіздің жауабыңызда келесі мәтін өзгеріссіз сақталуы керек:" + +#: templates/registration/activation_email.html:22 +#, python-format +msgid "See you soon! If you have problems activating your account, feel free to send us an email at %(email)s." +msgstr "Кездескенше! Егер сіздің есептік жазбаңызды іске қосуда қиындықтар туындаса, бізге %(email)s электрондық поштасын жіберіңіз." + +#: templates/registration/activation_email.html:25 +#: templates/registration/password_reset_email.html:17 +msgid "See you soon!" +msgstr "Кездескенше!" + +#: templates/registration/activation_email.txt:1 +#, python-format +msgid "Please activate your %(site_name)s account in the next %(count)s day." +msgid_plural "Please activate your %(site_name)s account in the next %(count)s days." +msgstr[0] "Келесі күні %(count)s жазбаңызды %(site_name)s белсендіріңіз." +msgstr[1] "Келесі күндері %(count)s жазбаңызды %(site_name)s белсендіріңіз." + +#: templates/registration/activation_email_subject.txt:1 +#, python-format +msgid "Activate your %(site_name)s account" +msgstr "Есептік жазбаңызды іске қосыңыз %(site_name)s" + +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/login.html:35 +msgid "Invalid username or password." +msgstr "Пайдаланушы аты немесе құпия сөз дұрыс емес." + +#: templates/registration/login.html:53 +#: templates/registration/two_factor_auth.html:92 +msgid "Login!" +msgstr "Логин!" + +#: templates/registration/login.html:56 +msgid "Forgot your password?" +msgstr "Құпия сөзіңізді ұмытып қалдыңыз ба?" + +#: templates/registration/login.html:59 +msgid "Or log in with..." +msgstr "Немесе былай кіріңіз..." + +#: templates/registration/logout.html:3 +msgid "See you later!" +msgstr "Кейінірек кездескенше!" + +#: templates/registration/password_change_done.html:3 +msgid "Your password was successfully changed." +msgstr "Құпия сөз сәтті өзгертілді." + +#: templates/registration/password_change_form.html:7 +msgid "We found your password in [a database of compromised passwords][0]." +msgstr "Біз сіздің пароліңізді [бұзылған парольдер базасынан][0] таптық." + +#: templates/registration/password_change_form.html:8 +msgid "To protect your account, we are requiring you to change your password to a more secure password." +msgstr "Есептік жазбаңызды қорғау үшін сізден құпия сөзді қауіпсіз парольге ауыстыруды талап етеміз." + +#: templates/registration/password_change_form.html:13 +msgid "Change Password" +msgstr "Құпиясөзді өзгерту" + +#: templates/registration/password_reset.html:7 +msgid "Send Reset Email" +msgstr "Параметрлерді қалпына келтіру үшін электрондық поштаға жіберу" + +#: templates/registration/password_reset_complete.html:3 +msgid "Your password has been set. You may go ahead and log in now." +msgstr "Сіздің пароліңіз орнатылды. Енді сіз жүйеге кіре аласыз." + +#: templates/registration/password_reset_confirm.html:9 +msgid "Reset Password" +msgstr "құпия сөзді қалпына келтіру" + +#: templates/registration/password_reset_confirm.html:12 +msgid "Invalid password reset link." +msgstr "Құпия сөзді қалпына келтіру сілтемесі дұрыс емес." + +#: templates/registration/password_reset_done.html:4 +msgid "We've emailed you instructions for setting your password. You should be receiving them shortly." +msgstr "Біз сізге құпия сөзді орнату туралы нұсқауларды электрондық пошта арқылы жібердік. Сіз оларды жақын арада алуыңыз керек." + +#: templates/registration/password_reset_done.html:5 +msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." +msgstr "Егер сіз электрондық поштаны алмаған болсаңыз, тіркелген мекенжайды енгізгеніңізге көз жеткізіңіз және спам қалтасын тексеріңіз." + +#: templates/registration/password_reset_email.html:6 +#, python-format +msgid "Forgot your password on the %(site_name)s? Don't worry!" +msgstr "%(site_name)s бойынша құпия сөзіңізді ұмытып қалдыңыз ба? Уайымдамаңыз!" + +#: templates/registration/password_reset_email.html:8 +#, python-format +msgid "To reset the password for your account \"%(username)s\", click the link below." +msgstr "\"%(username)s\" есептік жазбаңыздың құпия сөзін қалпына келтіру үшін төмендегі сілтемеге өтіңіз." + +#: templates/registration/password_reset_email.html:14 +#, python-format +msgid "See you soon! If you have problems resetting your password, feel free to shoot us an email at %(email)s." +msgstr "Жақында кездескенше Егер сіз парольді қалпына келтіруде қиындықтар туындаса, бізге %(email)s электрондық поштасын жіберіңіз." + +#: templates/registration/password_reset_email.txt:1 +#, python-format +msgid "You're receiving this email because you requested a password reset for your user account at %(site_name)s." +msgstr "Сіз электронды хат аласыз, себебі %(site_name)s мекен-жайы бойынша пайдаланушының өзінің электрондық поштасы үшін құпия сөзін өшіруді сұрағандықтан." + +#: templates/registration/password_reset_email.txt:3 +msgid "Please go to the following page and choose a new password:" +msgstr "Келесі бетке өтіп, жаңа құпия сөзді таңдаңыз:" + +#: templates/registration/password_reset_email.txt:7 +msgid "Your username, in case you've forgotten:" +msgstr "Егер сіз ұмытып қалсаңыз, сіздің пайдаланушы атыңыз:" + +#: templates/registration/password_reset_email.txt:9 +msgid "Thanks for using our site!" +msgstr "Біздің сайтты пайдаланғаныңыз үшін рахмет!" + +#: templates/registration/password_reset_email.txt:11 +#, python-format +msgid "The %(site_name)s team" +msgstr "%(site_name)s пәрмені" + +#: templates/registration/password_reset_subject.txt:1 +#, python-format +msgid "Password reset on %(site_name)s" +msgstr "%(site_name)s құпия сөзді өшіру" + +#: templates/registration/profile_creation.html:38 +#: templates/registration/username_select.html:7 +msgid "Continue >" +msgstr "Жалғастыру>" + +#: templates/registration/registration_closed.html:3 +msgid "Registration is currently closed. Please contact an administrator." +msgstr "Тіркеу қазір жабық. Әкімшіге хабарласыңыз." + +#: templates/registration/registration_complete.html:3 +msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." +msgstr "Сіз тіркеуден сәтті өттіңіз. Тіркеуді растау үшін сіз көрсеткен электрондық пошта мекенжайына электрондық хат жіберілді." + +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Эл. пошта" + +#: templates/registration/registration_form.html:166 +msgid "(again, for confirmation)" +msgstr "(тағы да, растау үшін)" + +#: templates/registration/registration_form.html:173 +msgid "(select your closest major city)" +msgstr "(сізге жақын ірі қаланы таңдаңыз)" + +#: templates/registration/registration_form.html:178 +msgid "pick from map" +msgstr "карта бойынша таңдаңыз" + +#: templates/registration/registration_form.html:183 +msgid "Default language" +msgstr "әдепкі тіл" + +#: templates/registration/registration_form.html:186 +msgid "Affiliated organizations" +msgstr "Еншілес ұйымдар" + +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 +msgid "Notify me about upcoming contests" +msgstr "Алдағы байқаулар туралы маған хабарлаңыз" + +#: templates/registration/registration_form.html:209 +msgid "By registering, you agree to our [Terms & Conditions][0]." +msgstr "Тіркелу арқылы сіз біздің [Ережелер & Шарттармен][0] келісесіз." + +#: templates/registration/registration_form.html:212 +msgid "Register!" +msgstr "Тіркеліңіз!" + +#: templates/registration/totp_disable.html:31 +msgid "To protect your account, you must first authenticate before you can disable Two Factor Authentication." +msgstr "Есептік жазбаңызды қорғау үшін екі-факторлы аутентификацияны өшірмес бұрын алдымен аутентификациядан өту керек." + +#: templates/registration/totp_disable.html:38 +#: 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/totp_disable.html:41 +msgid "Disable Two Factor Authentication" +msgstr "Екі-факторлы аутентификацияны өшіру" + +#: templates/registration/totp_enable.html:72 +msgid "Scan this code with your authenticator app:" +msgstr "Бұл кодты аутентификация қолданбасы арқылы сканерлеңіз:" + +#: templates/registration/totp_enable.html:73 +msgid "QR code" +msgstr "QR код" + +#: templates/registration/totp_enable.html:74 +msgid "Or enter this code manually:" +msgstr "Немесе осы кодты қолмен енгізіңіз:" + +#: templates/registration/totp_enable.html:85 +msgid "Enter the 6-digit code generated by your app:" +msgstr "Сіздің қосымшаңызбен генерацияланған 6-таңбалы кодты енгізіңіз:" + +#: templates/registration/totp_enable.html:90 +msgid "Edit Two Factor Authentication" +msgstr "" + +#: templates/registration/totp_enable.html:92 +msgid "Enable Two Factor Authentication" +msgstr "Екі факторлы анықтауды қосу" + +#: templates/registration/totp_enable.html:98 +#: templates/user/edit-profile.html:396 +msgid "Below is a list of one-time use scratch codes." +msgstr "Төменде бір реттік сызат кодтарының тізімі берілген." + +#: templates/registration/totp_enable.html:99 +#: templates/user/edit-profile.html:397 +msgid "These codes can only be used once and are for emergency use." +msgstr "Бұл кодтарды тек бір рет қолдануға болады және төтенше жағдайда пайдалануға арналған." + +#: templates/registration/totp_enable.html:100 +#: templates/user/edit-profile.html:398 +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 +#: templates/user/edit-profile.html:400 +msgid "Please write these down and keep them in a secure location." +msgstr "Мұны жазып, қауіпсіз жерде сақтаңыз." + +#: templates/registration/totp_enable.html:103 +msgid "These codes will never be shown again after you enable two-factor authentication." +msgstr "Бұл кодтар екі факторлы аутентификацияны қосқаннан кейін ешқашан пайда болмайды." + +#: templates/registration/totp_enable.html:108 +msgid "Important:" +msgstr "Маңызды:" + +#: templates/registration/totp_enable.html:109 +#, python-format +msgid "If you lose your authentication device and are unable to use your scratch codes, %(site_name)s admins will NOT be able to recover your account. Please keep your scratch codes safe!" +msgstr "Егер сіз аутентификация құрылғысын жоғалтсаңыз және сызат кодтарын пайдалана алмасаңыз, әкімшілерік %(site_name)s есептік жазбаңызды қалпына келтіре алмайды. Сызат кодтарын сақтаңыз!" + +#: templates/registration/two_factor_auth.html:33 +#: templates/user/edit-profile.html:159 +msgid "WebAuthn is not supported by your browser." +msgstr "WebAuthn сіздің браузеріңізде көрсетпейді." + +#: templates/registration/two_factor_auth.html:54 +#: templates/user/edit-profile.html:183 +msgid "Failed to contact server." +msgstr "Сервермен байланысу мүмкін болмады." + +#: templates/registration/two_factor_auth.html:81 +msgid "Enter one of your 16-character scratch codes:" +msgstr "16-таңбалы сызат кодтарының бірін енгізіңіз:" + +#: templates/registration/two_factor_auth.html:89 +msgid "Use security key" +msgstr "Қауіпсіздік кілтін пайдаланыңыз" + +#: templates/registration/two_factor_auth.html:94 +msgid "Use scratch code" +msgstr "Скретч кодын қолданыңыз" + +#: templates/registration/two_factor_auth.html:98 +#, python-format +msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." +msgstr "Егер сіз аутентификация құрылғысын жоғалтсаңыз және сызат кодтарын пайдалана алмасаңыз, %(email)s мекенжайы бойынша бізге хабарласыңыз." + +#: templates/stats/language.html:11 +msgid "Submission Statistics" +msgstr "Тапсырылымдар статистикасы" + +#: templates/stats/language.html:21 +msgid "AC Submissions by Language" +msgstr " AC тілдер бойынша тапсырылымдар" + +#: templates/status/judge-status-table.html:3 +msgid "Judge" +msgstr "Сот" + +#: templates/status/judge-status-table.html:5 +msgid "Online" +msgstr "Желіде" + +#: templates/status/judge-status-table.html:7 +msgid "Uptime" +msgstr "Жұмыс уақыты" + +#: templates/status/judge-status-table.html:8 +msgid "Ping" +msgstr "дыбыс" + +#: templates/status/judge-status-table.html:9 +msgid "Load" +msgstr "Жүктеу" + +#: templates/status/judge-status-table.html:36 +#: templates/status/judge-status-table.html:43 +#: templates/status/judge-status-table.html:50 +#: templates/status/judge-status-table.html:61 +msgid "N/A" +msgstr "N/A" + +#: templates/status/judge-status-table.html:66 +msgid "There are no judges available at this time." +msgstr "Қазіргі уақытта бос судьялар жоқ." + +#: templates/status/language-list.html:36 +msgid "Runtime Info" +msgstr "Жұмыс уақыты туралы ақпарат" + +#: templates/status/status-tabs.html:4 +msgid "Judges" +msgstr "судьялар" + +#: templates/status/status-tabs.html:6 +msgid "Versions" +msgstr "Нұсқалар" + +#: templates/submission/info-base.html:8 +#, python-format +msgid "%(date)s on %(judge)s" +msgstr "%(date)s %(judge)s" + +#: 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." +msgstr "Бағалау кезінде ішкі қате пайда болды және әкімшілері %(site_name)s бұл туралы хабардар болды." + +#: templates/submission/internal-error-message.html:5 +msgid "In the meantime, try resubmitting in a few seconds." +msgstr "Осы уақытта бірнеше секундтан кейін сұранысты қайта жіберуге тырысыңыз." + +#: templates/submission/internal-error-message.html:7 +msgid "An internal error occurred while grading." +msgstr "Бағалау кезінде ішкі қате пайда болды." + +#: templates/submission/internal-error-message.html:14 +msgid "Error information" +msgstr "Қате туралы ақпарат" + +#: templates/submission/list.html:35 templates/submission/status.html:81 +msgid "Are you sure you want to rejudge?" +msgstr "Шешімді қайта қарастырғыңыз келетініне сенімдісіз бе?" + +#: templates/submission/list.html:75 +msgid "Filter by status..." +msgstr "Статус бойынша сүзгі..." + +#: templates/submission/list.html:82 +msgid "Filter by language..." +msgstr "Тілдер бойынша сүзгілеу..." + +#: templates/submission/list.html:306 +msgid "Filter submissions" +msgstr "Тапсырылымдар сүзгісі" + +#: templates/submission/list.html:342 +msgid "Total:" +msgstr "Барлық:" + +#: templates/submission/list.html:352 +msgid "You were disconnected. Refresh to show latest updates." +msgstr "Сіз ажыраттыңыз. Соңғы жаңартуларды көрсету үшін жаңартыңыз." + +#: templates/submission/row.html:44 +#, python-format +msgid "Case #%(case)s" +msgstr "%(case)s жағдай" + +#: templates/submission/row.html:54 +msgid "view" +msgstr "қараулар" + +#: templates/submission/row.html:59 +msgid "rejudge" +msgstr "Қайта тексеру" + +#: templates/submission/row.html:64 +msgid "This submission has been locked, and cannot be rejudged." +msgstr "Бұл өтінім бұғатталған және оны қайта қарау мүмкін емес." + +#: templates/submission/row.html:65 +msgid "locked" +msgstr "Бұғатталған" + +#: templates/submission/row.html:71 +msgid "admin" +msgstr "Әкімші" + +#: templates/submission/source.html:25 +msgid "View status" +msgstr "Статус қарау" + +#: templates/submission/source.html:26 +msgid "View raw source" +msgstr "Бастапқы кодты қарау" + +#: templates/submission/source.html:28 templates/submission/status.html:75 +msgid "Resubmit" +msgstr "Қайта жіберу" + +#: templates/submission/status-testcases.html:10 +msgid "We are waiting for a suitable judge to process your submission..." +msgstr "Біз сіздің тапсырылымдарыңызды қарау үшін тиісті судьяны күтеміз..." + +#: templates/submission/status-testcases.html:12 +msgid "Your submission is being processed..." +msgstr "Сіздің тапсырылымыңыз өңделеді..." + +#: templates/submission/status-testcases.html:14 +msgid "Compilation Error" +msgstr "Компляциялық қате" + +#: templates/submission/status-testcases.html:18 +msgid "Compilation Warnings" +msgstr "Компиляция туралы ескертулер" + +#: templates/submission/status-testcases.html:23 +msgid "Pretest Execution Results" +msgstr "Алдын ала тестілеуді орындау нәтижелері" + +#: templates/submission/status-testcases.html:25 +msgid "Execution Results" +msgstr "Орындау нәтижелері" + +#: templates/submission/status-testcases.html:51 +#, python-format +msgid "Batch #%(id)d" +msgstr "#%(id)d партия" + +#: templates/submission/status-testcases.html:64 +#, python-format +msgid "Case #%(id)d:" +msgstr "Мысал #%(id)d:" + +#: templates/submission/status-testcases.html:66 +#, python-format +msgid "Pretest #%(id)d:" +msgstr "Алдын ала тестілеу #%(id)d:" + +#: templates/submission/status-testcases.html:68 +#, python-format +msgid "Test case #%(id)d:" +msgstr "Тест мысалы #%(id)d:" + +#: templates/submission/status-testcases.html:101 +msgid "Your output (clipped)" +msgstr "Сіздің тұжырымыңыз (кесілген)" + +#: templates/submission/status-testcases.html:113 +msgid "Judge feedback" +msgstr "бағалаушы кері байланыс" + +#: templates/submission/status-testcases.html:129 +msgid "Resources:" +msgstr "Ресурстар:" + +#: templates/submission/status-testcases.html:138 +msgid "Maximum single-case runtime:" +msgstr "Бір жағдайда максималды орындау уақыты:" + +#: templates/submission/status-testcases.html:143 +msgid "Final pretest score:" +msgstr "Алдын ала тестілеудің қорытынды есебі:" + +#: templates/submission/status-testcases.html:145 +msgid "Final score:" +msgstr "Қорытынды есеп:" + +#: templates/submission/status-testcases.html:152 +#: templates/submission/status-testcases.html:156 +#, python-format +msgid "%(points)s/%(total)s points" +msgstr "%(points)s/%(total)s нүкте" + +#: templates/submission/status-testcases.html:161 +msgid "Passing pretests does not guarantee a full score on system tests." +msgstr "Алдын ала сынақтардан өту жүйелік сынақтар бойынша толық балл алуға кепілдік бермейді." + +#: templates/submission/status-testcases.html:164 +msgid "Submission aborted!" +msgstr "Тапсырылым тоқтатылды!" + +#: templates/submission/status.html:73 +msgid "View source" +msgstr "Дереккөзге қарау" + +#: templates/submission/status.html:110 +msgid "Press Ctrl-Enter or Command-Enter to abort." +msgstr "Тоқтату үшін Ctrl-Enter немесе Command-Enter пернелерін басыңыз." + +#: templates/submission/status.html:112 +msgid "Abort" +msgstr "Тоқтату" + +#: templates/submission/submission-list-tabs.html:6 +msgid "Mine" +msgstr "менің" + +#: templates/submission/submission-list-tabs.html:9 +msgid "Best" +msgstr "Үздік" + +#: templates/submission/submission-list-tabs.html:12 +#, python-format +msgid "%(user)s's" +msgstr "%(user)s ның" + +#: templates/task_status.html:92 +msgid "Completed!" +msgstr "Тапсырыс орындалды!" + +#: templates/task_status.html:95 +msgid "Failed!" +msgstr "Қате!" + +#: templates/ticket/list.html:70 templates/ticket/ticket.html:95 +msgid "Reopened: " +msgstr "Қайта ашылды:" + +#: templates/ticket/list.html:73 templates/ticket/ticket.html:96 +msgid "Closed: " +msgstr "Жабық:" + +#: templates/ticket/list.html:157 +msgid "Use desktop notification" +msgstr "Жұмыс үстеліндегі хабарламаны пайдаланыңыз" + +#: templates/ticket/list.html:163 +msgid "Hide closed tickets" +msgstr "Жабық билеттерді жасыру" + +#: templates/ticket/list.html:168 +msgid "Show my tickets only" +msgstr "Тек менің билеттерімді көрсетіңіз" + +#: templates/ticket/list.html:172 +msgid "Filing user" +msgstr "Тіркеуші пайдаланушы" + +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 +msgid "Assignee" +msgid_plural "Assignees" +msgstr[0] "заңдықабылдаушы" +msgstr[1] "заңдықабылдаушылар" + +#: templates/ticket/list.html:201 +msgid "Title" +msgstr "Атауы" + +#: templates/ticket/list.html:203 +msgid "Assignees" +msgstr "заңдықабылдаушылар" + +#: templates/ticket/message.html:11 +#, python-brace-format +msgid "messaged on {time}" +msgstr "жарияланған {time}" + +#: templates/ticket/message.html:11 +#, python-brace-format +msgid "messaged {time}" +msgstr "жарияланған {time}" + +#: templates/ticket/new_problem.html:7 +msgid "Thanks for opening a ticket!" +msgstr "Билетті ашқаныңыз үшін рахмет!" + +#: templates/ticket/new_problem.html:9 +msgid "Please keep in mind that this form is for reporting issues with a problem statement, and not for asking for help. If you require assistance on solving a problem, ask in the comments instead." +msgstr "Есіңізде болсын, бұл форма көмек сұрауға емес, есепті баяндауға қатысты мәселелер туралы хабарлауға арналған. Егер Сізге қандай да бір мәселені шешуге көмек қажет болса, оның орнына түсініктемелерден сұраңыз." + +#: templates/ticket/ticket.html:30 +#, python-brace-format +msgid "Could not change ticket: {error}" +msgstr "Билетті ауыстыру мүмкін болмады: {error}" + +#: templates/ticket/ticket.html:189 +msgid "Associated object" +msgstr "Байланысты объект" + +#: templates/ticket/ticket.html:206 +msgid "No one is assigned." +msgstr "Ешкім тағайындалмайды." + +#: templates/ticket/ticket.html:212 +msgid "Close ticket" +msgstr "Билетті жабу" + +#: templates/ticket/ticket.html:214 +msgid "Reopen ticket" +msgstr "Билетті қайта ашыңыз" + +#: templates/ticket/ticket.html:218 +msgid "Assignee notes" +msgstr "Заңдықолданушылардың ескертулері" + +#: templates/ticket/ticket.html:225 templates/widgets/select_all.html:4 +msgid "Nothing here." +msgstr "Мұнда ештеңе жоқ." + +#: templates/user/base-users-table.html:4 +msgid "Rank" +msgstr "дәреже" + +#: templates/user/base-users.html:15 templates/user/base-users.html:59 +msgid "Search by handle..." +msgstr "Дескриптор бойынша іздеу..." + +#: templates/user/edit-profile.html:102 +msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." +msgstr "Бұл сайттың әкімшілері барлық қызметкерлерден екі-факторлы аутентификацияны қосуды талап етеді, сондықтан оны қазір өшіруге болады." + +#: templates/user/edit-profile.html:107 +msgid "Are you sure you want to generate or regenerate your API token?" +msgstr "Сіз өзіңіздің API таңбалауышыңызды жасағыңыз немесе қалпына келтіргіңіз келетініне сенімдісіз бе?" + +#: templates/user/edit-profile.html:108 +msgid "This will invalidate any previous API tokens." +msgstr "Бұл барлық алдыңғы API таңбалауыштарының күшін жояды." + +#: templates/user/edit-profile.html:109 +msgid "It also allows access to your account without Two-factor Authentication." +msgstr "Бұл сіздің есептік жазбаңызға екі факторлы аутентификациясыз кіруге мүмкіндік береді." + +#: templates/user/edit-profile.html:110 +msgid "You will not be able to view your API token after you leave this page!" +msgstr "Осы беттен шыққаннан кейін API таңбалауышын көре алмайсыз!" + +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 +msgid "Generating..." +msgstr "Генерациялау..." + +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 +msgid "Remove" +msgstr "Жою" + +#: templates/user/edit-profile.html:135 +msgid "Are you sure you want to remove your API token?" +msgstr "API таңбалауышыны жойғыңыз келетініне сенімдісіз бе?" + +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 +msgid "Generate" +msgstr "Генерация" + +#: templates/user/edit-profile.html:188 +msgid "Are you sure you want to delete this security key?" +msgstr "Сіз бұл қауіпсіздік кілтін жойғыңыз келетініне сенімдісіз бе?" + +#: templates/user/edit-profile.html:202 +msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" +msgstr "Сіз жаңа сызат кодтарының жиынтығын жасағыңыз немесе қалпына келтіргіңіз келетініне сенімдісіз бе?" + +#: templates/user/edit-profile.html:203 +msgid "This will invalidate any previous scratch codes you have." +msgstr "Бұл сізде бар барлық алдыңғы сызат кодтарының күшін жояды." + +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 +msgid "You will not be able to view your scratch codes after you leave this page!" +msgstr "Осы беттен шыққаннан кейін сызат кодтарын көре алмайсыз!" + +#: templates/user/edit-profile.html:273 +msgid "Self-description:" +msgstr "өзін-өзі сипаттау:" + +#: templates/user/edit-profile.html:280 +msgid "Select your closest major city" +msgstr "Сізге жақын ірі қаланы таңдаңыз" + +#: templates/user/edit-profile.html:281 +msgid "Time zone:" +msgstr "Уақыт белдеуі:" + +#: templates/user/edit-profile.html:285 +msgid "Language:" +msgstr "Тілдер:" + +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "Сайт тақырыбы:" + +#: templates/user/edit-profile.html:293 +msgid "Editor theme:" +msgstr "Редактордың тақырыбы:" + +#: templates/user/edit-profile.html:298 +msgid "Math engine:" +msgstr "математикалық қозғалтқыш:" + +#: templates/user/edit-profile.html:307 +msgid "Affiliated organizations:" +msgstr "Еншілес ұйымдар:" + +#: templates/user/edit-profile.html:333 +msgid "Change your avatar" +msgstr "Аваңызды өзгертіңіз:" + +#: templates/user/edit-profile.html:338 +msgid "Change your password" +msgstr "Құпия сөзді өзгерту" + +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "API белгі:" + +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "жасырын" + +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "Екі-факторлы авторизация қосылған:" + +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" +msgstr "скретч-коды:" + +#: templates/user/edit-profile.html:399 +msgid "If you ever need more scratch codes, you can regenerate them here." +msgstr "Егер сізге қосымша сызат кодтары қажет болса, оларды осы жерден қалпына келтіруге болады." + +#: templates/user/edit-profile.html:407 +msgid "Two-factor Authentication is disabled:" +msgstr "Екі факторлы аутентификация өшірілген:" + +#: templates/user/edit-profile.html:415 +msgid "Security keys:" +msgstr "Қауіпсіздік кілттері:" + +#: templates/user/edit-profile.html:425 +msgid "Delete" +msgstr "Жою" + +#: templates/user/edit-profile.html:432 +msgid "Enter a name for this key" +msgstr "Осы кілттің атын енгізіңіз" + +#: templates/user/edit-profile.html:433 +msgid "Add" +msgstr "Add" + +#: templates/user/edit-profile.html:441 +msgid "User-script:" +msgstr "пайдаланушы скрипі" + +#: templates/user/edit-profile.html:445 +msgid "Update profile" +msgstr "Профильді жаңарту" + +#: templates/user/pp-row.html:26 +#, python-format +msgid "weighted %(percent)s (%(pp)spp)" +msgstr "%(percent)s (%(pp)spp) өлшенген" + +#: 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:85 +#, python-format +msgid "You may only prepare a new data download once every %(duration)s." +msgstr "Сіз жаңа деректерді жүктеуді әрбір %(duration)s бір рет қана дайындай аласыз." + +#: templates/user/prepare-data.html:87 +msgid "Once your data is ready, you will find a download link on this page." +msgstr "Деректер дайын болғаннан кейін сіз осы бетте жүктеу сілтемесін таба аласыз." + +#: templates/user/prepare-data.html:104 +msgid "Submissions" +msgstr "Тапсырылымдар" + +#: templates/user/prepare-data.html:121 +msgid "Prepare new download" +msgstr "Жаңа жүктеуді дайындау" + +#: templates/user/prepare-data.html:123 +msgid "Prepare download" +msgstr "Жүктеуді дайындау" + +#: templates/user/prepare-data.html:127 +msgid "Download prepared data" +msgstr "Дайындалған деректерді жүктеңіз" + +#: templates/user/prepare-data.html:133 +msgid "Your data is ready!" +msgstr "Сіздің деректеріңіз дайын!" + +#: templates/user/prepare-data.html:135 +#, python-format +msgid "You will need to wait %(countdown)s to prepare a new data download." +msgstr "Жаңа деректерді жүктеуді дайындау үшін %(countdown)s күту керек." + +#: templates/user/prepare-data.html:137 +msgid "Download data" +msgstr "Деректерді жүктеп алыңыз" + +#: templates/user/user-about.html:14 +msgid "From" +msgstr "Басы" + +#: templates/user/user-about.html:25 +msgid "Admin notes:" +msgstr "Әкімші ескертпелері" + +#: templates/user/user-about.html:32 templates/user/user-tabs.html:4 +msgid "About" +msgstr "Біз туралы" + +#: templates/user/user-about.html:39 +msgid "You have not shared any information." +msgstr "Сіз ешқандай ақпаратпен бөліспедіңіз." + +#: templates/user/user-about.html:41 +msgid "This user has not shared any information." +msgstr "Бұл пайдаланушы ешқандай ақпаратпен бөліспеді." + +#: templates/user/user-about.html:58 +msgid "Sun" +msgstr "Жс" + +#: templates/user/user-about.html:63 +msgid "Mon" +msgstr "Дүй" + +#: templates/user/user-about.html:68 +msgid "Tues" +msgstr "Сейсен" + +#: templates/user/user-about.html:73 +msgid "Wed" +msgstr "Сәр." + +#: templates/user/user-about.html:78 +msgid "Thurs" +msgstr "Бс" + +#: templates/user/user-about.html:83 +msgid "Fri" +msgstr "жұма" + +#: templates/user/user-about.html:88 +msgid "Sat" +msgstr "Сен." + +#: templates/user/user-about.html:97 +msgid "Less" +msgstr "Азырақ" + +#: templates/user/user-about.html:103 +msgid "More" +msgstr "Тағы" + +#: templates/user/user-about.html:111 +msgid "Rating history" +msgstr "Рейтинг тарихы" + +#: templates/user/user-base.html:18 +#, python-format +msgid "%(counter)s problem solved" +msgid_plural "%(counter)s problems solved" +msgstr[0] "%(counter)s мәселе шешілді" +msgstr[1] "%(counter)s мәселелер шешілді" + +#: templates/user/user-base.html:26 +msgid "Rank by points:" +msgstr "Ұпайлар бойынша рейтинг:" + +#: templates/user/user-base.html:29 +msgid "Total points:" +msgstr "Жалпы ұпайлар" + +#: templates/user/user-base.html:43 +#, python-format +msgid "%(counter)s contest written" +msgid_plural "%(counter)s contests written" +msgstr[0] "%(counter)s байқауға қатысушылар" +msgstr[1] "%(counter)s байқауларға қатысушылар" + +#: templates/user/user-base.html:50 +msgid "Rank by rating:" +msgstr "Рейтинг бойынша ранжирлеу:" + +#: templates/user/user-base.html:52 +msgid "Rating:" +msgstr "Рейтинг" + +#: templates/user/user-base.html:53 +msgid "Min. rating:" +msgstr "Ең төменгі рейтинг:" + +#: templates/user/user-base.html:54 +msgid "Max rating:" +msgstr "бастапқы рейтинг" + +#: templates/user/user-problems.html:37 +msgid "Points breakdown" +msgstr "Нүкте бойынша бөлу" + +#: templates/user/user-problems.html:43 +msgid "Load more..." +msgstr "Көбірек жүктеңіз..." + +#: templates/user/user-problems.html:47 +msgid "This user has not yet solved any problems." +msgstr "Бұл пайдаланушы әлі ешқандай есепті шешкен жоқ." + +#: templates/user/user-problems.html:53 +msgid "Authored problems" +msgstr "Авторлық есептер" + +#: templates/user/user-problems.html:85 +msgid "Hide problems I've solved" +msgstr "Мен шешкен есептерді жасыру" + +#: templates/user/user-problems.html:96 +#, python-format +msgid "%(group)s (%(val)s points)" +msgstr "%(group)s (%(val)s ұпайлар)" + +#: templates/user/user-problems.html:115 +#, python-format +msgid "%(points)s / %(total)s" +msgstr "%(points)s / %(total)s" + +#: templates/user/user-tabs.html:7 +msgid "Impersonate" +msgstr "Өзін басқа адам атынан көрсету" + +#: templates/user/user-tabs.html:10 +msgid "Admin User" +msgstr "Пайдаланушы-Әкімші" + +#: templates/user/user-tabs.html:13 +msgid "Admin Profile" +msgstr "Әкімші Профилі" + +#: templates/widgets/select_all.html:8 +msgid "Check all" +msgstr "Барлығын тексеру" + diff --git a/locale/kk/LC_MESSAGES/djangojs.po b/locale/kk/LC_MESSAGES/djangojs.po new file mode 100644 index 0000000000..2845d7c34a --- /dev/null +++ b/locale/kk/LC_MESSAGES/djangojs.po @@ -0,0 +1,82 @@ +msgid "" +msgstr "" +"Project-Id-Version: dmoj\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2024-01-23 05:24\n" +"Last-Translator: \n" +"Language-Team: Kazakh\n" +"Language: kk_KZ\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Crowdin-Project: dmoj\n" +"X-Crowdin-Project-ID: 142963\n" +"X-Crowdin-Language: kk\n" +"X-Crowdin-File: djangojs.po\n" +"X-Crowdin-File-ID: 12\n" + +#: resources/common.js:194 +msgctxt "time format with day" +msgid "%d day %h:%m:%s" +msgid_plural "%d days %h:%m:%s" +msgstr[0] "%d күн %h:%m:%s" +msgstr[1] "%d күн %h:%m:%s" + +#: resources/common.js:197 +msgctxt "time format without day" +msgid "%h:%m:%s" +msgstr "%h:%m:%s" + +#: resources/problem-vote.js:11 +msgid "Vote on problem points" +msgstr "Есеп ұпайларына дауыс беріңіз" + +#: resources/problem-vote.js:16 +#, javascript-format +msgid "Unable to delete vote: %s" +msgstr "Берілген дауысты жою мүмкін емес: %s" + +#: resources/problem-vote.js:28 +#, javascript-format +msgid "Edit points vote (%s)" +msgstr "Ұпайлар дауысын өзгерту (%s)" + +#: resources/problem-vote.js:34 +#, javascript-format +msgid "Unable to cast vote: %s" +msgstr "Дауыс беру мүмкін емес: %s" + +#: resources/problem-vote.js:63 +msgid "Number of votes for this point value" +msgstr "Осы ұпай мәніне берілген дауыстар саны" + +#: resources/user_profile.js:47 +msgid "past year" +msgstr "өткен жыл" + +#: resources/user_profile.js:64 +msgid "%(cnt)d total submission" +msgid_plural "%(cnt)d total submissions" +msgstr[0] "%(cnt)d барлық тапсырылым" +msgstr[1] "%(cnt)d барлық тапсырылым" + +#: resources/user_profile.js:69 +msgid "%(cnt)d submission in the last year" +msgid_plural "%(cnt)d submissions in the last year" +msgstr[0] "%(cnt)d тапсырылым cоңғы жылда" +msgstr[1] "%(cnt)d тапсырылым cоңғы жылда" + +#: resources/user_profile.js:74 +msgid "%(cnt)d submission in %(year)d" +msgid_plural "%(cnt)d submissions in %(year)d" +msgstr[0] "%(cnt)d тапсырылым %(year)d жылы" +msgstr[1] "%(cnt)d тапсырылым %(year)d жылы" + +#: resources/user_profile.js:88 +msgid "%(cnt)d submission on %(date)s" +msgid_plural "%(cnt)d submissions on %(date)s" +msgstr[0] "%(cnt)d тапсырылым %(date)s жылы" +msgstr[1] "%(cnt)d тапсырылым %(date)s жылы" + diff --git a/locale/ko/LC_MESSAGES/django.po b/locale/ko/LC_MESSAGES/django.po index c39f90da80..650d3d17af 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:49\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -17,143 +17,144 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "카탈루냐어" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "독일어" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "그리스어" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "영어" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "스페인어" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "프랑스어" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "크로아티아어" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "헝가리어" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "일본어" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "한국어" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "포르투갈어 (브라질)" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "루마니아어" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "러시아어" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "세르비아어(라틴문자)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "터키어" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "베트남어" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "중국어(간체)" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "중국어(번체)" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "메인" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "내용" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "코멘트 숨기기" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d개의 코멘트가 숨겨졌습니다." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "코멘트 숨기기" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "코멘트 보이기" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d개의 코멘트가 숨겨졌습니다." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "코멘트 보이기" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "관련 페이지" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "페이지와 연관된" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "포함된 대회" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "문제" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "문제" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "재체점" @@ -185,91 +186,92 @@ msgstr "접근" msgid "Justice" msgstr "정의" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "공개 대회로 전환" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d개의 대회가 공개로 전환되었습니다." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "공개 대회로 전환" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "비공개 대회로 전환" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d개의 대회가 비공개로 전환되었습니다." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "비공개 대회로 전환" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "콘테스트 답안제출 잠그기" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d개의 대회가 성공적으로 잠겼습니다." -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "콘테스트 답안제출 잠그기" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "콘테스트 답안제출 허용" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d개의 대회가 해제되었습니다." -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "콘테스트 답안제출 허용" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "결과 초기화" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d 참여자가 재계산되었습니다." -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "결과 초기화" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "사용자 이름" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "가상" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "링크 경로" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "요약" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "사용자" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "개체" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "사이트에서 보기" @@ -290,8 +292,8 @@ msgid "Taxonomy" msgstr "분류" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "포인트" @@ -300,9 +302,8 @@ msgstr "포인트" msgid "Limits" msgstr "제한" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "언어" @@ -310,102 +311,91 @@ msgstr "언어" msgid "History" msgstr "히스토리" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "저자" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "게시일을 지금으로 하기" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "%d개의 문제 게시일이 성공적으로 갱신되었습니다." -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "게시일을 지금으로 하기" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "공개로 설정" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "%d개의 문제가 공개로 전환되었습니다." -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "공개로 설정" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "비공개로 설정" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "%d개의 문제가 비공개로 전환되었습니다." -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "비공개로 설정" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "문제" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "시간대" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "사용자" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "이메일" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "시간대" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "가입한 날짜" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "점수 재계산" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d명의 사용자 점수가 재계산되었습니다." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "점수 재계산" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "재생성" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "설명" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "정보" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "기능" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "없음" @@ -437,56 +427,60 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s 대회의 문제 %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "선택한 제출 재채점" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "재채점할 권한이 없습니다." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "재채점 가능 개수를 초과하였습니다." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "선택한 제출 재채점" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "재채점" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d개의 제출이 성공적으로 재채점되었습니다." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "재채점" - -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "문제 코드" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "문제 이름" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:222 +msgid "time" msgstr "시간" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "메모리" + +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "메모리" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "언어" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -510,7 +504,8 @@ msgstr "Online Judge" msgid "Comment body" msgstr "코멘트 본문" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "침묵하세요." @@ -601,119 +596,127 @@ msgstr "동점은 점수가 0이 아닌 문제의 변경 제출 시간의 마지 msgid "IOI (pre-2016)" msgstr "IOI (pre-2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "2단계 인증 토큰은 십진수 {count}자리여야 합니다." -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "잘못된 이중 인증 토큰입니다." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "스크래치 코드는 16 Base32 문자여야 합니다." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "유효하지 않은 접근 코드입니다." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "대회 업데이트를 구독하세요" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "베타 기능 활성화" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "프로필을 업데이트하고 싶다면 최소한 한 문제를 먼저 풀어야 합니다." -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "{count}개보다 많은 공개 조직에 소속될 수 없습니다." -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "주석을 다운로드하시겠습니까?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "제출물을 다운로드하시겠습니까?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "문제 코드로 필터링:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "모든 제출물을 포함하려면 비워 둡니다" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "결과 필터링:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "다운 받을 것을 최소 한 개 선택해주세요." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "모든 judge" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "사용자 이름" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "비밀번호" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "잘못된 코드 길이입니다." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "잘못된 WebAuthn 응답입니다." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "WebAuthn 챌린지가 발행되지 않았습니다." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "잘못된 WebAuthn 자격 증명 ID입니다." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "잘못된 2단계 인증 토큰 또는 접근 코드입니다." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "totp_token 또는 webauthn_response를 지정해야 합니다." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "문제 코드는 ^[a-z0-9]+$ 이어야 합니다" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "코드에 문제가 이미 있습니다." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "대회 아이디 ^[a-z0-9]+$ 이어야 합니다" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "키가 있는 콘테스트가 이미 존재합니다." @@ -722,108 +725,114 @@ msgstr "키가 있는 콘테스트가 이미 존재합니다." msgid "N j, Y, g:i a" msgstr "Y년 n월 j일 a g시 i분" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "{time}에" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "레이팅 없음" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Leave as LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "MathML Only" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "최고의 질을 찾아라" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "페이지 코드는 ^[pcs]:[a-z0-9]+$|^b:\\d+$ 이어야 합니다" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "코멘터" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "게시 시각" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "페이지와 연관된" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "표" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "코멘트 본문" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "숨김" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "부모" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "코멘트" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "코멘트" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "%s에 대한 편집" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "코멘트 투표" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "코멘트 투표" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "주석 잠금 무시" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -879,16 +888,11 @@ msgstr "대회 id" msgid "contest name" msgstr "대회 이름" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "저자" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "이 사용자들은 대회를 편집할 권한이 있습니다." -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "curators" @@ -896,7 +900,7 @@ msgstr "curators" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "이러한 사용자는 컨테스트를 편집할 수 있지만 작성자로 나열되지는 않습니다." -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "testers" @@ -932,12 +936,12 @@ msgstr "" msgid "description" msgstr "설명" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "문제" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "시작 시각" @@ -945,12 +949,12 @@ msgstr "시작 시각" msgid "end time" msgstr "종료 시각" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "시간 제한" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "공개" @@ -1070,11 +1074,11 @@ msgstr "짧은 형식 설정 표시" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "컨테스트 페이지에 컨테스트 설정이 포함된 섹션을 표시할지 여부입니다." -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "조직에 비공개" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "조직" @@ -1104,7 +1108,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "OpenGraph 이미지" @@ -1124,7 +1128,7 @@ msgstr "현재 접속되어 있는 참가자 수" msgid "contest summary" msgstr "대회 요약" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "메타 설명 태그에 표시되는 일반 텍스트(예: 소셜 미디어용)." @@ -1137,7 +1141,7 @@ msgstr "액세스 코드" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "해당 인물 없음" @@ -1185,213 +1189,213 @@ msgstr "정밀 포인트" msgid "Number of digits to round points to." msgstr "점수를 반올림할 자릿수입니다." -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "비공개 콘테스트 보기" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "내 콘테스트 편집" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "모든 콘테스트 편집" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "콘테스트 복사" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "MOSS 콘테스트" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "대회 레이팅" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "대회 접근 코드" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "Private 대회 생성하기" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "대회 가시성 변경하기" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "컨테스트 문제 라벨 스크립트 수정" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "대회 잠금 여부 변경하기" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "대회" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "대회" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "관련된 대회" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "점수" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "누적 시간" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "실격되었습니다" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "이 참여자의 실격 여부." -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "동점 필드" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "가상 참여 id" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0은 가상이 아님을 의미하고, 그렇지 않으면 n번째 가상 참여를 의미합니다." -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "대회 형식별 데이터" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "대회 참가" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "대회 참가자" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "점수" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "부분" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "pretested 됨" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "순서" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "출력 접두사 길이 재정의" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "이 문제에 대한 최대 제출 수이거나 제한이 없는 경우 공백으로 둡니다." -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "제출할 수 없는 문제를 포함하는 이유는 무엇입니까?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "대회 문제" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "대회 문제" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "제출" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "참가 여부" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "Pretests에서만 이 제출이 실행되었는지 여부." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "대회 제출" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "대회 제출" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "등수" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "순위" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "원ㅅ ㅣ등급" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "대회 퍼포먼스" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "최근 순위" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "대회 순위" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "대회 순위" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "대회 코드 카피 체크 결과" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "대회 코드 카피 체크 결과" @@ -1443,7 +1447,7 @@ msgstr "게시물 제목" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "공개 여부" @@ -1496,7 +1500,7 @@ msgstr "문제 범주 이름" msgid "problem type" msgstr "문제 유형" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "문제 유형" @@ -1508,7 +1512,7 @@ msgstr "문제 그룹 ID" msgid "problem group name" msgstr "문제 그룹" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "문제 그룹" @@ -1545,7 +1549,7 @@ msgstr "아이콘 URL." msgid "license text" msgstr "라이센스 내용" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "라이센스" @@ -1569,280 +1573,267 @@ msgstr "문제가 해결됬을 경우 보이기" msgid "Only own submissions" msgstr "자신의 제출물만" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "문제 코드" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "/problem/ 뒤의 URL에서 사용되는 문제에 대한 짧고 고유한 코드." -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "문제 이름" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "문제 목록에 표시된 문제의 전체 이름입니다." -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "문제 본문" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "제작자" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "이러한 사용자는 문제를 편집할 수 있고 작성자로 나열됩니다." -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "이러한 사용자는 문제를 편집할 수 있고, 작성자로 나열됩니다." -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "이러한 사용자는 비공개 문제를 볼 수 있지만 편집할 수는 없습니다." -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "문제 페이지에 표시된 문제 유형입니다." -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "문제 목록의 범주 아래에 표시된 문제 그룹입니다." -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "이 문제의 시간 제한(초)입니다. 소수 자릿수 초(예: 1.5)가 지원됩니다." -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "메모리 제한" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "이 문제에 대한 메모리 제한(KB)입니다(예: 256mb = 262144KB)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "문제 완료에 대해 부여된 점수입니다. 부분적인 경우 점은 'p' 접미사로 표시됩니다." -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "부분 점수 허용" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "허용된 언어" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "허용된 제출 언어 목록입니다." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "수동으로 관리됨" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "심사위원의 데이터 관리 허용 여부." -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "게시 날짜" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "이전 버전과의 호환성으로 인해 자동 게시하는 마법의 기능이 없습니다." -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "선택한 사용자가 이 문제를 제출하는 것을 금지합니다." -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "이 문제가 게시되는 라이선스입니다." -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "문제 요약" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "유저 수" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "문제를 해결한 사용자 수입니다." -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "정답률" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "전체 마크다운 액세스 허용" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "제출 소스 가시성" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "비공개로 설정 시, 이 조직들만 문제를 볼 수 있습니다." -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "숨겨진 문제들 보이기" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "문제 수정" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "모든 문제 수정" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "모든 공개 문제 수정" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "전체 마크업 문제 수정" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "문제 복사" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "is_public 필드 변경" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "is_manually_managed 필드 변경" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "조직에게만 공개된 문제들 보기" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "언어" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "번역된 이름" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "번역된 설명" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "문제 번역" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "문제 번역" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "수정된 문제" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "수정사항" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "수정 타임스탬프" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "특정 언어 리소스 제한" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "특정 언어 리소스 제한" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "관련된 문제" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "게시일" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "편집 내용" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "숨겨진 솔루션 보기" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "솔루션" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "솔루션" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "투표자" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "노트" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "문제 투표" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "문제 투표" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1868,8 +1859,8 @@ msgid "Non-trailing spaces" msgstr "비 후행 공백" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "정렬되지 않은" +msgid "Sorted" +msgstr "" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1915,7 +1906,7 @@ msgstr "" msgid "checker arguments" msgstr "검사기의 인자" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -1963,6 +1954,18 @@ msgstr "점수 값" msgid "case is pretest?" msgstr "케이스가 사전 테스트입니까?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "조직 이름" @@ -2040,7 +2043,7 @@ msgid "Edit all organizations" msgstr "조직 편집" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "조직" @@ -2081,7 +2084,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2106,26 +2109,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "마지막 접속 시간" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "마지막 IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "순위 표시" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "일반 유저" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "문제 해결사" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2135,200 +2142,200 @@ msgstr "문제 해결사" msgid "Admin" msgstr "관리자" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "코멘트 음소거" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "일부 사용자는 침묵할 때 최상의 상태를 유지합니다." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "비공개 사용자" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "사용자는 순위가 매겨지지 않습니다." -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "사용자 스크립트" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "사이트 수정을 위한 사용자 자바스크립트입니다." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "현재 대회" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "수학 엔진" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "수학을 렌더링하는 데 사용되는 렌더링 엔진." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "TOTP 2FA 활성화" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "TOTP 기반 이중 인증 활성화 확인." -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn 2FA 사용" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "WebAuthn 기반 2단계 인증을 활성화하려면 체크." -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "TOTP 키" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "TOTP용 32자 Base32 인코딩 키." -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "TOTP 키는 비어 있거나 Base32 이어야 합니다." -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "기본 코드" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "기본 코드용 16 글자 Base32 인코딩 코드의 JSON 배열." -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "기본 코드는 비어있거나 Base32 코드 글자의 JSON 배열이어야 합니다." -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "마지막 TOPT 타임 코드" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "API 토큰" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "마지막으로 데이터를 다운로드한 시간" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "사용자 프로파일" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "사용자 프로파일" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "공개 키" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "서명 카운터" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "요청 시간" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "상태" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "보류 중" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "승인됨" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "거절됨" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "이유" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "조직 가입 요청" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "조직 가입 요청" @@ -2571,15 +2578,15 @@ msgstr "" msgid "submission time" msgstr "제출 시간" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "실행 시간" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "메모리 사용량" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "획득 포인트" @@ -2587,141 +2594,141 @@ msgstr "획득 포인트" msgid "submission language" msgstr "제출 언어" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "상태" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "결과" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "컴파일 에러" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "batched 테스트 케이스" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "테스크 케이스 점수" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "테스트 케이스 총 점수" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "pretest에서만 채점됨" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "모든 제출 답안 보기" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "다른 사람의 제출물 다시 제출" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "제출" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "관련된 제출" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "소스 코드" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "test case ID" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "상태 flag" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "획득 가능한 포인트" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "batch number" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "채점 피드백" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "확장된 심사 피드백" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "프로그램 출력" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "제출 테스트 케이스" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "제출 테스트 케이스" @@ -2785,16 +2792,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "[topage]의 페이지 [page]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "뉴비" @@ -2851,40 +2848,64 @@ msgstr "제출 데이터 준비" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "스팸으로 인해 이 이메일 제공업체는 허용되지 않습니다. 다른 메일 주소를 사용해 주세요." + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "{total_pages}의 페이지 {page_number}" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "빈 batches는 허용되지 않습니다." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "비배치 사례 #%d에 대해 포인트를 정의해야 합니다." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "테스트 케이스 %d에 대한 입력 파일이 존재하지 않습니다.: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "테스트 케이스 %d에 대한 출력 파일이 존재하지 않습니다.: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "일괄 시작 사례 #%d에 점수가 필요합니다." -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "#%d의 경우 일괄 처리를 종료하려고 시도합니다." -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "압축 파일 경로를 어떻게 손상하셨나요?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2936,45 +2957,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "게시물 %d 페이지" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "장난치고 있어?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "투표하기 전에 최소한 하나의 문제를 해결해야 합니다." -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "이미 투표하셨습니다." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "사이트에서 편집" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "코멘트 수정" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "그런 대회는 존재하지 않습니다" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "키 %s로는 대회를 찾을 수 없습니다." @@ -2983,111 +3004,111 @@ msgstr "키 %s로는 대회를 찾을 수 없습니다." msgid "Contests" msgstr "대회" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "그런 대회를 찾을 수 있습니다." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "%s 대회 접근이 거부되었습니다" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "콘테스트 복제" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "%s의 복제된 콘테스트" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "현재 진행중인 대회가 아닙니다" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "%s는 현재 진행중이 아닙니다." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "당신은 이 콘테스트에 대해 무료로 선언되지 않았습니다. 당신은 이 콘테스트에 영구적으로 참가할 수 없습니다." -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "\"%s\"에 대한 액세스 코드를 입력하십시오" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "현재 대회 %s에 참가중이 아닙니다." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "%(month)s의 콘테스트" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "Y년 n월" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "%s 순위" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "실시간" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "참여" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "%s MOSS 결과" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "대회 태그: %s" @@ -3116,245 +3137,253 @@ msgstr "손상된 페이지 %s" msgid "Runtimes" msgstr "런타임" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "존재하지 않는 조직" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "%s 조직을 찾을 수 없습니다." -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "그러한 조직을 찾을 수 없습니다." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "조직" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s 멤버" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "조직 가입" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "이미 조직에 가입되어 있습니다." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "이 조직은 공개되어 있지 않습니다." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "조직 탈퇴" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "%s에 있지 않습니다." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "%s 에 가입을 신청 할 수 없습니다" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "이미 %s에 가입 신청을 했습니다." -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "%s 가입 신청" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "가입 신청 세부 사항" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "%s 가입 신청 가입" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "당신의 조직은 %d명의 회원만 더 가입이 가능합니다." -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "%d명의 사용자 가입 승인이 불가합니다." -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "%d명 사용자 승인." -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d명 거부." -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "%s 편집중" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "조직 편집이 불가합니다" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "조직을 편집할 권한이 없습니다." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "조직 사용자를 탈퇴시킬 권한이 없습니다." -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "이 사용자를 탈퇴시킬 수 없습니다" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "탈퇴시키려는 사용자가 존재하지 않습니다." -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "삭제하려는 유저: %s 가 조직에 없습니다." -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "존재하지 않는 문제" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "%s 문제를 찾을 수 없습니다." -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "그런 사설이 없습니다" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "제출이 너무 많습니다" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "이 문제에 허용된 제출 횟수를 초과했습니다." -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "문제 복사" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "검사기의 인자가 잘못된 JSON입니다." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "Zip 파일이 올바르지 않습니다." -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "{0}에 대한 제출 비교" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3380,51 +3409,51 @@ msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "%s를 위한 best 솔루션" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "%(contest)s의 %(problem)s에 대한 최상의 솔루션" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "사용자 이름은 문자, 숫자, 또는 밑줄을 포함해야 합니다." -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "시간대" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "선호하는 언어" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "뉴스레터에 구독하시겠습니까?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "이메일 주소 %s는 사용중입니다. 하나의 주소에 대해 한번만 가입이 허용됩니다." -#: judge/views/register.py:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "스팸으로 인해 이 이메일 제공업체는 허용되지 않습니다. 다른 메일 주소를 사용해 주세요." - -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "등록" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "인증 실패" @@ -3436,77 +3465,77 @@ msgstr "추가 사항" msgid "Language statistics" msgstr "언어 통계" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "현재 상태" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "버전 표" +msgid "Version" +msgstr "버전" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "%(user)s의 %(problem)s 제출" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "모든 제출들" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "내 모든 제출들" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "%s의 모든 제출물" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "%(problem)s에 대한 나의 제출" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(problem)s에 대한 %(user)s의 제출" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "%(contest)s 에 제출한 내 답안들" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3561,102 +3590,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "새 티켓 메시지: %s" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "이중 인증 활성화" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "이중 인증 비활성화" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "유효하지 않은 이름" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "직원은 2FA를 비활성화할 수 없습니다" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "해당 사용자를 찾을 수 없습니다" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "사용자 핸들 \"%s\"이 없습니다." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "내 계정" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "로그인" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "Y년 n월 j일 G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "프로필 편집이 불가합니다" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "사이트에서 업데이트됨" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "프로필 수정" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "사용자에 대해 생성된 API 토큰" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "사용자를 위해 생성된 스크래치 코드" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "순위표" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "정말로 모든 답안을 재채점 하시겠습니까?" @@ -3682,13 +3766,13 @@ msgstr "종료" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "비활성화" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "활성화" @@ -3708,49 +3792,50 @@ msgstr "" msgid "Edit user" msgstr "사용자 수정" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "로그아웃" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "로그인" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "또는" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "회원 가입" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "관전" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "이 사이트는 자바 스크립트를 활성화시켜야 정상적으로 작동합니다." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "수정" @@ -3950,15 +4035,15 @@ msgstr "점수" msgid "No votes" msgstr "투표자 없음" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4039,7 +4124,7 @@ msgstr "달력" msgid "Info" msgstr "정보" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "통계" @@ -4251,7 +4336,7 @@ msgstr "정답률" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "유저" @@ -4259,7 +4344,7 @@ msgstr "유저" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4423,19 +4508,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "이 참여의 자격을 취소하시겠습니까?" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "사용자 참여 보기" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "조직들 표시" @@ -4606,6 +4691,17 @@ msgstr "시간:" msgid "Reason:" msgstr "이유:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "사용자" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "시간" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4622,7 +4718,7 @@ msgid "There are no requests to approve." msgstr "승인할 요청이 없습니다." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "삭제하시겠습니까?" @@ -4658,59 +4754,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "YAML 보기" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "생성자 인자" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "사전 테스트?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "새 케이스 추가" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4727,98 +4831,98 @@ msgid "Author:" msgid_plural "Authors:" msgstr[0] "저자:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "인기 있는 문제" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "분류" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "유형" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "아이디로 필터링:" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "시작하는 아이디:" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "끝나는 아이디:" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "언어로 필터링:" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "선택한 제출 재채점" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "모두 재검토" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "%(count)s개의 제출이 재검토 될 예정입니다." -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "%(count)s개의 제출을 재검토를 원하십니까?" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "모든 제출 재검토" @@ -4894,11 +4998,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "시간 제한:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "메모리 제한:" @@ -4933,14 +5037,6 @@ msgstr "설명 요구" msgid "Report an issue" msgstr "이슈 등록" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "시간 초과:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "메모리 초과:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "문제 검색" @@ -4978,8 +5074,8 @@ msgstr "문제 유형" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "이동" @@ -4988,7 +5084,7 @@ msgid "Random" msgstr "무작위" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "아이디" @@ -5000,30 +5096,30 @@ msgstr "결과" msgid "Date" msgstr "날짜" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "소스 코드는 65536자를 넘을 수 없습니다." -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "%(left)s 제출 횟수가 남았습니다" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "0번의 제출 횟수가 남았습니다" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5126,6 +5222,66 @@ msgstr[0] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5229,7 +5385,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "계속" @@ -5242,36 +5398,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "이메일" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "지도에서 고르기" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "기본 언어" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "등록" @@ -5305,7 +5465,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5313,17 +5473,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5332,7 +5492,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5350,12 +5510,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5424,8 +5584,8 @@ msgid "Judges" msgstr "채첨" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "버전 표" +msgid "Versions" +msgstr "버전" #: templates/submission/info-base.html:8 #, python-format @@ -5449,27 +5609,27 @@ msgstr "채점 도중 내부 에러가 발생했습니다." msgid "Error information" msgstr "에러 정보" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "상태 별로 필터링" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "언어로 필터링" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "제출 필터" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "합계:" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "연결이 끊겼습니다. 최신 업데이트를 표시하려면 새로고침하세요." @@ -5506,7 +5666,7 @@ msgstr "상태 보기" msgid "View raw source" msgstr "윈시 소스 보기" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "다시 제출" @@ -5592,15 +5752,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5633,32 +5793,32 @@ msgstr "재개됨: " msgid "Closed: " msgstr "닫힘: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "데스크탑 알람 사용하기" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "마감된 티켓 숨기기" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "내 티켓만 보기" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "파일링 사용자" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "인증된 사용자" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "제목" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "인증된 사용자" @@ -5709,152 +5869,152 @@ msgstr "인증된 사용자 노트" msgid "Nothing here." msgstr "표시할 것이 없습니다." -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "순위" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "손쉽게 검색..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "API 토큰을 생성하거나 재생성 하겠습니까?" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "이전 API 토큰이 무효화됩니다." -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "또한 2단계 인증 없이 계정에 접근할 수 있습니다." -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "이 페이지를 나간 후에는 API 토큰을 볼 수 없습니다." -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "생성 중..." -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "삭제" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "API 토큰을 삭제하겠습니까?" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "생성" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "보안 키를 삭제하겠습니까?" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "자기 소개:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "가장 가까운 대도시를 선택하세요" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "시간대:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "언어:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "편집기 테마:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "수학 엔진:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "아바타 변경" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "비밀번호 변경" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "2단계 인증이 활성화 되었습니다:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "API 토큰:" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "새로 고침" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "숨기기" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "2단계 인증이 활성화 되었습니다:" + +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "기본 코드:" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "숨기기" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "2단계 인증이 비활성화 되었습니다:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "API 토큰:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "보안 키:" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "삭제" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "해당 키의 이름을 입력하세요" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "추가" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "사용자 스크립트:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "프로필 업데이트" diff --git a/locale/ko/LC_MESSAGES/djangojs.po b/locale/ko/LC_MESSAGES/djangojs.po index ff20d7dbb4..27927784a6 100644 --- a/locale/ko/LC_MESSAGES/djangojs.po +++ b/locale/ko/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Korean\n" "Language: ko_KR\n" @@ -17,13 +17,13 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d일 %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/lt/LC_MESSAGES/django.po b/locale/lt/LC_MESSAGES/django.po index 078e4d32b3..7d4e643f32 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:49\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Lithuanian\n" "Language: lt_LT\n" @@ -17,99 +17,103 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." @@ -118,11 +122,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/comments.py:43 -msgid "Hide comments" +#: judge/admin/comments.py:47 +msgid "Unhide comments" msgstr "" -#: judge/admin/comments.py:47 +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." @@ -131,12 +135,9 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "" #: judge/admin/contest.py:31 @@ -144,22 +145,22 @@ msgid "Included contests" msgstr "" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "" @@ -191,7 +192,11 @@ msgstr "" msgid "Justice" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -200,11 +205,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -213,11 +218,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -226,11 +231,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -239,11 +244,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -252,7 +253,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -261,39 +266,36 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "" @@ -314,8 +316,8 @@ msgid "Taxonomy" msgstr "" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -324,9 +326,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "" @@ -334,11 +335,16 @@ msgstr "" msgid "History" msgstr "" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -347,11 +353,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -360,11 +366,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:207 -msgid "Mark problems as public" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -373,43 +379,31 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" +#: judge/admin/profile.py:119 +msgid "date joined" msgstr "" -#: judge/admin/profile.py:113 -msgid "date joined" +#: judge/admin/profile.py:123 +msgid "Recalculate scores" msgstr "" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." @@ -418,30 +412,26 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "" @@ -473,19 +463,23 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -494,38 +488,38 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "" -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:222 +msgid "time" msgstr "" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:226 +msgid "memory" msgstr "" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:238 -msgid "Memory" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" msgstr "" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -549,7 +543,8 @@ msgstr "" msgid "Comment body" msgstr "" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -646,7 +641,7 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." @@ -655,31 +650,31 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." @@ -688,83 +683,91 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -773,108 +776,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" +#: judge/models/choices.py:24 +msgid "Follow site theme" msgstr "" #: judge/models/choices.py:60 -msgid "SVG only" +msgid "Leave as LaTeX" msgstr "" #: judge/models/choices.py:61 -msgid "MathML only" +msgid "SVG only" msgstr "" #: judge/models/choices.py:62 -msgid "MathJax with SVG fallback" +msgid "MathML only" msgstr "" #: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "" + +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -930,16 +939,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -947,7 +951,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -983,12 +987,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "" @@ -996,12 +1000,12 @@ msgstr "" msgid "end time" msgstr "" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1121,11 +1125,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1155,7 +1159,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1175,7 +1179,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1188,7 +1192,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1236,213 +1240,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1494,7 +1498,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1547,7 +1551,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1559,7 +1563,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1596,7 +1600,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1620,280 +1624,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1919,7 +1910,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1966,7 +1957,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -2014,6 +2005,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2091,7 +2094,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "" @@ -2132,7 +2135,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2157,26 +2160,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2186,200 +2193,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2622,15 +2629,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2638,141 +2645,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2836,16 +2843,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2902,40 +2899,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2996,45 +3017,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3043,111 +3064,111 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3176,76 +3197,76 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." @@ -3254,7 +3275,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." @@ -3263,7 +3284,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -3272,7 +3293,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -3281,152 +3302,160 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3455,51 +3484,51 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3511,77 +3540,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3636,102 +3665,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3757,13 +3841,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3783,49 +3867,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -4025,15 +4110,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4114,7 +4199,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4335,7 +4420,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4343,7 +4428,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4510,19 +4595,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4693,6 +4778,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4709,7 +4805,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4745,59 +4841,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4817,86 +4921,86 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." @@ -4905,7 +5009,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" @@ -4914,7 +5018,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4993,11 +5097,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "" @@ -5038,14 +5142,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5083,8 +5179,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5093,7 +5189,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5105,20 +5201,20 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -5127,11 +5223,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5240,6 +5336,72 @@ msgstr[3] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5343,7 +5505,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5356,36 +5518,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5419,7 +5585,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5427,17 +5593,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5446,7 +5612,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5464,12 +5630,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5538,7 +5704,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5563,27 +5729,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5620,7 +5786,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5706,15 +5872,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5747,23 +5913,23 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5771,11 +5937,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5826,152 +5992,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/lt/LC_MESSAGES/djangojs.po b/locale/lt/LC_MESSAGES/djangojs.po index b18a28b38f..ab56a81ef7 100644 --- a/locale/lt/LC_MESSAGES/djangojs.po +++ b/locale/lt/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Lithuanian\n" "Language: lt_LT\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" @@ -26,7 +26,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "" diff --git a/locale/nl/LC_MESSAGES/django.po b/locale/nl/LC_MESSAGES/django.po index 62e854aefd..d350868013 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:48\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -17,122 +17,123 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:43 -msgid "Hide comments" +#: judge/admin/comments.py:47 +msgid "Unhide comments" msgstr "" -#: judge/admin/comments.py:47 +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "" #: judge/admin/contest.py:31 @@ -140,22 +141,22 @@ msgid "Included contests" msgstr "" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "" @@ -187,97 +188,98 @@ msgstr "" msgid "Justice" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -308,9 +310,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "" @@ -318,106 +319,95 @@ msgstr "" msgid "History" msgstr "" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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 -msgid "Mark problems as public" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" +#: judge/admin/profile.py:119 +msgid "date joined" msgstr "" -#: judge/admin/profile.py:113 -msgid "date joined" +#: judge/admin/profile.py:123 +msgid "Recalculate scores" msgstr "" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "" -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:222 +msgid "time" msgstr "" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:226 +msgid "memory" msgstr "" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:238 -msgid "Memory" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" msgstr "" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -523,7 +517,8 @@ msgstr "" msgid "Comment body" msgstr "" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -739,108 +742,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" +#: judge/models/choices.py:24 +msgid "Follow site theme" msgstr "" #: judge/models/choices.py:60 -msgid "SVG only" +msgid "Leave as LaTeX" msgstr "" #: judge/models/choices.py:61 -msgid "MathML only" +msgid "SVG only" msgstr "" #: judge/models/choices.py:62 -msgid "MathJax with SVG fallback" +msgid "MathML only" msgstr "" #: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "" + +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -896,16 +905,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -913,7 +917,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "" @@ -962,12 +966,12 @@ msgstr "" msgid "end time" msgstr "" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1141,7 +1145,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1154,7 +1158,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1202,213 +1206,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1460,7 +1464,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1513,7 +1517,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1525,7 +1529,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1562,7 +1566,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1586,280 +1590,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,7 +1876,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1932,7 +1923,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -1980,6 +1971,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "" @@ -2098,7 +2101,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2588,15 +2595,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2604,141 +2611,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2802,16 +2809,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2868,40 +2865,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2956,45 +2977,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3003,111 +3024,111 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3136,249 +3157,257 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3461,77 +3490,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3586,102 +3615,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3707,13 +3791,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3733,49 +3817,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -3975,15 +4060,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4064,7 +4149,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4279,7 +4364,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4287,7 +4372,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4452,19 +4537,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4635,6 +4720,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4687,59 +4783,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "" msgstr[1] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4927,11 +5031,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "" @@ -4968,14 +5072,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5013,8 +5109,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5035,31 +5131,31 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5267,7 +5425,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5280,36 +5438,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5343,7 +5505,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5351,17 +5513,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5462,7 +5624,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5487,27 +5649,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5544,7 +5706,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5630,15 +5792,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5671,33 +5833,33 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5748,152 +5910,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/nl/LC_MESSAGES/djangojs.po b/locale/nl/LC_MESSAGES/djangojs.po index f673516efa..996d1763b4 100644 --- a/locale/nl/LC_MESSAGES/djangojs.po +++ b/locale/nl/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Dutch\n" "Language: nl_NL\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 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:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "" diff --git a/locale/pl/LC_MESSAGES/django.po b/locale/pl/LC_MESSAGES/django.po index 221ed2c347..7b9aadd32f 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -17,99 +17,103 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Kataloński" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Niemiecki" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Grecki" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Angielski" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Hiszpański" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Chorwacki" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Węgierski" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japoński" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Koreański" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" -msgstr "" +msgstr "Brazylijski Portugalski" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Rumuński" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Rosyjski" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Serbski (alfabet łaciński)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turecki" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Wietnamski" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Chiński Uproszczony" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Chiński Tradycyjny" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "Aktywowano pomyślnie!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "Rejestracja zakończona" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "Rejestracja niedozwolona" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Strona główna" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Zawartość" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Ukryj komentarze" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." @@ -118,11 +122,11 @@ msgstr[1] "%d komentarze zostały pomyślnie dodane." msgstr[2] "%d komentarzy zostało pomyślnie dodanych." msgstr[3] "%d komentarzy zostało pomyślnie dodanych." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Ukryj komentarze" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Pokaż komentarze" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." @@ -131,37 +135,34 @@ msgstr[1] "%d komentarz został pomyślnie ukryty." msgstr[2] "%d komentarzy zostało pomyślnie ukrytych." msgstr[3] "%d komentarzy zostało pomyślnie ukrytych." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Pokaż komentarze" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Dołączona strona" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "powiązana strona" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Załączniki" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Problem" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Problemy" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" -msgstr "" +msgstr "Powtórz Osądzenie" #: judge/admin/contest.py:122 msgid "Settings" @@ -189,70 +190,74 @@ msgstr "Dostęp" #: judge/admin/contest.py:131 judge/admin/problem.py:136 msgid "Justice" -msgstr "" +msgstr "Sprawiedliwość" + +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Oznacz konkursy jako widoczne" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d konkurs został oznaczony jako widoczny." +msgstr[1] "%d konkursy zostały oznaczone jako widoczne." +msgstr[2] "%d konkursów zostało oznaczonych jako widoczne." +msgstr[3] "%d konkursów zostało oznaczonych jako widoczne." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Oznacz konkursy jako ukryte" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d konkurs został oznaczony jako ukryty." +msgstr[1] "%d konkursy zostały oznaczone jako ukryte." +msgstr[2] "%d konkursów zostało oznaczonych jako ukryte." +msgstr[3] "%d konkursów zostało oznaczonych jako ukryte." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Zablokuj zgłoszenia konkursu" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d konkurs pomyślnie zablokowany." +msgstr[1] "%d konkursy pomyślnie zablokowane." +msgstr[2] "%d konkursów pomyślnie zablokowanych." +msgstr[3] "%d konkursów pomyślnie zablokowanych." -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Odblokuj zgłoszenia konkursu" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d konkurs pomyślnie odblokowany." +msgstr[1] "%d konkursy pomyślnie odblokowane." +msgstr[2] "%d konkursów pomyślnie odblokowanych." +msgstr[3] "%d konkursów pomyślnie odblokowanych." -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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 zgłoszenie zostało pomyślnie zaplanowane do ponownego sprawdzenia." +msgstr[1] "%d zgłoszenia zostały pomyślnie zaplanowane do ponownego sprawdzenia." +msgstr[2] "%d zgłoszeń zostało pomyślnie zaplanowanych do ponownego sprawdzenia." +msgstr[3] "%d zgłoszeń zostało pomyślnie zaplanowanych do ponownego sprawdzenia." + +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Przelicz wyniki" -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -261,45 +266,42 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "nazwa użytkownika" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" -msgstr "" +msgstr "wirtualny" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" -msgstr "" +msgstr "ścieżka linku" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Podsumowanie" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "użytkownik" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "obiekt" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Zobacz na stronie" #: judge/admin/problem.py:21 msgid "Edit reason" -msgstr "" +msgstr "Powód zmiany" #: judge/admin/problem.py:30 msgid "Describe the changes you made (optional)" @@ -314,8 +316,8 @@ msgid "Taxonomy" msgstr "Taksonomia" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Punkty" @@ -324,9 +326,8 @@ msgstr "Punkty" msgid "Limits" msgstr "Limity" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Język" @@ -334,24 +335,29 @@ msgstr "Język" msgid "History" msgstr "Historia" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Autorzy" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "autorzy" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Ustaw datę publikacji" -#: judge/admin/problem.py:193 +#: 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[3] "Daty publikacji %d zgłoszeń zostały pomyślnie zaktualizowane." -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "Ustaw datę publikacji" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Oznacz problemy jako publiczne" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -360,11 +366,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "Oznacz problemy jako publiczne" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -373,43 +379,31 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "problem" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "strefa czasowa" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Użytkownik" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "adres e-mail" -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Adres e-mail" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Strefa czasowa" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "data dołączenia" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Przelicz punktację" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." @@ -418,30 +412,26 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Przelicz punktację" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Opis" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Informacje" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Możliwości" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Brak" @@ -473,19 +463,23 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s w %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Nie masz uprawnień, aby edytować tą witrynę." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -494,38 +488,38 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "kod problemu" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Kod problemu" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "nazwa problemu" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Nazwa problemu" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "czas" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Czas" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "pamięć" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Pamięć" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "język" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -549,7 +543,8 @@ msgstr "Online Judge" msgid "Comment body" msgstr "Treść komentarza" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -646,7 +641,7 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "IOI (przed 2016 r.)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." @@ -655,31 +650,31 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Nieprawidłowy token uwierzytelniania dwuskładnikowego." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." @@ -688,83 +683,91 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Pobrać komentarze?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Każdy sędzia" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Nazwa użytkownika" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Hasło" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Nieprawidłowa długość kodu." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -773,108 +776,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "w {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Zostaw jako LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Tylko SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Tylko MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax z konwersją SVG" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Wykryj najlepszą jakość" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Jasny" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Ciemny" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "komentator" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "czas wysłania" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "powiązana strona" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "głosów" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "treść komentarza" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "rodzic" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "komentarz" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "komentarze" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "głos na komentarz" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "głosy na komentarz" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -930,16 +939,11 @@ msgstr "ID konkursu" msgid "contest name" msgstr "nazwa konkursu" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "autorzy" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -947,7 +951,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "testerzy" @@ -983,12 +987,12 @@ msgstr "" msgid "description" msgstr "opis" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "problemy" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "czas rozpoczęcia" @@ -996,12 +1000,12 @@ msgstr "czas rozpoczęcia" msgid "end time" msgstr "godzina zakończenia" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "limit czasowy" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "publicznie widoczny" @@ -1121,11 +1125,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1155,7 +1159,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1175,7 +1179,7 @@ msgstr "" msgid "contest summary" msgstr "podsumowanie konkursu" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1188,7 +1192,7 @@ msgstr "kod dostępu" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1236,213 +1240,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "konkurs" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "konkursy" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "wynik" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "punkty" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "częściowe" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "zgłoszenie" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "ocena" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1494,7 +1498,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1547,7 +1551,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1559,7 +1563,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1596,7 +1600,7 @@ msgstr "Adres URL do ikony." msgid "license text" msgstr "tekst licencji" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "licencja" @@ -1620,280 +1624,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "kod problemu" - #: judge/models/problem.py:119 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:120 -msgid "problem name" -msgstr "nazwa problemu" - #: judge/models/problem.py:121 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:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "treść problemu" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "twórcy" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "limit pamięci" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "dozwolone języki" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "język" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "rozwiązanie" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "rozwiązania" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1919,7 +1910,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1966,7 +1957,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -2014,6 +2005,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2091,7 +2094,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organizacja" @@ -2132,7 +2135,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2157,26 +2160,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2186,200 +2193,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2622,15 +2629,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2638,141 +2645,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "wynik" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "błędy kompilacji" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "zgłoszenia" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "kod źródłowy" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2836,16 +2843,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2902,40 +2899,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2996,45 +3017,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3043,111 +3064,111 @@ msgstr "" msgid "Contests" msgstr "Konkursy" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3176,76 +3197,76 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." @@ -3254,7 +3275,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." @@ -3263,7 +3284,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -3272,7 +3293,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -3281,152 +3302,160 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3455,51 +3484,51 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Strefa czasowa" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3511,77 +3540,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3636,102 +3665,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Logowanie" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3757,13 +3841,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3783,49 +3867,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -4025,15 +4110,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4114,7 +4199,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4335,7 +4420,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4343,7 +4428,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4510,19 +4595,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4693,6 +4778,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Użytkownik" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Czas" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4709,7 +4805,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4745,59 +4841,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4817,86 +4921,86 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." @@ -4905,7 +5009,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" @@ -4914,7 +5018,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4993,13 +5097,13 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" -msgstr "" +msgstr "Limit czasowy:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" -msgstr "" +msgstr "Limit pamięci:" #: templates/problem/problem.html:246 msgid "Problem type" @@ -5038,14 +5142,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5083,8 +5179,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5093,7 +5189,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5105,20 +5201,20 @@ msgstr "Wynik" msgid "Date" msgstr "Data" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -5127,11 +5223,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5240,6 +5336,72 @@ msgstr[3] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5343,7 +5505,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5356,36 +5518,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Adres e-mail" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5419,7 +5585,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5427,17 +5593,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5446,7 +5612,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5464,12 +5630,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5538,7 +5704,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5563,27 +5729,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5620,7 +5786,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5706,15 +5872,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5747,23 +5913,23 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5771,11 +5937,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5826,152 +5992,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Strefa czasowa:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Język:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/pl/LC_MESSAGES/djangojs.po b/locale/pl/LC_MESSAGES/djangojs.po index d5f3374f19..a712563966 100644 --- a/locale/pl/LC_MESSAGES/djangojs.po +++ b/locale/pl/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:52\n" "Last-Translator: \n" "Language-Team: Polish\n" "Language: pl_PL\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" @@ -26,7 +26,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "%d dni %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/pt/LC_MESSAGES/django.po b/locale/pt/LC_MESSAGES/django.po index 07cf6c310f..0b613a69ea 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:49\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -17,122 +17,123 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:43 -msgid "Hide comments" +#: judge/admin/comments.py:47 +msgid "Unhide comments" msgstr "" -#: judge/admin/comments.py:47 +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "" #: judge/admin/contest.py:31 @@ -140,22 +141,22 @@ msgid "Included contests" msgstr "" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "" @@ -187,97 +188,98 @@ msgstr "" msgid "Justice" msgstr "" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" msgstr "" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" msgstr "" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" msgstr "" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "" @@ -308,9 +310,8 @@ msgstr "" msgid "Limits" msgstr "" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "" @@ -318,106 +319,95 @@ msgstr "" msgid "History" msgstr "" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "" msgstr[1] "" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" msgstr "" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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 -msgid "Mark problems as public" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" msgstr "" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" +#: judge/admin/profile.py:119 +msgid "date joined" msgstr "" -#: judge/admin/profile.py:113 -msgid "date joined" +#: judge/admin/profile.py:123 +msgid "Recalculate scores" msgstr "" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "" msgstr[1] "" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "" @@ -449,57 +439,61 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" msgstr "" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "" msgstr[1] "" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "" -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:222 +msgid "time" msgstr "" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:226 +msgid "memory" msgstr "" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:238 -msgid "Memory" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" msgstr "" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -523,7 +517,8 @@ msgstr "" msgid "Comment body" msgstr "" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -739,108 +742,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 -msgid "Leave as LaTeX" +#: judge/models/choices.py:24 +msgid "Follow site theme" msgstr "" #: judge/models/choices.py:60 -msgid "SVG only" +msgid "Leave as LaTeX" msgstr "" #: judge/models/choices.py:61 -msgid "MathML only" +msgid "SVG only" msgstr "" #: judge/models/choices.py:62 -msgid "MathJax with SVG fallback" +msgid "MathML only" msgstr "" #: judge/models/choices.py:63 +msgid "MathJax with SVG fallback" +msgstr "" + +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -896,16 +905,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -913,7 +917,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "" @@ -962,12 +966,12 @@ msgstr "" msgid "end time" msgstr "" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1141,7 +1145,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1154,7 +1158,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1202,213 +1206,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1460,7 +1464,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1513,7 +1517,7 @@ msgstr "" msgid "problem type" msgstr "" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "" @@ -1525,7 +1529,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1562,7 +1566,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "" @@ -1586,280 +1590,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,7 +1876,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1932,7 +1923,7 @@ msgstr "" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -1980,6 +1971,18 @@ msgstr "" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "" @@ -2098,7 +2101,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2588,15 +2595,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2604,141 +2611,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2802,16 +2809,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2868,40 +2865,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2956,45 +2977,45 @@ 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3003,111 +3024,111 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3136,249 +3157,257 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3461,77 +3490,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3586,102 +3615,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3707,13 +3791,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3733,49 +3817,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "" @@ -3975,15 +4060,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4064,7 +4149,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4279,7 +4364,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4287,7 +4372,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4452,19 +4537,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4635,6 +4720,17 @@ msgstr "" msgid "Reason:" msgstr "" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4687,59 +4783,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "" msgstr[1] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4927,11 +5031,11 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "" @@ -4968,14 +5072,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5013,8 +5109,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5035,31 +5131,31 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5267,7 +5425,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5280,36 +5438,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5343,7 +5505,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5351,17 +5513,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5462,7 +5624,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5487,27 +5649,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5544,7 +5706,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5630,15 +5792,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5671,33 +5833,33 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5748,152 +5910,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/pt/LC_MESSAGES/djangojs.po b/locale/pt/LC_MESSAGES/djangojs.po index 4d849f5f55..194238e1f0 100644 --- a/locale/pt/LC_MESSAGES/djangojs.po +++ b/locale/pt/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:44\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:52\n" "Last-Translator: \n" "Language-Team: Portuguese, Brazilian\n" "Language: pt_BR\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 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:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "" diff --git a/locale/ro/LC_MESSAGES/django.po b/locale/ro/LC_MESSAGES/django.po index 3bd0ffcb38..2f884e5872 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -17,99 +17,103 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Catalană" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Germană" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Greacă" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Engleză" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Spaniolă" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Franceză" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Croată" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Maghiară" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japoneză" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Coreeană" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Portugheză Braziliană" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Română" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Rusă" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Sârbă (Latină)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turcă" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnameză" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Chineză Simplificată" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Chineză Tradițională" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Start" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Conținut" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Ascunde comentarii" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." @@ -117,11 +121,11 @@ msgstr[0] "%d comentariu ascuns cu succes." msgstr[1] "%d comentarii ascunse cu succes." msgstr[2] "%d comentarii ascunse cu succes." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Ascunde comentarii" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Reafișează comentariile" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." @@ -129,35 +133,32 @@ msgstr[0] "%d comentariu ascuns cu succes." msgstr[1] "%d comentarii ascunse cu succes." msgstr[2] "%d comentarii ascunse cu succes." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Reafișează comentariile" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Pagină asociată" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "pagină asociată" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Concursuri incluse" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Problemă" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Probleme" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Rejurizează" @@ -189,7 +190,11 @@ msgstr "Acces" msgid "Justice" msgstr "Justiție" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Marchează concursurile ca și vizibile" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -197,11 +202,11 @@ msgstr[0] "%d concurs a fost marcat ca public cu succes." msgstr[1] "%d concursuri au fost marcate ca publice cu succes." msgstr[2] "%d concursuri au fost marcate ca publice cu succes." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Marchează concursurile ca și vizibile" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Marchează concursurile ca ascunse" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -209,11 +214,11 @@ msgstr[0] "%d concurs a fost marcat ca privat cu succes." msgstr[1] "%d concursuri au fost marcate ca private cu succes." msgstr[2] "%d concursuri au fost marcate ca private cu succes." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "Marchează concursurile ca ascunse" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Blochează submiterea în concurs" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -221,11 +226,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "Blochează submiterea în concurs" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Deblochează submisiile către concurs" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -233,11 +238,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "Deblochează submisiile către concurs" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -245,7 +246,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Recalculează rezultatele" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -253,39 +258,36 @@ msgstr[0] "%d participare a fost recalculată." msgstr[1] "%d participări au fost recalculate." msgstr[2] "%d participări au fost recalculate." -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "Recalculează rezultatele" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "nume de utilizator" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "virtual" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "calea link-ului" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Rezumat" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "utilizator" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "obiect" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Vezi pe site" @@ -306,8 +308,8 @@ msgid "Taxonomy" msgstr "Taxonomie" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Puncte" @@ -316,9 +318,8 @@ msgstr "Puncte" msgid "Limits" msgstr "Limite" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Limbaj" @@ -326,11 +327,16 @@ msgstr "Limbaj" msgid "History" msgstr "Istoric" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Autori" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "autori" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Setează data publicării la acest moment" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -338,11 +344,11 @@ msgstr[0] "Data publicării pentru %d problemă a fost actualizată cu succes." msgstr[1] "Data publicării pentru %d probleme a fost actualizată cu succes." msgstr[2] "Data publicării pentru %d probleme a fost actualizată cu succes." -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "Setează data publicării la acest moment" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Marchează probleme ca publice" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -350,11 +356,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:207 -msgid "Mark problems as public" -msgstr "Marchează probleme ca publice" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Marchează probleme ca private" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -362,43 +368,31 @@ 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:217 -msgid "Mark problems as private" -msgstr "Marchează probleme ca private" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "problemă" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "fus orar" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Utilizator" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Email" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "email" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Fus orar" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "data alăturării" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Recalculați scorurile" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." @@ -406,30 +400,26 @@ msgstr[0] "%d utilizator au scoruri recalculate." msgstr[1] "%d utilizatorii au scoruri recalculate." msgstr[2] "%d utilizatorii au scoruri recalculate." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Recalculați scorurile" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "Regenerează" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Descriere" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Informație" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Capabilități" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Gol" @@ -461,19 +451,23 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s în %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Rejurizează submisiile selectate" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Nu aveți permisiunea de a rejuriza submisii." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Nu aveți permisiunea de a rejuriza ATÂT de multe submisii." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Rejurizează submisiile selectate" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Repunctează submisiile selectate" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -481,38 +475,38 @@ msgstr[0] "%d submisie a fost repunctată cu succes." msgstr[1] "%d submisii au fost repunctate cu succes." msgstr[2] "%d submisii au fost repunctate cu succes." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Repunctează submisiile selectate" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "codul problemei" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Codul problemei" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "numele problemei" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Numele problemei" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "ora" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Ora" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "memorie" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Memorie" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "limbaj" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "" @@ -536,7 +530,8 @@ msgstr "Online Judge" msgid "Comment body" msgstr "Comentariu" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -631,7 +626,7 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "Olimpiada Internațională de Informatică (înainte de 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." @@ -639,31 +634,31 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Activează funcționalitățile experimentale" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "Trebuie să rezolvi cel puțin o problemă înainte de a putea să-ți actualizezi profilul." -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." @@ -671,83 +666,91 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Descarci comentariile?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Descarci submisiile?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Filtrează după rezultat:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Orice evaluator" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Nume de utilizator" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Parolă" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Codul problemei trebuie să fie ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "O problemă cu acest cod există deja." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Identificatorul de concurs trebuie să fie ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Un concurs cu această cheie există deja." @@ -756,108 +759,114 @@ msgstr "Un concurs cu această cheie există deja." msgid "N j, Y, g:i a" msgstr "j N Y, \\o\\r\\a G:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "pe {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "Nu are evaluări" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Lasă ca LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Doar SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Doar MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax cu SVG ca fallback" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Detectează cea mai bună calitate" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "Codul paginii trebuie să fie ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "autorul comentariului" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "timpul postării" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "pagină asociată" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "voturi" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "corpul comentariului" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "ascuns" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "părinte" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "comentariu" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "comentarii" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Editorial pentru %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "votul comentariului" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "voturile comentariului" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -913,16 +922,11 @@ msgstr "ID concurs" msgid "contest name" msgstr "nume concurs" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "autori" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "Acești utilizatori vor putea edita concursul." -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "curatori" @@ -930,7 +934,7 @@ msgstr "curatori" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "Acești utilizatori vor putea edita concursul, dar nu vor fi listați ca autori." -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "" @@ -966,12 +970,12 @@ msgstr "Acești utilizatori vor putea urmări concursul, dar nu vor vedea proble msgid "description" msgstr "descriere" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "probleme" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "timp de început" @@ -979,12 +983,12 @@ msgstr "timp de început" msgid "end time" msgstr "timp de sfârșit" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "limită de timp" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "vizibil public" @@ -1104,11 +1108,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "privat pentru organizații" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "organizații" @@ -1138,7 +1142,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "Imagine OpenGraph" @@ -1158,7 +1162,7 @@ msgstr "" msgid "contest summary" msgstr "rezumat concurs" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1171,7 +1175,7 @@ msgstr "cod de acces" msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." msgstr "Un cod opțional cerut concurențiilor înainte de a se putea alătura concursului. Lasă necompletat pentru a dezactiva." -#: judge/models/contest.py:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "persoane non-grata" @@ -1219,213 +1223,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Editează concursurile proprii" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Editează toate concursurile" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "Clonează concursul" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Evaluează concursurile" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "concurs" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "concursuri" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "scor" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "este descalificat" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 înseamnă participare non-virtuală, altfel a n-a participare virtuală." -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "participarea la concurs" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "participările la concurs" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "puncte" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "parțial" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "este pretestată" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Numărul maxim de submisii pentru această problemă sau lasă necompletat pentru nicio limită." -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "De ce să incluzi o problemă pentru care nu poți trimite rezolvări?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "problema din concurs" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "problemele din concurs" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "submisie" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "participare" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "Dacă această submisie a fost evaluată doar pe pre-teste." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "submisie de concurs" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "submisii de concurs" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "rang" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "rating" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "rating brut" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "performanță concurs" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "rating de la concurs" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "ratinguri de la concurs" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1477,7 +1481,7 @@ msgstr "" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1530,7 +1534,7 @@ msgstr "" msgid "problem type" msgstr "tipul problemei" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "tipurile problemei" @@ -1542,7 +1546,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "grupul problemei" @@ -1579,7 +1583,7 @@ msgstr "Hyperlink către icon." msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "licență" @@ -1603,280 +1607,267 @@ msgstr "" msgid "Only own submissions" msgstr "Doar submisiile proprii" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "codul problemei" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "numele problemei" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "creatori" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Acești utilizatori vor putea edita problema și vor fi listați ca autori." -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Acești utilizatori vor putea edita problema, dar nu vor fi listați ca autori." -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "Tipul problemei, așa cum va fi afișat pe pagina problemei." -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "Grupul problemei, va fi afișat sub „Categorie” în lista de probleme." -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "limită de memorie" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "se acordă punctaje parțiale" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "limbaje permise" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "data publicării" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "Licența sub care este publicată această problemă." -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "rezumatul problemei" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Duplică problemă" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "limbaj" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "limita de resurse specifică limbii" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "limite de resurse specifică limbii" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "soluție" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "soluții" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "votant" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "notă" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1902,7 +1893,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1949,7 +1940,7 @@ msgstr "" msgid "checker arguments" msgstr "argumente verificator" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Argumente verificator ca obiect JSON." @@ -1997,6 +1988,18 @@ msgstr "" msgid "case is pretest?" msgstr "cazul este pre-test?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "argumente verificator ca obiect JSON" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "titlu organizație" @@ -2074,7 +2077,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organizație" @@ -2115,7 +2118,7 @@ msgstr "membrii" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "clasă" @@ -2140,26 +2143,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "ultimul IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2169,200 +2176,200 @@ msgstr "" msgid "Admin" msgstr "Administrare" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "Pe unii utilizatori e preferabil sa nu ȋi auzi." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "JavaScript definit de utilizator pentru personalizarea site-ului." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "motor de matematică" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "profil utilizator" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "profiluri utilizatori" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "nume dispozitiv" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "stare" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "Nehotărât" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Aprobat" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Respins" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "motiv" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "cerere de a se alătura organizației" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "cereri de a se alătura organizației" @@ -2605,15 +2612,15 @@ msgstr "Internal Error (judging server error)" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "timp de execuție" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "consum de memorie" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "puncte acordate" @@ -2621,141 +2628,141 @@ msgstr "puncte acordate" msgid "submission language" msgstr "limbaj submisie" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "stare" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "rezultat" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "erori de compilare" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "submisii" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "testul submisiei" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "testele submisiei" @@ -2819,16 +2826,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "Pagina [page] din [topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "Pagina %s din %s" - #: judge/ratings.py:194 msgid "Newbie" msgstr "Începător" @@ -2885,40 +2882,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +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/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "Pagina {page_number} din {total_pages}" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "Fișierul de intrare pentru cazul %d nu există: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "Fișierul de ieșire pentru cazul %d nu există: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2976,45 +2997,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "Pagina %d din Posturi" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "Ne facem de cap, nu-i așa?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "Comentariul nu a fost găsit." -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Ai votat deja." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Editat de pe site" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "Niciun concurs de acest fel" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Niciun concurs găsit cu cheia \"%s\"." @@ -3023,111 +3044,111 @@ msgstr "Niciun concurs găsit cu cheia \"%s\"." msgid "Contests" msgstr "Concursuri" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "Nu am putut găsi un concurs de acest fel." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Nu aveți acces la concursul \"%s\"" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "Clonează Concursul" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "Concursul nu este în curs de desfășurare" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "Momentan, \"%s\" nu este în curs de desfășurare." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "Nu sunteți în concursul \"%s\"." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "Concursuri în %(month)s" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Participare" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3156,76 +3177,76 @@ msgstr "pagina corupta %s" msgid "Runtimes" msgstr "Limbaje" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "Nicio organizație de acest fel" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, 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:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "Nu am putut găsi organizații de acest fel." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizații" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s Membri" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Aderarea la organizație" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Sunteți deja în organizație." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Această organizație nu este deschisă." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Părăsire organizație" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "Nu sunteți în \"%s\"." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Cerere de adăugare la %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Detalii despre cererea de adăugare" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "Gestionarea cererilor de asociere cu %s" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." @@ -3233,7 +3254,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." @@ -3241,7 +3262,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -3249,7 +3270,7 @@ msgstr[0] "Aprobat %d utilizator." msgstr[1] "Aprobat %d utilizatori." msgstr[2] "Aprobat %d utilizatori." -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -3257,152 +3278,160 @@ msgstr[0] "Respins %d utilizator." msgstr[1] "Respins %d utilizatori." msgstr[2] "Respins %d utilizatori." -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "Editare %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "Nu puteți edita organizația" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "Nu aveți permisiunea pentru a edita această organizație." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "Nicio problemă de acest fel" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, 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:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Clonează Problema" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3430,51 +3459,51 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "Cele mai bune soluții pentru %s" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, 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:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 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:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Fus orar" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Limba preferată" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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: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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Înscrie-te" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Problemă la autentificare" @@ -3486,77 +3515,77 @@ msgstr "" msgid "Language statistics" msgstr "Statistici ale limbei" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Stare" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Matrice de versiuni" +msgid "Version" +msgstr "Versiune" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "Permisiune refuzată. Rezolvă %(problem)s pentru a o vedea." -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "Nu se poate accesa submisia" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "Permisiune refuzată." -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Soluția problemei %(problem)s de %(user)s" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Toate soluțiile" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Toate soluțiile submise de %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Toate soluțiile pentru %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Soluțiile lui %(user)s pentru %(problem)s" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "Soluțiile lui {user} pentru {problem} în {contest}" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3586,7 +3615,7 @@ msgstr "" #: judge/views/ticket.py:255 #, python-format msgid "Tickets - Page %(number)d of %(total)d" -msgstr "" +msgstr "Tichete - Pagina %(number)d din %(total)d" #: judge/views/ticket.py:307 #, python-format @@ -3611,102 +3640,157 @@ msgstr "nimeni" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "Niciun astfel de utilizator" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "Porecla de utilizator \"%s\" nu există." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Utilizatorul %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Login" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j M Y, \\o\\r\\a G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Actualizat pe loc" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Editează-ți profilul" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3732,13 +3816,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "Dezactivează" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "Activează" @@ -3758,49 +3842,50 @@ msgstr "" msgid "Edit user" msgstr "Editează utilizator" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Bună ziua, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Log out" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Autentificare" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "sau" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "Înregistrare" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "Acest site funcționează cel mai bine cu JavaScript activat." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Modifică" @@ -4000,15 +4085,15 @@ msgstr "Scor" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4089,7 +4174,7 @@ msgstr "Calendar" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Stastici" @@ -4307,7 +4392,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Utilizatori" @@ -4315,7 +4400,7 @@ msgstr "Utilizatori" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4481,19 +4566,19 @@ msgstr "Dez-descalifică" msgid "Disqualify" msgstr "Descalifică" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "Ești sigur că vrei să descalifici această participare?" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "Ești sigur că vrei să dez-descalifici această participare?" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Arată organizațiile" @@ -4664,6 +4749,17 @@ msgstr "Ora:" msgid "Reason:" msgstr "Motiv:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Utilizator" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Ora" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4680,7 +4776,7 @@ msgid "There are no requests to approve." msgstr "Nu aveți cereri de aprobare." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "Ștergeți?" @@ -4716,59 +4812,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "Vezi YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "Verificator" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Trimiteți!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4787,86 +4891,86 @@ msgstr[0] "Autor:" msgstr[1] "Autori:" msgstr[2] "Autori:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Categorie" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Tipuri" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "Filtrează după ID:" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "Reevaluează Totul" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." @@ -4874,7 +4978,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" @@ -4882,7 +4986,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "Reevaluează toate submisiile" @@ -4960,11 +5064,11 @@ msgstr "Puncte:" msgid "(partial)" msgstr "(parțial)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Limita de timp:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Limita de memorie:" @@ -5003,14 +5107,6 @@ msgstr "" msgid "Report an issue" msgstr "Raportează o problemă" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Limită de Timp:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Limită de Memorie:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Căutare probleme" @@ -5048,8 +5144,8 @@ msgstr "Tipuri de probleme" msgid "Point range" msgstr "Interval de puncte" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Caută" @@ -5058,7 +5154,7 @@ msgid "Random" msgstr "Aleatoriu" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5070,20 +5166,20 @@ msgstr "Rezultat" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "Codul sursă trebuie să conțină cel mult 65536 de caractere." -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "Atenție!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -5091,11 +5187,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "Nici un judge nu este disponibil pentru această problemă." @@ -5202,6 +5298,70 @@ msgstr[2] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "Nume de utilizator sau parolă invalide." @@ -5305,7 +5465,7 @@ msgstr "Echipa %(site_name)s" msgid "Password reset on %(site_name)s" msgstr "Parola resetată pe %(site_name)s" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Continuă >" @@ -5318,36 +5478,40 @@ msgstr "Înregistrarea este închisă în prezent. Vă rugăm să luați legătu msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." msgstr "V-ați înregistrat cu succes! Un email a fost trimis la adresa de email oferită pentru a confirma înregistrarea dumneavoastră." -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Email" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "alege de pe hartă" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "Înscrie-te!" @@ -5381,7 +5545,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5389,17 +5553,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5408,7 +5572,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5426,12 +5590,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5500,8 +5664,8 @@ msgid "Judges" msgstr "Judges" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Matrice de Versiuni" +msgid "Versions" +msgstr "Versiuni" #: templates/submission/info-base.html:8 #, python-format @@ -5525,27 +5689,27 @@ msgstr "O eroare internă a apărut în timpul notării." msgid "Error information" msgstr "Informații eroare" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "Filtrează după stare..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "Filtrează după limbaj..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Filtrează submisiile" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Total:" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "Ai fost deconectat. Reîmprospătează pagina pentru a afișa ultimele actualizări." @@ -5582,7 +5746,7 @@ msgstr "Vezi stare" msgid "View raw source" msgstr "Vezi codul sursă brut" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Trimiteți din nou" @@ -5668,15 +5832,15 @@ msgstr "" msgid "Submission aborted!" msgstr "Soluția a fost anulată!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Vezi sursa" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "Apasă Ctrl-Enter sau Command-Enter pentru a anula." -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "Anuleaza" @@ -5709,34 +5873,34 @@ msgstr "Redeschise: " msgid "Closed: " msgstr "Închise: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "Titlu" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5787,152 +5951,152 @@ msgstr "" msgid "Nothing here." msgstr "Nimic aici." -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Rang" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "Se generează..." -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "Șterge" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "Ești sigur că vrei să ștergi token-ul tău de API?" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "Generează" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "Ești sigur că vrei să ștergi această cheie de securitate?" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Auto-descriere:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "Selectează cel mai apropiat oraș major" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Fus orar:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Limbaj:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "Temă editor:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Motor de matematică:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "Schimbați avatarul" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "Schimbați parola" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "Autentificarea în doi pași este activată:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "Token API:" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "Reîmprospătează" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "Ascuns" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "Autentificarea în doi pași este activată:" + +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "Ascuns" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "Autentificarea în doi pași este dezactivată:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "Token API:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "Chei de securitate:" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "Adaugă" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "Script de utilizator:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "Actualizați profilul" diff --git a/locale/ro/LC_MESSAGES/djangojs.po b/locale/ro/LC_MESSAGES/djangojs.po index 074c707a99..695c27bb28 100644 --- a/locale/ro/LC_MESSAGES/djangojs.po +++ b/locale/ro/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:44\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:52\n" "Last-Translator: \n" "Language-Team: Romanian\n" "Language: ro_RO\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" @@ -25,7 +25,7 @@ msgstr[0] "%d zi %h:%m:%s" msgstr[1] "%d zi %h:%m:%s" msgstr[2] "%d zile %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/ru/LC_MESSAGES/django.po b/locale/ru/LC_MESSAGES/django.po index 91ab1a7aaa..10b296213c 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,99 +17,103 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Каталанский" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Немецкий" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Греческий" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Английский" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Испанский" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Французский" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Хорватский" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Венгерский" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Японский" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Корейский" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Бразильский португальский" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Румынский" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Русский" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Сербский (латиница)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Турецкий" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Вьетнамский" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Упрощенный китайский" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Традиционный китайский" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" -msgstr "" +msgstr "Активация прошла успешно!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" -msgstr "" +msgstr "Регистрация завершена" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" -msgstr "" +msgstr "Регистрация запрещена" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Главная" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Содержание" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Скрыть комментарии" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." @@ -118,11 +122,11 @@ msgstr[1] "%d комментарий успешно скрыт." msgstr[2] "%d комментариев успешно скрыты." msgstr[3] "%d комментариев успешно скрыты." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Скрыть комментарии" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Показать комментарии" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." @@ -131,37 +135,34 @@ msgstr[1] "%d комментарий успешно отображен." msgstr[2] "%d комментарий успешно отображен." msgstr[3] "%d комментарий успешно отображен." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Показать комментарии" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Связанная страница" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "связанная страница" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Включены конкурсы" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Проблема" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Задачи" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" -msgstr "" +msgstr "Перетестирование" #: judge/admin/contest.py:122 msgid "Settings" @@ -191,20 +192,24 @@ msgstr "Доступ" msgid "Justice" msgstr "Судья" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Отметьте соревнования как видимые" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d соревнование успешно помечено как видимое." +msgstr[1] "%d соревнования успешно помечены как скрытые." +msgstr[2] "%d соревнований успешно помечены как скрытые." +msgstr[3] "%d соревнований успешно помечены как скрытые." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Отметьте соревнования как видимые" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Отметьте соревнования как скрытые" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -213,11 +218,11 @@ msgstr[1] "%d соревнований помечены как скрытые." msgstr[2] "%d соревнований помечены как скрытые." msgstr[3] "%d соревнования успешно помечены как скрытые." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "Отметьте соревнования как скрытые" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Заблокировать решения соревнования" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -226,11 +231,11 @@ msgstr[1] "%d соревнований успешно скрыто." msgstr[2] "%d соревнований успешно скрыто." msgstr[3] "%d соревнования успешно скрыты." -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "Заблокировать решения соревнования" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Разблокировать решения соревнования" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -239,11 +244,7 @@ msgstr[1] "%d соревнований успешно разблокирован msgstr[2] "%d соревнований успешно разблокировано." msgstr[3] "%d соревнования успешно разблокированы." -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "Разблокировать решения соревнования" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -252,54 +253,55 @@ msgstr[1] "%d решений было успешно запланировано msgstr[2] "%d решений было успешно запланировано для повторного тестирования." msgstr[3] "%d решения были успешно запланированы для повторного тестирования." -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Пересчитать результаты" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" -msgstr[3] "" +msgstr[0] "%d участие в соревновании пересчитано." +msgstr[1] "%d участия в соревнованиях пересчитано." +msgstr[2] "%d участий в соревнованиях пересчитано." +msgstr[3] "%d участий в соревнованиях пересчитано." -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "Пересчитать результаты" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "имя пользователя" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "виртуальный" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "адресс ссылки" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Сводка" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "пользователь" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "объект" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Посмотреть на сайте" #: judge/admin/problem.py:21 msgid "Edit reason" -msgstr "" +msgstr "Причина изменения" #: judge/admin/problem.py:30 msgid "Describe the changes you made (optional)" @@ -314,8 +316,8 @@ msgid "Taxonomy" msgstr "Таксономия" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Очки" @@ -324,9 +326,8 @@ msgstr "Очки" msgid "Limits" msgstr "Ограничения" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Язык" @@ -334,11 +335,16 @@ msgstr "Язык" msgid "History" msgstr "История" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Авторы" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "авторы" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Установить дату публикации" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -347,11 +353,11 @@ msgstr[1] "%d дат публикации успешно обновлено." msgstr[2] "%d дат публикации успешно обновлено." msgstr[3] "%d даты публикации успешно обновлены." -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "Установить дату публикации" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Пометить задачу как публичную" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -360,11 +366,11 @@ msgstr[1] "%d задачи успешно сделаны публичными." msgstr[2] "%d задачи успешно сделаны публичными." msgstr[3] "%d задачи успешно сделаны публичными." -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "Пометить задачу как публичную" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Пометить задачу как приватную" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -373,43 +379,31 @@ msgstr[1] "%d задачи успешно сдаланы приватными." msgstr[2] "%d задачи успешно сделаны приватными." msgstr[3] "%d задачи успешно сделаны приватными." -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "Пометить задачу как приватную" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "задача" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "часовой пояс" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Пользователь" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Эл. почта" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Часовой пояс" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "эл. почта" -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "дата регистрации" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Пересчитать баллы" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." @@ -418,30 +412,26 @@ msgstr[1] "У %d пользователей пересчитаны баллы." msgstr[2] "У %d пользователей пересчитали баллы." msgstr[3] "У %d пользователей пересчитали баллы." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Пересчитать баллы" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" -msgstr "" +msgstr "Сгенерировать новый" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Описание" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Информация" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Возможности" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Не указано" @@ -460,12 +450,12 @@ msgstr "Незачтенный" #: judge/admin/submission.py:85 #, python-format msgid "%s (spectating)" -msgstr "" +msgstr "%s (наблюдать)" #: judge/admin/submission.py:87 #, python-format msgid "%s (virtual %d)" -msgstr "" +msgstr "%s (virtual %d)" #: judge/admin/submission.py:94 #, python-format @@ -473,19 +463,23 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s в %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Перетестировать выбранные посылки" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "У вас нет доступа перетестировать поссылки." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "У вас нет доступа перетестировать ТАК много посылок." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Перетестировать выбранные посылки" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Пересчитать выбранные решения" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -494,40 +488,40 @@ msgstr[1] "%d решений были переоценены." msgstr[2] "%d решения были переоценены." msgstr[3] "%d решения были переоценены." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Пересчитать выбранные решения" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "код задачи" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Исходный код" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "название задачи" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Название задачи" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "время" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Время" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "память" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Память" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "язык" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" -msgstr "" +msgstr "Заблокировано" #: judge/admin/taxon.py:11 judge/admin/taxon.py:34 msgid "Included problems" @@ -549,13 +543,14 @@ msgstr "Онлайн Judge" msgid "Comment body" msgstr "Содержание комментария" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Твоя роль-молчание, маленькая жаба." #: judge/comments.py:49 templates/comments/list.html:146 msgid "You must solve at least one problem before your voice can be heard." -msgstr "" +msgstr "Вы должны решить хотя бы одну задачу, прежде чем голосовать" #: judge/comments.py:96 msgid "Posted comment" @@ -568,20 +563,20 @@ msgstr "AtCoder" #: judge/contest_format/atcoder.py:117 judge/contest_format/default.py:79 #: judge/contest_format/icpc.py:127 judge/contest_format/legacy_ioi.py:97 msgid "The maximum score submission for each problem will be used." -msgstr "" +msgstr "Будет использоваться максимальное количество баллов для каждой задачи." #: judge/contest_format/atcoder.py:122 judge/contest_format/icpc.py:132 #, python-format msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." -msgstr[0] "" +msgstr[0] "Каждая отправка до первого максимального балла повлечет за собой **наказание в размере %d минуты**." msgstr[1] "" msgstr[2] "" msgstr[3] "" #: judge/contest_format/atcoder.py:127 msgid "Ties will be broken by the last score altering submission time." -msgstr "" +msgstr "Тесты будут нарушены по времени последнего изменения оценок." #: judge/contest_format/default.py:18 msgid "Default" @@ -589,7 +584,7 @@ msgstr "Стандартный" #: judge/contest_format/default.py:80 msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." -msgstr "" +msgstr "Тесты будут разбиты на сумму последнего времени сдачи заданий по заданиям с ненулевым баллом." #: judge/contest_format/ecoo.py:18 msgid "ECOO" @@ -597,30 +592,30 @@ msgstr "ОКОО (ECOO)" #: judge/contest_format/ecoo.py:130 msgid "The score on your **last** non-CE submission for each problem will be used." -msgstr "" +msgstr "Будет использована оценка вашей ** последней ** заявки, не относящейся к CE, по каждой задаче." #: judge/contest_format/ecoo.py:135 #, python-format msgid "There is a **%d bonus** for fully solving on your first non-CE submission." -msgstr "" +msgstr "Существует ** бонус%d ** для полного решения вашей первой публикации, не являющейся CE." #: judge/contest_format/ecoo.py:141 #, python-format msgid "For every **%d minute** you submit before the end of your window, there will be a **1** point bonus." msgid_plural "For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus." -msgstr[0] "" +msgstr[0] "За каждые **%d минут** вы подаете заявку до конца окна, будет **1** бонус к очкам." msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "За каждые **%d минуты** вы подаете заявку до конца окна, будет **1** бонус к очкам." #: judge/contest_format/ecoo.py:147 msgid "Ties will be broken by the sum of the last submission time on **all** problems." -msgstr "" +msgstr "Связи будут разорваны по сумме времени последней подачи публикации по **всем** задачам." #: judge/contest_format/ecoo.py:149 judge/contest_format/ioi.py:102 #: judge/contest_format/legacy_ioi.py:103 msgid "Ties by score will **not** be broken." -msgstr "" +msgstr "По счету **не** будет нарушено." #: judge/contest_format/icpc.py:19 msgid "ICPC" @@ -628,7 +623,7 @@ msgstr "МСОП (ICPC)" #: judge/contest_format/icpc.py:137 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score, followed by the time of the last score altering submission." -msgstr "" +msgstr "Тесты будут разбиты сумму последнего балла, изменяющего время подачи по задачам с ненулевым баллом, за которым следует время последнего балла, изменяющего время подачи." #: judge/contest_format/ioi.py:11 msgid "IOI" @@ -636,247 +631,261 @@ msgstr "IOI" #: judge/contest_format/ioi.py:96 msgid "The maximum score for each problem batch will be used." -msgstr "" +msgstr "Будет использоваться максимальный балл за каждый пакет задач." #: judge/contest_format/ioi.py:99 judge/contest_format/legacy_ioi.py:100 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score." -msgstr "" +msgstr "Связи будут разорваны суммой последнего балла, изменяющего время подачи заданий с ненулевым баллом." #: judge/contest_format/legacy_ioi.py:18 msgid "IOI (pre-2016)" msgstr "IOI (до 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." -msgstr[0] "" +msgstr[0] "Токены двухфакторное аутентификации должны быть десятичной цифры {счет}" msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "Токены двухфакторное аутентификации должны быть десятичной цифрой {счет}" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Недействительный двухфакторный код аутентификации." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "Коды Scratch должны содержать 16 символов Base32." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "Неверный scratch-код." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Уведомлять об изменениях в соревновании" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Включить экспериментальные возможности" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "Вы должны решить хотя бы одну проблему, прежде чем вы сможете обновить свой профиль." -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." -msgstr[0] "" +msgstr[0] "Вы не можете быть частью более чем {счет} общественных организациях" msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "Вы не можете быть частью более чем {счет} общественных организации." + +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" -#: judge/forms.py:98 +#: judge/forms.py:121 msgid "Download comments?" msgstr "Загрузить комментарии?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Загрузить решения?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "Фильтр по коду задач:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "Оставьте пустым, чтобы включить все сданные решения" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Фильтр по результату:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "Пожалуйста, выберите хотя бы одну вещь для загрузки." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Любой судья" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Имя пользователя" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Пароль" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Неверная длина кода." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Недействительный WebAuthn ответ." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." -msgstr "" +msgstr "Вызов WebAuthn не завершен." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "Неверный идентификатор учетных данных WebAuthn." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "Неверный токен двухфакторной аутентификации или scratch-код." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "Необходимо указать totp_token или webauthn_response." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Код задачи должен быть ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Задача с кодом уже существует." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Идентификатор соревнования должен быть ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Соревнование с ключом уже существует." #: judge/jinja2/datetime.py:29 templates/blog/content.html:27 #: templates/problem/vote-ajax.html:6 templates/submission/info-base.html:6 msgid "N j, Y, g:i a" -msgstr "" - -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "" +msgstr "N j, Y, g:i a" #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "Не в рейтинге" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "Использовать тему сайта" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Оставить LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Только SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Только MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax с резервным вариантом SVG" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Определить лучшее качество" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "Отслеживать систему по умолчанию" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Светлая" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Тёмная" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "Код страницы должен быть ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "комментатор" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "время публикации" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "связанная страница" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "голоса" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "тело комментария" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" -msgstr "" +msgstr "Скрытый" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "родитель" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "Версии" + +#: judge/models/comment.py:39 msgid "comment" msgstr "комментарий" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "комментарии" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Разбор задач для %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" -msgstr "" +msgstr "%(page)s от %(user)s" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" -msgstr "" +msgstr "голос комментария" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" -msgstr "" +msgstr "голоса комментариев" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" -msgstr "" +msgstr "Переопределить блокировку комментариев" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" -msgstr "" +msgstr "комментарий заблокирован" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" -msgstr "" +msgstr "блокировка комментариев" #: judge/models/contest.py:28 msgid "Invalid colour." @@ -884,7 +893,7 @@ msgstr "Недопустимый цвет." #: judge/models/contest.py:30 msgid "tag name" -msgstr "" +msgstr "имя тега" #: judge/models/contest.py:31 msgid "Lowercase letters and hyphens only." @@ -908,87 +917,82 @@ msgstr "теги соревнования" #: judge/models/contest.py:62 msgid "Visible" -msgstr "" +msgstr "Видимый" #: judge/models/contest.py:63 msgid "Hidden for duration of contest" -msgstr "" +msgstr "Скрыто на время проведения соревнования" #: judge/models/contest.py:64 msgid "Hidden for duration of participation" -msgstr "" +msgstr "Скрыто на время участия" #: judge/models/contest.py:65 msgid "Hidden permanently" -msgstr "" +msgstr "Скрытые навсегда" #: judge/models/contest.py:67 msgid "contest id" -msgstr "" +msgstr "код соревнования" #: judge/models/contest.py:69 msgid "contest name" msgstr "название соревнования" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "авторы" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." -msgstr "" +msgstr "Эти пользователи смогут редактировать соревнование." -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" -msgstr "" +msgstr "кураторы" #: judge/models/contest.py:74 msgid "These users will be able to edit the contest, but will not be listed as authors." -msgstr "" +msgstr "Эти пользователи смогут редактировать соревнование, но не будут отображаться в качестве авторов." -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" -msgstr "" +msgstr "тестировщики" #: judge/models/contest.py:78 msgid "These users will be able to view the contest, but not edit it." -msgstr "" +msgstr "Эти пользователи смогут просматривать конкурс, но не редактировать его." #: judge/models/contest.py:80 msgid "testers see scoreboard" -msgstr "" +msgstr "тестировщики видят табло" #: judge/models/contest.py:81 msgid "If testers can see the scoreboard." -msgstr "" +msgstr "Если тестировщики смогут увидеть табло." #: judge/models/contest.py:82 msgid "testers see submissions" -msgstr "" +msgstr "Тестировщики просматривают представленные материалы" #: judge/models/contest.py:83 msgid "If testers can see in-contest submissions." -msgstr "" +msgstr "Если тестировщики смогут увидеть материалы представленные на конкурс." #: judge/models/contest.py:84 msgid "spectators" -msgstr "" +msgstr "зрители" #: judge/models/contest.py:85 msgid "These users will be able to spectate the contest, but not see the problems ahead of time." -msgstr "" +msgstr "Эти пользователи смогут наблюдать за соревнованием, но не видят задачи заранее." #: judge/models/contest.py:88 judge/models/runtime.py:139 msgid "description" msgstr "описание" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "задачи" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "время начала" @@ -996,18 +1000,18 @@ msgstr "время начала" msgid "end time" msgstr "время конца" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" -msgstr "ограничение по памяти" +msgstr "ограничение по времени" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" -msgstr "" +msgstr "публично видимый" #: judge/models/contest.py:94 msgid "Should be set even for organization-private contests, where it determines whether the contest is visible to members of the specified organizations." -msgstr "" +msgstr "Должно быть установлено даже для частных соревнований организации, где определяется, является ли соревнование видимым для членов указанных организаций." #: judge/models/contest.py:97 msgid "contest rated" @@ -1019,27 +1023,27 @@ msgstr "Будте ли соревнование рейтинговым." #: judge/models/contest.py:99 msgid "view contest scoreboard" -msgstr "" +msgstr "просмотреть таблицу результатов соревнования" #: judge/models/contest.py:101 msgid "These users will be able to view the scoreboard." -msgstr "" +msgstr "Эти пользователи смогут просматривать таблицу результатов соревнования." #: judge/models/contest.py:102 msgid "can see contest submissions" -msgstr "" +msgstr "могут видеть отправки соревнования" #: judge/models/contest.py:104 msgid "These users will be able to see in-contest submissions." -msgstr "" +msgstr "Эти пользователи смогут просматривать отправки соревнования." #: judge/models/contest.py:106 msgid "scoreboard visibility" -msgstr "" +msgstr "видимость результатов соревнования" #: judge/models/contest.py:107 msgid "Scoreboard visibility through the duration of the contest." -msgstr "" +msgstr "Видимость результатов соревнования во время соревнования" #: judge/models/contest.py:109 msgid "no comments" @@ -1051,43 +1055,43 @@ msgstr "Используйте систему кларов вместо комм #: judge/models/contest.py:112 msgid "rating floor" -msgstr "" +msgstr "нижняя оценка" #: judge/models/contest.py:113 msgid "Do not rate users who have a lower rating." -msgstr "" +msgstr "Не оценивайте пользователей с более низким рейтингом." #: judge/models/contest.py:114 msgid "rating ceiling" -msgstr "" +msgstr "верхняя оценка" #: judge/models/contest.py:115 msgid "Do not rate users who have a higher rating." -msgstr "" +msgstr "Не оценивайте пользователей с более высоким рейтингом." #: judge/models/contest.py:117 msgid "rate all" -msgstr "" +msgstr "оценить все" #: judge/models/contest.py:117 msgid "Rate all users who joined." -msgstr "" +msgstr "Оценить всех пользователей, которые присоединились." #: judge/models/contest.py:118 msgid "exclude from ratings" -msgstr "" +msgstr "исключить из рейтингов" #: judge/models/contest.py:120 msgid "private to specific users" -msgstr "" +msgstr "приватный для определенных пользователей" #: judge/models/contest.py:121 msgid "private contestants" -msgstr "" +msgstr "приватные участники соревнования" #: judge/models/contest.py:122 msgid "If non-empty, only these users may see the contest." -msgstr "" +msgstr "Если не пусто, только эти пользователи могут видеть соревнование." #: judge/models/contest.py:124 msgid "hide problem tags" @@ -1095,15 +1099,15 @@ msgstr "спрятать тэги задач" #: judge/models/contest.py:125 msgid "Whether problem tags should be hidden by default." -msgstr "" +msgstr "Должны ли теги задач быть скрыты по умолчанию." #: judge/models/contest.py:127 msgid "hide problem authors" -msgstr "" +msgstr "Скрыть авторов задачи" #: judge/models/contest.py:128 msgid "Whether problem authors should be hidden by default." -msgstr "" +msgstr "Должны ли авторы задач быть скрыты по умолчанию." #: judge/models/contest.py:130 msgid "run pretests only" @@ -1111,344 +1115,345 @@ msgstr "запустить только претесты" #: judge/models/contest.py:131 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 "" +msgstr "Должны ли судьи оценивать только предварительные тесты, а не все тестовые задания. Обычно устанавливается во время конкурса, затем сбрасывается до предварительного рассмотрения заявок пользователей по окончании конкурса." #: judge/models/contest.py:135 msgid "show short form settings display" -msgstr "" +msgstr "Показать отображение настроек краткой формы" #: judge/models/contest.py:136 msgid "Whether to show a section containing contest settings on the contest page or not." -msgstr "" +msgstr "Показывать ли раздел, содержащий настройки конкурса, на странице конкурса или нет." -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" -msgstr "" +msgstr "От частного лица к организациям" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "организации" #: judge/models/contest.py:141 msgid "If non-empty, only these organizations may see the contest." -msgstr "" +msgstr "Если поле не пустое, только эти организации могут видеть конкурс." #: judge/models/contest.py:142 msgid "limit organizations that can join" -msgstr "" +msgstr "Ограничение организаций, которые могут присоединиться" #: judge/models/contest.py:143 msgid "join organizations" -msgstr "" +msgstr "Присоединиться к организации" #: judge/models/contest.py:144 msgid "If non-empty, only these organizations may join the contest." -msgstr "" +msgstr "Если поле не пустое, то к конкурсу могут присоединиться только эти организации." #: judge/models/contest.py:146 judge/models/profile.py:143 msgid "classes" -msgstr "" +msgstr "Классы" #: judge/models/contest.py:147 msgid "If organization private, only these classes may see the contest." -msgstr "" +msgstr "Если организация закрыта, только эти классы могут видеть конкурс." #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" -msgstr "" +msgstr "Изображение OpenGraph" #: judge/models/contest.py:149 judge/models/profile.py:58 msgid "logo override image" -msgstr "" +msgstr "изображение, заменяющее логотип" #: judge/models/contest.py:151 msgid "This image will replace the default site logo for users inside the contest." -msgstr "" +msgstr "Это изображение заменит логотип сайта по умолчанию для пользователей, участвующих в конкурсе." #: judge/models/contest.py:154 msgid "the amount of live participants" -msgstr "" +msgstr "количество участников" #: judge/models/contest.py:155 msgid "contest summary" -msgstr "" +msgstr "краткое описание конкурса" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." -msgstr "" +msgstr "Обычный текст, отображаемый в теге мета описания, например, для социальных сетей." #: judge/models/contest.py:157 judge/models/profile.py:57 #: judge/models/profile.py:110 msgid "access code" -msgstr "" +msgstr "код доступа" #: judge/models/contest.py:158 msgid "An optional code to prompt contestants before they are allowed to join the contest. Leave it blank to disable." -msgstr "" +msgstr "Необязательный код, который запрашивается у участников до того, как им будет разрешено присоединиться к конкурсу. Оставьте это поле пустым, чтобы отключить." -#: judge/models/contest.py:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" -msgstr "" +msgstr "неизвестные лица" #: judge/models/contest.py:161 msgid "Bans the selected users from joining this contest." -msgstr "" +msgstr "Запрещает выбранным пользователям присоединяться к этому конкурсу." #: judge/models/contest.py:162 msgid "contest format" -msgstr "" +msgstr "формат конкурса" #: judge/models/contest.py:163 msgid "The contest format module to use." -msgstr "" +msgstr "Используемый модуль формата конкурса." #: judge/models/contest.py:164 msgid "contest format configuration" -msgstr "" +msgstr "конфигурация формата конкурса" #: judge/models/contest.py:165 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 "Объект JSON, который будет служить конфигурацией для выбранного модуля формата конкурса. Оставьте пустым, чтобы не использовать None. Точный формат зависит от выбранного формата конкурса." #: judge/models/contest.py:168 msgid "contest problem label script" -msgstr "" +msgstr "сценарий метки для конурса" #: judge/models/contest.py:169 msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." -msgstr "" +msgstr "Пользовательская функция Lua для создания ярлыков задач. Требуется одна функция с параметром целочисленного значения, индексом задачи конкурса с нулевым индексированием и возвращает строку, метку.\n" +"" #: judge/models/contest.py:172 msgid "contest lock" -msgstr "" +msgstr "Соревнование заблокировано" #: judge/models/contest.py:173 msgid "Prevent submissions from this contest from being rejudged after this date." -msgstr "" +msgstr "Запретить оценивать результаты этого соревнования после этой даты." #: judge/models/contest.py:175 msgid "precision points" -msgstr "" +msgstr "точность баллов" #: judge/models/contest.py:177 msgid "Number of digits to round points to." -msgstr "" +msgstr "Количество цифр для округления баллов." -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" -msgstr "" +msgstr "Видеть приватные соревнования" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" -msgstr "" +msgstr "Редактировать свои соревнования" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" -msgstr "" +msgstr "Редактировать все соревнование" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" -msgstr "" +msgstr "Клонировать соревнование" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" -msgstr "" +msgstr "MOSS соревнование" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" -msgstr "" +msgstr "Оценить соревнования" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" -msgstr "" +msgstr "Коды доступа к конкурсам" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" -msgstr "" +msgstr "Создать приватное соревнование" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" -msgstr "" +msgstr "Изменить видимость соревнования" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" -msgstr "" +msgstr "Редактировать сценарий задачи конкурса" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" -msgstr "" +msgstr "Изменить статус блокировки соревнования" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "соревнование" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "соревнования" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" -msgstr "" +msgstr "связанное соревнование" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" -msgstr "" +msgstr "оценка" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" -msgstr "" +msgstr "суммарное время" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" -msgstr "" +msgstr "дисквалифицирован" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." -msgstr "" +msgstr "Независимо от того, дисквалифицировано ли это участие." -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" -msgstr "" +msgstr "тормозное поле" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" -msgstr "" +msgstr "id виртуального участия" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." -msgstr "" +msgstr "0 означает не виртуальное, в противном случае n-е виртуальное участие." -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" -msgstr "" +msgstr "конкретные данные о формате конкурса" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" -msgstr "" +msgstr "%(user)s наблюдает в %(contest)s" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" -msgstr "" +msgstr "%(user)s в %(contest)s, v%(id)d" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" -msgstr "" +msgstr "%(user)s в %(contest)s" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "участие в соревновании" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" -msgstr "" +msgstr "участие в конкурсе" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "очки" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "частичный" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" -msgstr "" +msgstr "защищен" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "порядок" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" -msgstr "" +msgstr "переопределение длины выходного префикса" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" -msgstr "" +msgstr "максимальное количество заявок" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." -msgstr "" +msgstr "Максимальное количество отправок для этой задачи или оставьте пустым если ограничение отсутствует." -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" -msgstr "" +msgstr "Зачем включать задачу, с которой вы не можете справиться?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" -msgstr "" +msgstr "проблема конкурсов" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" -msgstr "" +msgstr "проблемы с конкурсом" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "посылка" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "участие" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." -msgstr "" +msgstr "Была ли эта отправка проверена только на предварительных тестах." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" -msgstr "" +msgstr "подача заявки на участие в конкурсе" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" -msgstr "" +msgstr "подача заявки на участие в конкурсе" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "ранг" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "рейтинг" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" -msgstr "" +msgstr "исходный рейтинг" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" -msgstr "" +msgstr "производительность соревнования" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" -msgstr "" +msgstr "последняя оценённая" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" -msgstr "" +msgstr "рейтинг соревнования" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" -msgstr "" +msgstr "рейтинги соревнования" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" -msgstr "" +msgstr "результат MOSS соревнования" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" -msgstr "" +msgstr "результаты MOSS соревнования" #: judge/models/interface.py:17 judge/models/problem.py:60 msgid "key" -msgstr "" +msgstr "ключ" #: judge/models/interface.py:18 msgid "value" @@ -1456,19 +1461,19 @@ msgstr "значение" #: judge/models/interface.py:24 msgid "configuration item" -msgstr "" +msgstr "элемент настройки" #: judge/models/interface.py:25 msgid "miscellaneous configuration" -msgstr "" +msgstr "другие настройки" #: judge/models/interface.py:37 msgid "navigation item" -msgstr "" +msgstr "элемент навигации" #: judge/models/interface.py:38 msgid "navigation bar" -msgstr "" +msgstr "панель навигации" #: judge/models/interface.py:44 msgid "identifier" @@ -1484,616 +1489,615 @@ msgstr "подсветить regex" #: judge/models/interface.py:48 msgid "parent item" -msgstr "" +msgstr "родительский элемент" #: judge/models/interface.py:66 msgid "post title" -msgstr "" +msgstr "заголовок записи" #: judge/models/interface.py:68 msgid "slug" -msgstr "" +msgstr "слаг" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" -msgstr "" +msgstr "публичная видимость" #: judge/models/interface.py:70 msgid "sticky" -msgstr "" +msgstr "закреплено" #: judge/models/interface.py:71 msgid "publish after" -msgstr "" +msgstr "опубликовать после" #: judge/models/interface.py:72 msgid "post content" -msgstr "" +msgstr "контент сообщения" #: judge/models/interface.py:73 msgid "post summary" -msgstr "" +msgstr "краткое содержание сообщения" #: judge/models/interface.py:96 msgid "Edit all posts" -msgstr "" +msgstr "Редактировать все сообщения" #: judge/models/interface.py:97 msgid "Edit post visibility" -msgstr "" +msgstr "Изменить видимость сообщения" #: judge/models/interface.py:99 msgid "blog post" -msgstr "" +msgstr "сообщение в блоге" #: judge/models/interface.py:100 msgid "blog posts" -msgstr "" +msgstr "Сообщения в блоге" #: judge/models/problem.py:29 #, python-format msgid "Disallowed characters: %(value)s" -msgstr "" +msgstr "Недопустимые символы: %(value)s" #: judge/models/problem.py:34 msgid "problem category ID" -msgstr "" +msgstr "ID категории задачи" #: judge/models/problem.py:35 msgid "problem category name" -msgstr "" +msgstr "название категории задачи" #: judge/models/problem.py:42 msgid "problem type" -msgstr "" +msgstr "тип задачи" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" -msgstr "" +msgstr "типы задачи" #: judge/models/problem.py:47 msgid "problem group ID" -msgstr "" +msgstr "ID группы задач" #: judge/models/problem.py:48 msgid "problem group name" -msgstr "" +msgstr "имя группы задач" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" -msgstr "" +msgstr "группа задачи" #: judge/models/problem.py:56 msgid "problem groups" -msgstr "" +msgstr "группы задач" #: judge/models/problem.py:62 msgid "link" -msgstr "" +msgstr "ссылка" #: judge/models/problem.py:63 msgid "full name" -msgstr "" +msgstr "полное имя" #: judge/models/problem.py:64 judge/models/profile.py:45 #: judge/models/runtime.py:24 msgid "short name" -msgstr "" +msgstr "короткое имя" #: judge/models/problem.py:65 msgid "Displayed on pages under this license." -msgstr "" +msgstr "Отображается на страницах под этой лицензией." #: judge/models/problem.py:66 msgid "icon" -msgstr "" +msgstr "иконка" #: judge/models/problem.py:66 msgid "URL to the icon." -msgstr "" +msgstr "URL иконки." #: judge/models/problem.py:67 msgid "license text" -msgstr "" +msgstr "текст лицензии" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" -msgstr "" +msgstr "лицензия" #: judge/models/problem.py:77 msgid "licenses" -msgstr "" +msgstr "лицензии" #: judge/models/problem.py:111 msgid "Follow global setting" -msgstr "" +msgstr "Использовать глобальные настройки" #: judge/models/problem.py:112 msgid "Always visible" -msgstr "" +msgstr "Всегда показывать" #: judge/models/problem.py:113 msgid "Visible if problem solved" -msgstr "" +msgstr "Показывать, если задача решена" #: judge/models/problem.py:114 msgid "Only own submissions" -msgstr "" - -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" +msgstr "Только собственные публикации" #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" -msgstr "" - -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "" +msgstr "Короткий, уникальный код задачи, используется в URL после /problem/" #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." -msgstr "" +msgstr "Полное имя задачи, как отображается в списке задач." -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" -msgstr "" +msgstr "тело задачи" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" -msgstr "" +msgstr "авторы" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." -msgstr "" +msgstr "Эти пользователи смогут редактировать задачу и будут перечислены в качестве авторов." -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." -msgstr "" +msgstr "Эти пользователи смогут редактировать проблему, но не будут перечислены в качестве авторов." -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." -msgstr "" +msgstr "Эти пользователи смогут просматривать личную задачу, но не редактировать ее." -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." -msgstr "" +msgstr "Тип задачи, как показано на странице задачи." -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." -msgstr "" +msgstr "Группа задач, указанная в разделе Категория в списке задач." -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." -msgstr "" +msgstr "Ограничение по времени для этой задачи в секундах. Поддерживаются дробные секунды (например, 1.5)." -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" -msgstr "" +msgstr "ограничение по памяти" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." -msgstr "" +msgstr "Ограничение по памяти для этой задачи в килобайтах (напр. 256mb = 262144 килобайт)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" -msgstr "" +msgstr "Короткое замыкание" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." -msgstr "" +msgstr "Баллы начисляются за выполнение задачи. Точки отображаются с суффиксом \"p\", если они частичные." -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" -msgstr "" +msgstr "разрешить частичные оценки" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" -msgstr "" +msgstr "доступные языки" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." -msgstr "" +msgstr "Список доступных языков для отправки." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" -msgstr "" +msgstr "ручное управление" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." -msgstr "" +msgstr "Следует ли разрешать судьям управлять данными или нет." -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" -msgstr "" +msgstr "дата публикации" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." -msgstr "" +msgstr "Не обладает волшебной способностью к автоматической публикации из-за обратной совместимости." -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." -msgstr "" +msgstr "Запрещает выбранным пользователям сообщать об этой задачи." -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." -msgstr "" +msgstr "Лицензия, под которой опубликована эта задача." -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" -msgstr "" +msgstr "сводка задач" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" -msgstr "" +msgstr "количество пользователей" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." -msgstr "" +msgstr "Количество пользователей, решивших задачу." -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" -msgstr "" +msgstr "рейтинг решений" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" -msgstr "" +msgstr "разрешить полный доступ к markdown" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" -msgstr "" +msgstr "видимость источника отправки" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." -msgstr "" +msgstr "Если они частные, то только эти организации могут увидеть задачу." -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" -msgstr "" +msgstr "Увидеть скрытые проблемы" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" -msgstr "" +msgstr "Редактирование собственных задач" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" -msgstr "" +msgstr "Редактировать все задачи" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" -msgstr "" +msgstr "Редактировать все публичные задачи" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" -msgstr "" +msgstr "Задачи редактирования с полной разметкой" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" -msgstr "" +msgstr "Клонировать задачу" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" -msgstr "" +msgstr "Изменить _публичное поле" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" -msgstr "" +msgstr "Изменить _вручную_управляемое поле" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" -msgstr "" - -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "язык" +msgstr "Смотрите раздел организационно-частные задачи" -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" -msgstr "" +msgstr "переведенное имя" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" -msgstr "" +msgstr "описание перевода" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" -msgstr "" +msgstr "проблема перевода" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" -msgstr "" +msgstr "проблема перевода" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" -msgstr "" +msgstr "выявленная проблема" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" -msgstr "" +msgstr "разъяснения" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" -msgstr "" +msgstr "временная метка уточнения" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" -msgstr "" +msgstr "прояснение проблемы" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" -msgstr "" +msgstr "разъяснения проблемы" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" -msgstr "" +msgstr "Специфическое ограничение ресурсов для языка" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" -msgstr "" +msgstr "Специфические ограничения ресурсов для языка" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" -msgstr "" +msgstr "связанная проблема" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" -msgstr "" +msgstr "дата публикации" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" -msgstr "" +msgstr "содержимое редактора" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" -msgstr "" +msgstr "Смотреть скрытые решения" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" -msgstr "" +msgstr "решение" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" -msgstr "" +msgstr "решения" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" -msgstr "" +msgstr "предложенные пункты" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." -msgstr "" +msgstr "Количество баллов, которое, по мнению избирателя, заслуживает эта задача." -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" -msgstr "" +msgstr "голосующие" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" -msgstr "" +msgstr "время голосования" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." -msgstr "" +msgstr "Время проведения этого голосования." -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" -msgstr "" +msgstr "заметка" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." -msgstr "" +msgstr "Обоснование значения точки задачи." -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" -msgstr "" +msgstr "голоса задачи" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" -msgstr "" +msgstr "голоса задачи" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" -msgstr "" +msgstr "Баллы голосов %(voter)s для %(problem)s" #: judge/models/problem_data.py:23 msgid "Standard" -msgstr "" +msgstr "Стандарт" #: judge/models/problem_data.py:24 msgid "Floats" -msgstr "" +msgstr "Поплавки" #: judge/models/problem_data.py:25 msgid "Floats (absolute)" -msgstr "" +msgstr "Поплавка (абсолютная)" #: judge/models/problem_data.py:26 msgid "Floats (relative)" -msgstr "" +msgstr "Поплавки (относительные)" #: judge/models/problem_data.py:27 msgid "Non-trailing spaces" -msgstr "" +msgstr "Пробелы без конца" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "" +msgid "Sorted" +msgstr "Отсортировано" #: judge/models/problem_data.py:29 msgid "Byte identical" -msgstr "" +msgstr "Байт идентичен" #: judge/models/problem_data.py:30 msgid "Line-by-line" -msgstr "" +msgstr "Построчно" #: judge/models/problem_data.py:37 msgid "data zip file" -msgstr "" +msgstr "архив данных" #: judge/models/problem_data.py:39 msgid "generator file" -msgstr "" +msgstr "файл генератора" #: judge/models/problem_data.py:41 judge/models/problem_data.py:92 msgid "output prefix length" -msgstr "" +msgstr "длина выходного префикса" #: judge/models/problem_data.py:42 judge/models/problem_data.py:93 msgid "output limit length" -msgstr "" +msgstr "ограничение на размер вывода" #: judge/models/problem_data.py:43 msgid "init.yml generation feedback" -msgstr "" +msgstr "Обратная связь генераций init.yml" #: judge/models/problem_data.py:44 judge/models/problem_data.py:94 msgid "checker" -msgstr "" +msgstr "контролер" #: judge/models/problem_data.py:45 msgid "enable unicode" -msgstr "" +msgstr "включить юникод" #: judge/models/problem_data.py:46 msgid "disable bigInteger / bigDecimal" -msgstr "" +msgstr "отключение большой интегратор / большая десятичная дробь" #: judge/models/problem_data.py:47 judge/models/problem_data.py:95 msgid "checker arguments" -msgstr "" +msgstr "аргументы проверки" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." -msgstr "" +msgstr "Проверяйте аргументы как объект JSON." #: judge/models/problem_data.py:79 msgid "problem data set" -msgstr "" +msgstr "набор данных для задачи" #: judge/models/problem_data.py:81 msgid "case position" -msgstr "" +msgstr "положение кейса" #: judge/models/problem_data.py:82 msgid "case type" -msgstr "" +msgstr "Тип корпуса" #: judge/models/problem_data.py:83 msgid "Normal case" -msgstr "" +msgstr "Нормальный регистр" #: judge/models/problem_data.py:84 msgid "Batch start" -msgstr "" +msgstr "Пакетный запуск" #: judge/models/problem_data.py:85 msgid "Batch end" -msgstr "" +msgstr "Конец пакета" #: judge/models/problem_data.py:87 msgid "input file name" -msgstr "" +msgstr "имя входного файла" #: judge/models/problem_data.py:88 msgid "output file name" -msgstr "" +msgstr "Имя выходного файла" #: judge/models/problem_data.py:89 msgid "generator arguments" -msgstr "" +msgstr "аргументы генератора" #: judge/models/problem_data.py:90 msgid "point value" -msgstr "" +msgstr "значение балла" #: judge/models/problem_data.py:91 msgid "case is pretest?" +msgstr "кейс - это предварительное тестирование?" + +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "проверяйте аргументы как объект JSON" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" msgstr "" #: judge/models/profile.py:42 msgid "organization title" -msgstr "" +msgstr "название организации" #: judge/models/profile.py:43 msgid "organization slug" -msgstr "" +msgstr "слаг организации" #: judge/models/profile.py:44 msgid "Organization name shown in URLs." -msgstr "" +msgstr "Название организации, отображаемое в URL." #: judge/models/profile.py:46 msgid "Displayed beside user name during contests." -msgstr "" +msgstr "Отображается рядом с именем пользователя во время конкурсов." #: judge/models/profile.py:47 msgid "organization description" -msgstr "" +msgstr "Описание организации" #: judge/models/profile.py:48 judge/models/profile.py:112 msgid "administrators" -msgstr "" +msgstr "Администраторы" #: judge/models/profile.py:49 msgid "Those who can edit this organization." -msgstr "" +msgstr "Те, кто может редактировать эту организацию." #: judge/models/profile.py:50 msgid "creation date" -msgstr "" +msgstr "Дата создания" #: judge/models/profile.py:51 msgid "is open organization?" -msgstr "" +msgstr "является ли организация открытой?" #: judge/models/profile.py:52 msgid "Allow joining organization." -msgstr "" +msgstr "Разрешить присоединение к организации." #: judge/models/profile.py:53 msgid "maximum size" -msgstr "" +msgstr "Максимальный размер" #: judge/models/profile.py:54 msgid "Maximum amount of users in this organization, only applicable to private organizations." -msgstr "" +msgstr "Максимальное количество пользователей в этой организации, применимо только к частным организациям." #: judge/models/profile.py:56 judge/models/profile.py:111 msgid "Student access code." -msgstr "" +msgstr "Код доступа студента." #: judge/models/profile.py:60 msgid "This image will replace the default site logo for users viewing the organization." -msgstr "" +msgstr "Это изображение заменит логотип сайта по умолчанию для пользователей, просматривающих организацию." #: judge/models/profile.py:62 msgid "class membership required" -msgstr "" +msgstr "требуется членство в классе" #: judge/models/profile.py:63 msgid "Whether members are compelled to select a class when joining." -msgstr "" +msgstr "Вынуждены ли участники выбирать класс при присоединении." #: judge/models/profile.py:67 msgid "Class membership cannot be enforced when organization has open enrollment." -msgstr "" +msgstr "Принудительное членство в классе не может быть исполнено, если организация имеет открытую регистрацию." #: judge/models/profile.py:95 msgid "Administer organizations" -msgstr "" +msgstr "Администрирование организации" #: judge/models/profile.py:96 msgid "Edit all organizations" -msgstr "" +msgstr "Редактировать все организации" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" -msgstr "" +msgstr "организация" #: judge/models/profile.py:104 msgid "The organization that this class belongs to." @@ -2132,7 +2136,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2157,26 +2161,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2186,278 +2194,279 @@ msgstr "" msgid "Admin" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." -msgstr "" +msgstr "Имя отображается вместо имени пользователя." -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" -msgstr "" +msgstr "Показывает информацию о ходе разработки" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" -msgstr "" +msgstr "Изменить настройки TOTP" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" -msgstr "" +msgstr "Профиль пользователя" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" -msgstr "" +msgstr "Профиль пользователя" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" -msgstr "" +msgstr "название устройства" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" -msgstr "" +msgstr "идентификатор учетных данных" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" -msgstr "" +msgstr "общедоступный ключ" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" -msgstr "" +msgstr "счетчик знаков" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" -msgstr "" +msgstr "WebAuthn учетные данные : %(name)s" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" -msgstr "" +msgstr "Учетные данные WebAuthn " -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" -msgstr "" +msgstr "Учетные данные WebAuthn" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" -msgstr "" +msgstr "Время запроса" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" -msgstr "" +msgstr "состояния" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" -msgstr "" +msgstr "Ожидание" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" -msgstr "" +msgstr "Утвержденный" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" -msgstr "" +msgstr "Отклоненный" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" -msgstr "" +msgstr "причина" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" -msgstr "" +msgstr "запрос на присоединение организации" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" -msgstr "" +msgstr "запрос на присоединение организации" #: judge/models/runtime.py:19 msgid "short identifier" -msgstr "" +msgstr "Короткий идентификатор" #: judge/models/runtime.py:20 msgid "The identifier for this language; the same as its executor id for judges." -msgstr "" +msgstr "Идентификатор этого языка; то же самое, что и идентификатор исполнителя для судей." #: judge/models/runtime.py:22 msgid "long name" -msgstr "" +msgstr "Полное имя" #: judge/models/runtime.py:23 msgid "Longer name for the language, e.g. \"Python 2\" or \"C++11\"." -msgstr "" +msgstr "Полное имя для языка, например \"Python 2\" или \"C++11\"." #: judge/models/runtime.py:25 msgid "More readable, but short, name to display publicly; e.g. \"PY2\" or \"C++11\". If left blank, it will default to the short identifier." -msgstr "" +msgstr "Более читаемый, но короткий, имя для публичного отображения; например \"PY2\" или \"C++11\". Если оставить пустым, оно будет иметь короткий идентификатор." #: judge/models/runtime.py:29 msgid "common name" -msgstr "" +msgstr "Общее название" #: judge/models/runtime.py:30 msgid "Common name for the language. For example, the common name for C++03, C++11, and C++14 would be \"C++\"." -msgstr "" +msgstr "Общее название для языка. Например, общее название для C++03, C++11 и C+14 будет \"C++\"." #: judge/models/runtime.py:32 msgid "ace mode name" -msgstr "" +msgstr "ace имя режима" #: judge/models/runtime.py:33 msgid "Language ID for Ace.js editor highlighting, appended to \"mode-\" to determine the Ace JavaScript file to use, e.g., \"python\"." -msgstr "" +msgstr "\n" +"Идентификатор языка для Ace.js выделение редактора, добавляемое к \"режим-\" для определения используемого файла Ace JavaScript, например, \"python\"." #: judge/models/runtime.py:35 msgid "pygments name" -msgstr "" +msgstr "имя пигмента" #: judge/models/runtime.py:36 msgid "Language ID for Pygments highlighting in source windows." -msgstr "" +msgstr "ID языка для подсветки пигмент в исходных окнах." #: judge/models/runtime.py:37 msgid "code template" -msgstr "" +msgstr "шаблон кода" #: judge/models/runtime.py:38 msgid "Code template to display in submission editor." -msgstr "" +msgstr "Шаблон кода для отображения в редакторе представления." #: judge/models/runtime.py:39 msgid "runtime info override" -msgstr "" +msgstr "переопределение информации о времени выполнения" #: 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 "" +msgstr "Не устанавливайте это, если не знаете, что вы делаете! Это переопределит обычно более конкретные, суровые данные о времени выполнения!" #: judge/models/runtime.py:42 msgid "language description" -msgstr "" +msgstr "описание языка" #: judge/models/runtime.py:43 msgid "Use this field to inform users of quirks with your environment, additional restrictions, etc." -msgstr "" +msgstr "Используйте это поле для информирования пользователей о окружении, дополнительных ограничениях и т.д." #: judge/models/runtime.py:45 msgid "extension" -msgstr "" +msgstr "расширение" #: judge/models/runtime.py:46 msgid "The extension of source files, e.g., \"py\" or \"cpp\"." -msgstr "" +msgstr "Расширение исходных файлов, например \"py\" или\"cpp\"." #: judge/models/runtime.py:112 msgid "languages" @@ -2465,360 +2474,360 @@ msgstr "языки" #: judge/models/runtime.py:116 msgid "language to which this runtime belongs" -msgstr "" +msgstr "язык, на котором принадлежит этот runtime" #: judge/models/runtime.py:117 msgid "judge on which this runtime exists" -msgstr "" +msgstr "судья, на котором существует эта среда выполнения" #: judge/models/runtime.py:118 msgid "runtime name" -msgstr "" +msgstr "Название времени выполнения." #: judge/models/runtime.py:119 msgid "runtime version" -msgstr "" +msgstr "версия для выполнения" #: judge/models/runtime.py:120 msgid "order in which to display this runtime" -msgstr "" +msgstr "порядок отображения этого времени выполнения" #: judge/models/runtime.py:124 msgid "judge name" -msgstr "" +msgstr "имя судьи" #: judge/models/runtime.py:124 msgid "Server name, hostname-style." -msgstr "" +msgstr "Имя сервера, стиль - название хоста." #: judge/models/runtime.py:126 msgid "time of creation" -msgstr "" +msgstr "время создания" #: judge/models/runtime.py:127 msgid "A key to authenticate this judge." -msgstr "" +msgstr "Ключ для аутентификации этого судьи." #: judge/models/runtime.py:128 msgid "authentication key" -msgstr "" +msgstr "Ключ аутентификации" #: judge/models/runtime.py:129 msgid "block judge" -msgstr "" +msgstr "судья блока" #: judge/models/runtime.py:130 msgid "Whether this judge should be blocked from connecting, even if its key is correct." -msgstr "" +msgstr "Следует ли заблокировать подключение к этому судье, даже если его ключ правильный." #: judge/models/runtime.py:132 msgid "disable judge" -msgstr "" +msgstr "отключить судью" #: judge/models/runtime.py:133 msgid "Whether this judge should be removed from judging queue." -msgstr "" +msgstr "Следует ли исключить этого судью из очереди судейства." #: judge/models/runtime.py:134 msgid "judge online status" -msgstr "" +msgstr "статус судьи онлайн" #: judge/models/runtime.py:135 msgid "judge start time" -msgstr "" +msgstr "оценивайте время начала" #: judge/models/runtime.py:136 msgid "response time" -msgstr "" +msgstr "время ответа" #: judge/models/runtime.py:137 msgid "system load" -msgstr "" +msgstr "системная нагрузка" #: judge/models/runtime.py:138 msgid "Load for the last minute, divided by processors to be fair." -msgstr "" +msgstr "Загрузка за последнюю минуту, разделенная по процессорам для справедливости." #: judge/models/runtime.py:140 msgid "last connected IP" -msgstr "" +msgstr "последний подключенный IP" #: judge/models/runtime.py:142 judge/models/runtime.py:191 msgid "judges" -msgstr "" +msgstr "судья" #: judge/models/runtime.py:190 msgid "judge" -msgstr "" +msgstr "судья" #: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:66 msgid "Accepted" -msgstr "" +msgstr "Принято" #: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" -msgstr "" +msgstr "Неправильный ответ" #: judge/models/submission.py:24 judge/models/submission.py:53 msgid "Time Limit Exceeded" -msgstr "" +msgstr "Превышено ограничение по времени" #: judge/models/submission.py:25 judge/models/submission.py:54 msgid "Memory Limit Exceeded" -msgstr "" +msgstr "Превышено ограничение по памяти" #: judge/models/submission.py:26 judge/models/submission.py:55 msgid "Output Limit Exceeded" -msgstr "" +msgstr "Превышено ограничение вывода" #: judge/models/submission.py:27 judge/models/submission.py:56 msgid "Invalid Return" -msgstr "" +msgstr "Недопустимый возврат" #: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" -msgstr "" +msgstr "Ошибка Runtime" #: judge/models/submission.py:29 judge/models/submission.py:44 #: judge/models/submission.py:58 judge/utils/problems.py:68 msgid "Compile Error" -msgstr "" +msgstr "Ошибка компиляции" #: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" -msgstr "" +msgstr "Внутренняя ошибка" #: judge/models/submission.py:31 judge/models/submission.py:52 msgid "Short Circuited" -msgstr "" +msgstr "Короткая схема" #: judge/models/submission.py:32 judge/models/submission.py:45 #: judge/models/submission.py:64 msgid "Aborted" -msgstr "" +msgstr "Отменено" #: judge/models/submission.py:39 judge/models/submission.py:60 msgid "Queued" -msgstr "" +msgstr "В очереди" #: judge/models/submission.py:40 judge/models/submission.py:61 msgid "Processing" -msgstr "" +msgstr "Обработка" #: judge/models/submission.py:41 judge/models/submission.py:62 msgid "Grading" -msgstr "" +msgstr "Проверка" #: judge/models/submission.py:42 judge/models/submission.py:63 msgid "Completed" -msgstr "" +msgstr "Выполнено" #: judge/models/submission.py:59 msgid "Internal Error (judging server error)" -msgstr "" +msgstr "Внутренняя ошибка (судя по ошибке сервера)" #: judge/models/submission.py:69 msgid "submission time" -msgstr "" +msgstr "время сдачи" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" -msgstr "" +msgstr "время выполнения" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" -msgstr "" +msgstr "использование памяти" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" -msgstr "" +msgstr "начисленные баллы" #: judge/models/submission.py:73 msgid "submission language" -msgstr "" +msgstr "язык подачи заявки" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" -msgstr "" +msgstr "Статус" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" -msgstr "" +msgstr "результат" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" -msgstr "" +msgstr "ошибки компиляции" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" -msgstr "" +msgstr "пакетные обращения" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" -msgstr "" +msgstr "точки тестового примера" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" -msgstr "" +msgstr "общее количество баллов в тестовом примере" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" -msgstr "" +msgstr "оценивается на" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" -msgstr "" +msgstr "время рассмотрения заявки судьей" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" -msgstr "" +msgstr "дата последнего повторного рассмотрения администратором" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" -msgstr "" +msgstr "был запущен только в предварительных тестах" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" -msgstr "" +msgstr "submission lock" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" -msgstr "" +msgstr "Отправка %(id)d %(problem)s %(user)s" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" -msgstr "" +msgstr "Прервать любую отправку" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" -msgstr "" +msgstr "Пересмотрите представление" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" -msgstr "" +msgstr "Рассматривать множество представлений" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" -msgstr "" +msgstr "Отправить без ограничения" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" -msgstr "" +msgstr "Просмотр отправленных материалов" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" -msgstr "" +msgstr "Повторно отправлять чужие заявки" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" -msgstr "" +msgstr "Изменить статус блокировки отправки" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" -msgstr "" +msgstr "сдачи" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" -msgstr "" +msgstr "связанное представление" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" -msgstr "" +msgstr "исходный код" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" -msgstr "" +msgstr "Источник %(submission)s" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" -msgstr "" +msgstr "источник представления" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" -msgstr "" +msgstr "источник представления" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" -msgstr "" +msgstr " ID тестового кейса" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" -msgstr "" +msgstr "статус флаг" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" -msgstr "" +msgstr "возможных баллов" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" -msgstr "" +msgstr "номер пакета" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" -msgstr "" +msgstr "оценка обратной связи" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" -msgstr "" +msgstr "расширенная обратная связь" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" -msgstr "" +msgstr "вывод программы" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" -msgstr "" +msgstr "тестовый пример представления" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" -msgstr "" +msgstr "тестовый пример представлении" #: judge/models/ticket.py:10 msgid "ticket title" -msgstr "" +msgstr "название заявки" #: judge/models/ticket.py:11 msgid "ticket creator" -msgstr "" +msgstr "создатель заявки" #: judge/models/ticket.py:13 msgid "creation time" -msgstr "" +msgstr "дата создания" #: judge/models/ticket.py:14 msgid "assignees" -msgstr "" +msgstr "исполнитель" #: judge/models/ticket.py:16 msgid "quick notes" -msgstr "" +msgstr "быстрые заметки" #: judge/models/ticket.py:17 msgid "Staff notes for this issue to aid in processing." -msgstr "" +msgstr "Служебные ноты для этого вопроса, чтобы помочь в обработке." #: judge/models/ticket.py:18 msgid "linked item type" -msgstr "" +msgstr "тип связанного товара" #: judge/models/ticket.py:20 msgid "linked item ID" -msgstr "" +msgstr "ID связанного элемента" #: judge/models/ticket.py:22 msgid "is ticket open?" -msgstr "" +msgstr "заявка открыт?" #: judge/models/ticket.py:25 judge/models/ticket.py:30 msgid "ticket" -msgstr "" +msgstr "Заявка" #: judge/models/ticket.py:26 msgid "tickets" -msgstr "" +msgstr "Заявки" #: judge/models/ticket.py:34 msgid "message body" @@ -2826,25 +2835,15 @@ msgstr "тело сообщения" #: judge/models/ticket.py:35 msgid "message time" -msgstr "" +msgstr "Время отправки сообщений" #: judge/models/ticket.py:38 msgid "ticket message" -msgstr "" +msgstr "сообщение заявки" #: judge/models/ticket.py:39 msgid "ticket messages" -msgstr "" - -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" +msgstr "сообщения о заявках" #: judge/ratings.py:194 msgid "Newbie" @@ -2852,7 +2851,7 @@ msgstr "Новичок" #: judge/ratings.py:195 msgid "Amateur" -msgstr "" +msgstr "Начинающий" #: judge/ratings.py:196 msgid "Expert" @@ -2872,92 +2871,116 @@ msgstr "Гроссмейстер" #: judge/ratings.py:200 msgid "Target" -msgstr "" +msgstr "Цели" #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" -msgstr "" +msgstr "Пересчет баллов за конкурс" #: judge/tasks/contest.py:40 msgid "Running MOSS" -msgstr "" +msgstr "Запуск MOSS" #: judge/tasks/submission.py:47 msgid "Modifying submissions" -msgstr "" +msgstr "Изменение представлении" #: judge/tasks/submission.py:60 msgid "Recalculating user points" -msgstr "" +msgstr "Пересчет точек пользователя" #: judge/tasks/user.py:49 msgid "Applying filters" -msgstr "" +msgstr "Применение фильтров" #: judge/tasks/user.py:64 msgid "Preparing your submission data" -msgstr "" +msgstr "Подготовка ваших данных для представления" #: judge/tasks/user.py:95 msgid "Preparing your comment data" -msgstr "" +msgstr "Подготовка ваших данных для комментариев" + +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "Доступ к вашему провайдеру электронной почты запрещен из-за истории злоупотреблений. Пожалуйста, используйте надежного поставщика услуг электронной почты." + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "Страница {номер_страниц} или {tвсего_страниц} " -#: judge/utils/problem_data.py:63 +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." -msgstr "" +msgstr "Пустые партии не допускаются." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." -msgstr "" +msgstr "Баллы должны быть определены для не пакетного регистра #%d." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" -msgstr "" +msgstr "Входной файл для заявки %d не существует: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" -msgstr "" +msgstr "Выходной файл для заявки %d не существует: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." +msgstr "Пакетный стартовый регистр #%d требует точек." + +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:129 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "Попытка завершить партию вне одной в случае #%d." + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" -msgstr "" +msgstr "Как вы испортили zip-путь?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" -msgstr "" +msgstr "Как вы повредили путь к генератору?" #: judge/utils/problems.py:67 msgid "Wrong" -msgstr "" +msgstr "Неправильно" #: judge/utils/problems.py:69 msgid "Timeout" -msgstr "" +msgstr "Время ожидания истекло" #: judge/utils/problems.py:70 msgid "Error" -msgstr "" +msgstr "Ошибка" #: judge/utils/pwned.py:109 msgid "This password is too common." -msgstr "" +msgstr "Этот пароль слишком распространен." #: judge/utils/pwned.py:112 msgid "Your password can't be a commonly used password." -msgstr "" +msgstr "Ваш пароль не может быть обычно используемым паролем." #: judge/utils/timedelta.py:49 msgctxt "time format with day" @@ -2996,45 +3019,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" -msgstr "" +msgstr "%d страниц сообщений" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -3043,111 +3066,111 @@ msgstr "" msgid "Contests" msgstr "" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" -msgstr "" +msgstr "F Y года" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "Онлайн" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" @@ -3176,412 +3199,420 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" -msgstr "" +msgstr "Запрос на присоединение %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" -msgstr "" +msgstr "Подробная информация о запросе на присоединение" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" -msgstr "" +msgstr "Управление запросами на присоединение для %s" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." -msgstr[0] "" +msgstr[0] "Ваша организация может принять только на %d больше участников." msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "Ваша организация может принимать только на %d больше участников." -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." -msgstr[0] "" +msgstr[0] "Вы не можете одобрить пользователя %d." msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "Вы не можете одобрить пользователей %d." -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." -msgstr[0] "" +msgstr[0] " Одобренный пользователь %d." msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "Approved %d users." -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." -msgstr[0] "" +msgstr[0] "Отклоненный пользователь %d." msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "Отклоненные пользователи %d." -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" -msgstr "" +msgstr "Редактирование %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" -msgstr "" +msgstr "Не удается отредактировать организацию" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." -msgstr "" +msgstr "Вам не разрешено редактировать эту организацию." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." -msgstr "" +msgstr "Вам не разрешается исключать людей из этой организации." -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" -msgstr "" +msgstr "Не могу сбросить пользователя" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" -msgstr "" +msgstr "Пользователь, которого вы пытаетесь исключить, не существует!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" -msgstr "" +msgstr "Пользователь, которого вы пытаетесь исключить, не входит в организацию: %s" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" -msgstr "" +msgstr "Класс {название} в {организации}" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" -msgstr "" +msgstr "Класс {название} - {организации}" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" -msgstr "" +msgstr "Просьба присоединиться {название} в {организации}" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" -msgstr "" +msgstr "Такой проблемы нет" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." -msgstr "" +msgstr "Не удалось найти задачу с кодом \"%s\"." -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" -msgstr "" +msgstr "Разбор для {0}" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" -msgstr "" +msgstr "Такой редакционной статьи нет" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." -msgstr "" +msgstr "Не удалось найти редакционную статью с кодом \"%s\"." -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." -msgstr "" +msgstr "Не разрешается голосовать по этой задаче." -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." -msgstr "" +msgstr "Не разрешается удалять голоса по этой задаче." -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" -msgstr "" +msgstr "Успешно" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" -msgstr "" +msgstr "Подчиняться %s" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." -msgstr "" +msgstr "Вы отправили слишком много заявок." -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" -msgstr "" +msgstr "Banned from submitting" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." -msgstr "" +msgstr "Вы были объявлены персоной non grata в связи с этойзадачой. Вам навсегда запрещено участвовать в решении этой задачи." -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" -msgstr "" +msgstr "Слишком много попыток" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." -msgstr "" +msgstr "Вы превысили ограничение на количество отправок для этой задачи." -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" -msgstr "" +msgstr "Вы хотите, чтобы я запрещал вас?" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" -msgstr "" +msgstr "Проблема клонирования" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" -msgstr "" +msgstr "Клонированная проблема из %s" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." -msgstr "" +msgstr "Аргументы средства проверки должны быть объектом JSON." -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." -msgstr "" +msgstr "Неверные аргументы проверки JSON." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" +msgstr "Ваш zip-файл недействителен!" + +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" -msgstr "" +msgstr "Сравнение заявок для {0}" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" -msgstr "" +msgstr "Редактирование данных для {0}" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" -msgstr "" +msgstr "Editing data for %s" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" -msgstr "" +msgstr "Сгенерированный init.yml для %s" #: judge/views/problem_manage.py:50 judge/views/problem_manage.py:53 #, python-format msgid "Managing submissions for %s" -msgstr "" +msgstr "Управление отправками для %s" #: judge/views/problem_manage.py:96 #, python-format msgid "Rejudging selected submissions for %s..." -msgstr "" +msgstr "Повторная оценка отобранных материалов на %s..." #: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." -msgstr "" +msgstr "Восстановление всех отправленных данных для %s..." #: judge/views/problem_manage.py:120 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Успешно запланированная отправка %d на повторное оценивание." +msgstr[1] "Успешно запланированная отправка %d на повторное оценивание." msgstr[2] "" -msgstr[3] "" +msgstr[3] "Успешно запланированные %d заявки на повторное оценивание." -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" -msgstr "" +msgstr "Лучшие решения для %s" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" -msgstr "" +msgstr "Лучшие решения для %(problem)s в%(contest)s" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" -msgstr "" +msgstr "Лучшие решения для решения задачи %(number)s в %(contest)s" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." -msgstr "" +msgstr "Имя пользователя должно содержать буквы, цифры или символы подчеркивания." + +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Часовой пояс" -#: judge/views/register.py:30 +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Предпочитаемый язык" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" -msgstr "" +msgstr "Подписаться на рассылку новостей?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." -msgstr "" - -#: judge/views/register.py:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "" +msgstr "Адрес электронной почты \"%s\" уже занят. Для каждого адреса разрешена только одна регистрация." -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Зарегистрироваться" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" -msgstr "" +msgstr "Недействительный ключ активации" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Ошибка авторизации" #: judge/views/stats.py:23 msgid "Other" -msgstr "" +msgstr "Другие" #: judge/views/stats.py:62 msgid "Language statistics" msgstr "Статистика языка" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Статус" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "" +msgid "Version" +msgstr "Версия" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." -msgstr "" +msgstr "В разрешении отказано. Решите %(problem)s, чтобы просмотреть ее." -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" -msgstr "" +msgstr "Не удается получить доступ к отправке" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." -msgstr "" +msgstr "В разрешении отказано." -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" -msgstr "" +msgstr "Представление %(problem)s от %(user)s" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" -msgstr "" +msgstr "Все сданные работы" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" -msgstr "" +msgstr "Все мои материалы" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3636,203 +3667,259 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Пользователь %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Войти" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." +msgstr "Вы отправили слишком много запросов на сброс пароля. Пожалуйста, повторите попытку позже." + +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." msgstr "" #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" -msgstr "" +msgstr "Вы уверены, что хотите предварительно оценить ВСЕ представленные материалы?" #: templates/admin/judge/contest/change_form.html:17 #: templates/admin/judge/contest/change_form.html:20 msgid "Rate" -msgstr "" +msgstr "Оценить" #: templates/admin/judge/contest/change_list.html:9 msgid "Rate all ratable contests" -msgstr "" +msgstr "Оцените все рейтинговые конкурсы" #: templates/admin/judge/judge/change_form.html:16 #: templates/admin/judge/judge/change_form.html:19 msgid "Disconnect" -msgstr "" +msgstr "Отключить" #: templates/admin/judge/judge/change_form.html:21 #: templates/admin/judge/judge/change_form.html:24 msgid "Terminate" -msgstr "" +msgstr "Прервать" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" -msgstr "" +msgstr "Отключено" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" -msgstr "" +msgstr "Включено" #: templates/admin/judge/problem/change_form.html:15 #: templates/admin/judge/problem/change_form.html:18 #: templates/user/user-base.html:37 msgid "View submissions" -msgstr "" +msgstr "Просмотр отправленных материалов" #: templates/admin/judge/problem/change_form.html:20 #: templates/admin/judge/problem/change_form.html:23 msgid "View problem votes" -msgstr "" +msgstr "Просмотр голосов за задачи" #: templates/admin/judge/profile/change_form.html:14 #: templates/admin/judge/profile/change_form.html:17 msgid "Edit user" -msgstr "" +msgstr "Изменить пользователя" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." -msgstr "" +msgstr "Привет, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" -msgstr "" +msgstr "Остановить работу от имени другого лица" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Bыйти" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Войти" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" -msgstr "" +msgstr "или" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" -msgstr "" +msgstr "Зарегистрироваться" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" -msgstr "" +msgstr "наблюдение" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." -msgstr "" +msgstr "Этот сайт лучше всего работает с включенным JavaScript." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" -msgstr "" +msgstr "работает на базе **DMOJ**" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Редактировать" #: templates/blog/content.html:27 #, python-format msgid "posted on %(time)s" -msgstr "" +msgstr "опубликовано на %(time)s" #: templates/blog/list.html:45 msgid "Blog" @@ -3849,24 +3936,24 @@ msgstr "Новости" #: templates/blog/list.html:66 #, python-brace-format msgid "posted on {time}" -msgstr "" +msgstr "опубликовано на {время}" #: templates/blog/list.html:66 #, python-brace-format msgid "posted {time}" -msgstr "" +msgstr "опубликовано {время}" #: templates/blog/list.html:81 msgid "Continue reading..." -msgstr "" +msgstr "Продолжить чтение..." #: templates/blog/list.html:95 templates/problem/problem.html:331 msgid "Clarifications" -msgstr "" +msgstr "Разъяснение" #: templates/blog/list.html:111 templates/problem/problem.html:342 msgid "No clarifications have been made at this time." -msgstr "" +msgstr "В настоящее время никаких разъяснений получено не было." #: templates/blog/list.html:119 templates/contest/list.html:189 msgid "Ongoing contests" @@ -3875,7 +3962,7 @@ msgstr "Текущие соревнования" #: templates/blog/list.html:127 #, python-format msgid "Ends in %(countdown)s." -msgstr "" +msgstr "Заканчивается на %(countdown)s" #: templates/blog/list.html:137 templates/contest/list.html:226 msgid "Upcoming contests" @@ -3884,32 +3971,32 @@ msgstr "Предстоящие соревнования" #: templates/blog/list.html:145 templates/contest/contest.html:41 #, python-format msgid "Starting in %(countdown)s." -msgstr "" +msgstr "Начало в %(countdown)s." #: templates/blog/list.html:154 msgid "Comment stream" -msgstr "" +msgstr "Поток комментариев" #: templates/blog/list.html:174 msgid "New problems" -msgstr "" +msgstr "Новые проблемы" #: templates/blog/list.html:191 msgid "My open tickets" -msgstr "" +msgstr "Мои открытые заявки" #: templates/blog/list.html:210 msgid "New tickets" -msgstr "" +msgstr "Новые заявки" #: templates/comments/edit-ajax.html:16 templates/comments/list.html:163 #: templates/ticket/ticket.html:181 msgid "Post!" -msgstr "" +msgstr "Публикация" #: templates/comments/list.html:2 templates/user/prepare-data.html:98 msgid "Comments" -msgstr "" +msgstr "Комментарии" #: templates/comments/list.html:5 msgid "There are no comments at the moment." @@ -3917,26 +4004,26 @@ msgstr "Еще нет ни одного комментария." #: templates/comments/list.html:12 msgid "Comments are disabled on this page." -msgstr "" +msgstr "Комментарии отключены на этой странице." #: templates/comments/list.html:31 templates/comments/list.html:40 msgid "Please log in to vote" -msgstr "" +msgstr "Пожалуйста, войдите, чтобы проголосовать" #: templates/comments/list.html:60 #, python-brace-format msgid "commented on {time}" -msgstr "" +msgstr "прокомментировал {время}" #: templates/comments/list.html:60 #, python-brace-format msgid "commented {time}" -msgstr "" +msgstr "прокомментировал {время}" #: templates/comments/list.html:71 #, python-format msgid "edit %(edits)s" -msgstr "" +msgstr "редактировать %(edits)s" #: templates/comments/list.html:73 templates/comments/media-js.html:77 msgid "edited" @@ -3952,19 +4039,19 @@ msgstr "Ответить" #: templates/comments/list.html:93 templates/comments/votes.html:1 msgid "Votes" -msgstr "" +msgstr "Голосование" #: templates/comments/list.html:94 msgid "Hide" -msgstr "" +msgstr "Скрыть" #: templates/comments/list.html:119 msgid "This comment is hidden due to too much negative feedback." -msgstr "" +msgstr "Этот комментарий скрыт из-за слишком много негативных отзывов." #: templates/comments/list.html:120 msgid "Show it anyway." -msgstr "" +msgstr "Всё равно показать." #: templates/comments/list.html:141 msgid "New comment" @@ -3972,41 +4059,41 @@ msgstr "Добавить комментарий" #: templates/comments/list.html:155 msgid "Invalid comment body." -msgstr "" +msgstr "Недопустимый текст комментария." #: templates/comments/media-js.html:12 msgid "Replying to comment" -msgstr "" +msgstr "Ответ на комментарий" #: templates/comments/media-js.html:72 #, python-brace-format msgid "edit {edits}" -msgstr "" +msgstr "редактировать {edits}" #: templates/comments/media-js.html:75 msgid "original" -msgstr "" +msgstr "оригинал" #: templates/comments/media-js.html:101 #, python-brace-format msgid "Could not vote: {error}" -msgstr "" +msgstr "Не смог проголосовать: {ошибка}" #: templates/comments/media-js.html:137 msgid "Are you sure you want to hide this comment?" -msgstr "" +msgstr "Вы уверены, что хотите скрыть этот комментарий?" #: templates/comments/media-js.html:145 msgid "Could not hide comment." -msgstr "" +msgstr "Не удалось скрыть комментарий." #: templates/comments/media-js.html:180 msgid "updated" -msgstr "" +msgstr "Обновлено" #: templates/comments/media-js.html:182 msgid "Failed to update comment body." -msgstr "" +msgstr "Не удалось обновить комментарий" #: templates/comments/media-js.html:185 #, python-brace-format @@ -4025,15 +4112,15 @@ msgstr "" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4114,7 +4201,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Статистика" @@ -4204,7 +4291,7 @@ msgstr "" #: templates/contest/contest.html:62 #, python-format msgid "%(time_limit)s window between %(start_time)s and %(end_time)s" -msgstr "" +msgstr "%(time_limit)s окно между %(start_time)s и %(end_time)s" #: templates/contest/contest.html:65 #, python-format @@ -4298,11 +4385,11 @@ msgstr "" #: templates/contest/contest.html:146 msgid "Some or all of these problems **have a submission limit**." -msgstr "" +msgstr "Некоторые или все задачи **имеют ограничение на количество отправок**." #: templates/contest/contest.html:148 msgid "There is **no submission limit** for any of these problems." -msgstr "" +msgstr "**Нет ограничений на количество отправок** для решения этих задач." #: templates/contest/contest.html:154 #, python-format @@ -4319,60 +4406,60 @@ msgstr "" #: templates/contest/contest.html:167 msgid "The scoreboard will be **hidden** for the entire duration of the contest." -msgstr "" +msgstr "Табло будет ** скрыто** на все время проведения конкурса." #: templates/contest/contest.html:169 msgid "The scoreboard will be **hidden**, even after the contest is over." -msgstr "" +msgstr "Табло будет ** скрыто** даже после окончания конкурса." #: templates/contest/contest.html:174 msgid "An **access code is required** to join the contest." -msgstr "" +msgstr "Для участия в конкурсе требуется ** код доступа**." #: templates/contest/contest.html:197 msgid "AC Rate" -msgstr "" +msgstr "AC тариф" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Пользователи" #: templates/contest/contest.html:200 msgid "Editorials" -msgstr "" +msgstr "Редакция" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" -msgstr "" +msgstr "Редакция" #: templates/contest/list.html:17 templates/contest/media-js.html:9 #: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" -msgstr "" +msgstr "Вы уверены, что хотите присоединиться" #: templates/contest/list.html:18 msgid "Joining a contest for the first time starts your timer, after which it becomes unstoppable." -msgstr "" +msgstr "При первом участии в конкурсе запускается ваш таймер, после чего егоневозможно остановить." #: templates/contest/list.html:70 msgid "private" -msgstr "" +msgstr "частный" #: templates/contest/list.html:75 msgid "rated" -msgstr "" +msgstr "оценено" #: templates/contest/list.html:102 #, python-format msgid "%(time_limit)s window" -msgstr "" +msgstr "%(time_limit)s окно" #: templates/contest/list.html:105 #, python-format msgid "%(duration)s long" -msgstr "" +msgstr "%(duration)s длительности " #: templates/contest/list.html:125 templates/contest/list.html:137 msgid "Join" @@ -4380,11 +4467,11 @@ msgstr "Присоединиться" #: templates/contest/list.html:131 msgid "Spectate" -msgstr "" +msgstr "Наблюдать" #: templates/contest/list.html:147 msgid "Active contests" -msgstr "" +msgstr "Активные конкурсы" #: templates/contest/list.html:151 templates/contest/list.html:193 #: templates/contest/list.html:231 templates/contest/list.html:268 @@ -4394,21 +4481,21 @@ msgstr "Соревнование" #: templates/contest/list.html:168 #, python-format msgid "Window ends in %(countdown)s" -msgstr "" +msgstr "Окно заканчивается в %(countdown)s" #: templates/contest/list.html:170 templates/contest/list.html:209 #, python-format msgid "Ends in %(countdown)s" -msgstr "" +msgstr "Заканчивается в %(countdown)s" #: templates/contest/list.html:243 #, python-format msgid "Starting in %(countdown)s" -msgstr "" +msgstr "Начало в %(countdown)s." #: templates/contest/list.html:254 msgid "There are no scheduled contests at this time." -msgstr "" +msgstr "На данный момент нет запланированных конкурсов." #: templates/contest/list.html:260 msgid "Past contests" @@ -4424,65 +4511,65 @@ msgstr "Вы не можете вернуться к виртуального у #: templates/contest/media-js.html:10 msgid "Joining a contest starts your timer, after which it becomes unstoppable." -msgstr "" +msgstr "Присоединение к конкурсу запускает ваш таймер, после чего его невозможно остановить." #: templates/contest/media-js.html:16 #, python-format msgid "Joining this contest will leave %(contest)s." -msgstr "" +msgstr "Присоединившись к этому конкурсу, вы покинете %(contest)s." #: templates/contest/moss.html:28 msgid "Are you sure you want to MOSS the contest?" -msgstr "" +msgstr "Вы уверены, что хотите МОСС конкурс?" #: templates/contest/moss.html:31 msgid "Are you sure you want to delete the MOSS results?" -msgstr "" +msgstr "Вы уверены, что хотите удалить результаты MOSS?" #: templates/contest/moss.html:56 #, python-format msgid "%(count)s submission" msgid_plural "%(count)s submissions" -msgstr[0] "" +msgstr[0] "%(считать) подача" msgstr[1] "" msgstr[2] "" -msgstr[3] "" +msgstr[3] "%(считать) подачи" #: templates/contest/moss.html:62 msgid "No submissions" -msgstr "" +msgstr "Нет сданных работ" #: templates/contest/moss.html:76 msgid "Re-MOSS contest" -msgstr "" +msgstr "Конкурс Re-MOSS" #: templates/contest/moss.html:84 msgid "Delete MOSS results" -msgstr "" +msgstr "Удалить результаты MOSS" #: templates/contest/private.html:5 msgid "This contest is private to specific users." -msgstr "" +msgstr "Этот конкурс является закрытым для определенных пользователей." #: templates/contest/private.html:11 msgid "Additionally, only the following organizations may access this contest:" -msgstr "" +msgstr "Кроме того, к этому конкурсу могут получить доступ только следующие организации:" #: templates/contest/private.html:13 msgid "Only the following organizations may access this contest:" -msgstr "" +msgstr "Доступ к этому конкурсу могут получить только следующие организации:" #: templates/contest/private.html:24 msgid "Additionally, only the following classes may access this contest:" -msgstr "" +msgstr "Кроме того, к этому конкурсу могут получить доступ только следующие классы:" #: templates/contest/private.html:26 msgid "Only the following classes may access this contest:" -msgstr "" +msgstr "Только следующие классы могут получить доступ к этому конкурсу:" #: templates/contest/private.html:28 msgid "Alternatively, the following classes may access this contest:" -msgstr "" +msgstr "В качестве альтернативы к этому конкурсу могут прийти следующие классы:" #: templates/contest/ranking-table.html:7 msgid "Organization" @@ -4491,60 +4578,60 @@ msgstr "Организация" #: templates/contest/ranking-table.html:27 #, python-brace-format msgid "Started on {time}" -msgstr "" +msgstr "Начато с {время}" #: templates/contest/ranking-table.html:27 #, python-brace-format msgid "Started {time}" -msgstr "" +msgstr "Начатый {время}" #: templates/contest/ranking-table.html:32 msgid "Participation ended." -msgstr "" +msgstr "Участие завершено." #: templates/contest/ranking-table.html:42 msgid "Un-Disqualify" -msgstr "" +msgstr "Отменить дисквалификацию" #: templates/contest/ranking-table.html:45 msgid "Disqualify" -msgstr "" +msgstr "Дисквалифицировать" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" -msgstr "" +msgstr "Вы уверены, что хотите отменить это участие?" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" -msgstr "" +msgstr "Вы уверены, что хотите отменить дисквалификацию этого участника?" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" -msgstr "" +msgstr "Просмотр участия пользователя" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" -msgstr "" +msgstr "Показать организации" #: templates/contest/stats.html:38 msgid "Problem Status Distribution" -msgstr "" +msgstr "Распределение статуса задачи" #: templates/contest/stats.html:43 msgid "Problem AC Rate" -msgstr "" +msgstr "AC рейтинги задачи" #: templates/contest/stats.html:48 templates/stats/language.html:16 msgid "Submissions by Language" -msgstr "" +msgstr "Отправка по языку" #: templates/contest/stats.html:54 templates/stats/language.html:26 msgid "Language AC Rate" -msgstr "" +msgstr "AC рейтинг языка" #: templates/license.html:12 msgid "Visit source" -msgstr "" +msgstr "Источник посещения" #: templates/newsletter/common.html:6 #: templates/newsletter/subscription_unsubscribe_activated.html:3 @@ -4563,22 +4650,22 @@ msgstr "активировать" #: templates/newsletter/subscription_unsubscribe_activated.html:8 msgid "You have successfully been unsubscribed." -msgstr "" +msgstr "Вы успешно отписались от рассылки." #: templates/newsletter/subscription_unsubscribe_email_sent.html:3 #: templates/newsletter/subscription_unsubscribe_email_sent.html:6 #: templates/newsletter/subscription_unsubscribe_user.html:3 #: templates/newsletter/subscription_unsubscribe_user.html:6 msgid "Newsletter unsubscribe" -msgstr "" +msgstr "Отписаться от рассылки" #: templates/newsletter/subscription_unsubscribe_email_sent.html:8 msgid "Your unsubscription request has successfully been received. An email has been sent to you with a link you need to follow in order to confirm your unsubscription." -msgstr "" +msgstr "Ваш запрос на отмену подписки успешно получен. Вам было отправлено электронное письмо со ссылкой, по которой вам необходимо перейти, чтобы подтвердить отказ от подписки." #: templates/newsletter/subscription_unsubscribe_user.html:17 msgid "Do you want to unsubscribe from this newsletter?" -msgstr "" +msgstr "Вы хотите отписаться от этой рассылки?" #: templates/newsletter/subscription_unsubscribe_user.html:21 msgid "Unsubscribe" @@ -4589,7 +4676,7 @@ msgstr "Отписаться" #: templates/newsletter/subscription_update_email_sent.html:3 #: templates/newsletter/subscription_update_email_sent.html:6 msgid "Newsletter update" -msgstr "" +msgstr "Обновление рассылки" #: templates/newsletter/subscription_update.html:9 msgid "Due to a technical error we were not able to submit your confirmation email. This could be because your email address is invalid." @@ -4693,6 +4780,17 @@ msgstr "Время:" msgid "Reason:" msgstr "Причина:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Пользователь" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Время" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4709,7 +4807,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4745,59 +4843,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" -msgstr "" +msgstr "Ограничение вывода" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Тип" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Отправить!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "Добавить новый пример" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4817,86 +4923,86 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Категория" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Типы" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." @@ -4905,7 +5011,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" @@ -4914,7 +5020,7 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4993,13 +5099,13 @@ msgstr "" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" -msgstr "" +msgstr "Ограничение по времени:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" -msgstr "" +msgstr "Ограничение по памяти:" #: templates/problem/problem.html:246 msgid "Problem type" @@ -5038,14 +5144,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Поиск задачи" @@ -5083,8 +5181,8 @@ msgstr "" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "" @@ -5093,7 +5191,7 @@ msgid "Random" msgstr "Случайная задача" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5105,20 +5203,20 @@ msgstr "" msgid "Date" msgstr "" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -5127,11 +5225,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5240,6 +5338,72 @@ msgstr[3] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" +msgstr[3] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5343,7 +5507,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Продолжить >" @@ -5356,36 +5520,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Эл. почта" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "выбрать на карте" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "Уведомлять меня о предстоящих соревнованиях" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "Зарегистрироваться!" @@ -5419,7 +5587,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5427,17 +5595,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5446,7 +5614,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5464,12 +5632,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5538,7 +5706,7 @@ msgid "Judges" msgstr "" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5563,27 +5731,27 @@ msgstr "" msgid "Error information" msgstr "Сведения об ошибке" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5620,7 +5788,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5706,15 +5874,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5747,23 +5915,23 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" @@ -5771,11 +5939,11 @@ msgstr[1] "" msgstr[2] "" msgstr[3] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5826,152 +5994,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Часовой пояс:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Язык:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" @@ -6155,16 +6323,16 @@ msgstr "" #: templates/user/user-problems.html:96 #, python-format msgid "%(group)s (%(val)s points)" -msgstr "" +msgstr "%(group)s (%(val)s баллов)" #: templates/user/user-problems.html:115 #, python-format msgid "%(points)s / %(total)s" -msgstr "" +msgstr "%(points)s / %(total)s" #: templates/user/user-tabs.html:7 msgid "Impersonate" -msgstr "" +msgstr "Представиться как пользователь" #: templates/user/user-tabs.html:10 msgid "Admin User" diff --git a/locale/ru/LC_MESSAGES/djangojs.po b/locale/ru/LC_MESSAGES/djangojs.po index 054041da41..b30245e092 100644 --- a/locale/ru/LC_MESSAGES/djangojs.po +++ b/locale/ru/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:44\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-10-25 01:00\n" "Last-Translator: \n" "Language-Team: Russian\n" "Language: ru_RU\n" @@ -17,7 +17,7 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" @@ -26,42 +26,42 @@ msgstr[1] "%d дней %h:%m:%s" msgstr[2] "%d дней %h:%m:%s" msgstr[3] "%d дней %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" #: resources/problem-vote.js:11 msgid "Vote on problem points" -msgstr "" +msgstr "Голосовать за точки задач" #: resources/problem-vote.js:16 #, javascript-format msgid "Unable to delete vote: %s" -msgstr "" +msgstr "Не удалось удалить голосование: %s" #: resources/problem-vote.js:28 #, javascript-format msgid "Edit points vote (%s)" -msgstr "" +msgstr "Редактировать голос очков (%s)" #: resources/problem-vote.js:34 #, javascript-format msgid "Unable to cast vote: %s" -msgstr "" +msgstr "Невозможно проголосовать: %s" #: resources/problem-vote.js:63 msgid "Number of votes for this point value" -msgstr "" +msgstr "Количество голосов за это значение" #: resources/user_profile.js:47 msgid "past year" -msgstr "" +msgstr "прошедший год" #: resources/user_profile.js:64 msgid "%(cnt)d total submission" msgid_plural "%(cnt)d total submissions" -msgstr[0] "" +msgstr[0] "Всего сабмитов %(cnt)d" msgstr[1] "" msgstr[2] "" msgstr[3] "" @@ -69,7 +69,7 @@ msgstr[3] "" #: resources/user_profile.js:69 msgid "%(cnt)d submission in the last year" msgid_plural "%(cnt)d submissions in the last year" -msgstr[0] "" +msgstr[0] "%(cnt)d сабмит за последний год" msgstr[1] "" msgstr[2] "" msgstr[3] "" @@ -77,7 +77,7 @@ msgstr[3] "" #: resources/user_profile.js:74 msgid "%(cnt)d submission in %(year)d" msgid_plural "%(cnt)d submissions in %(year)d" -msgstr[0] "" +msgstr[0] "%(cnt)d отправлено в %(year)d" msgstr[1] "" msgstr[2] "" msgstr[3] "" @@ -85,7 +85,7 @@ msgstr[3] "" #: resources/user_profile.js:88 msgid "%(cnt)d submission on %(date)s" msgid_plural "%(cnt)d submissions on %(date)s" -msgstr[0] "" +msgstr[0] "%(cnt)d отправлено в %(date)s" msgstr[1] "" msgstr[2] "" msgstr[3] "" diff --git a/locale/sr_Latn/LC_MESSAGES/django.po b/locale/sr_Latn/LC_MESSAGES/django.po index 0f052cf882..37c8dc885b 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -17,99 +17,103 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Katalonski" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Nemački" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Grčki" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Engleski" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Španski" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Francuski" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Hrvatski" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Mađarski" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japanski" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Korejski" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Brazilski Portugalski" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Rumunski" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Ruski" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Srpski (Latinica)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Turski" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vijetnamski" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Pojednostavljeni Kineski" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Klasični Kinezki" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" -msgstr "" +msgstr "Aktivacija je uspešna!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" -msgstr "" +msgstr "Registracija je uspešna" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" -msgstr "" +msgstr "Registracija nije dozvoljena " -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Naslovna Strana" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Sadržaj" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Sakrij komentare" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." @@ -117,11 +121,11 @@ msgstr[0] "%d komentar uspešno sakriven." msgstr[1] "%d komentari uspešno sakriveni." msgstr[2] "%d komentari uspešno sakriveni." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Sakrij komentare" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Prikaži komentare" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." @@ -129,37 +133,34 @@ msgstr[0] "%d komentar dostupan." msgstr[1] "%d Komentari dostupni." msgstr[2] "%d Komentari dostupni." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Prikaži komentare" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Povezana stranica" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "povezana stranica" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Uključena takmičenja" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Zadatak" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "Zadaci" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" -msgstr "" +msgstr "Ponovno pregledanje" #: judge/admin/contest.py:122 msgid "Settings" @@ -189,7 +190,11 @@ msgstr "Pristup" msgid "Justice" msgstr "Pravda" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Označi takmičenja kao vidljiva" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." @@ -197,11 +202,11 @@ msgstr[0] "%d Takmičenje je uspešno označeno kao vidljivo." msgstr[1] "%d Takmičenja su uspešno označena kao vidljiva." msgstr[2] "%d Takmičenja su uspešno označena kao vidljiva." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Označi takmičenja kao vidljiva" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Označi takmičenja kao nevidljiva" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." @@ -209,11 +214,11 @@ msgstr[0] "%d Takmičenje je uspešno označeno kao nevidljivo." msgstr[1] "%d Takmičenja su uspešno označena kao nevidljiva." msgstr[2] "%d Takmičenja su uspešno označena kao nevidljiva." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "Označi takmičenja kao nevidljiva" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Zaključaj predaju takmičenja" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." @@ -221,11 +226,11 @@ msgstr[0] "%d Takmičenje uspešno zaključano." msgstr[1] "%d Takmičenja uspešno zaključana." msgstr[2] "%d Takmičenja uspešno zaključana." -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "Zaključaj predaju takmičenja" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Otključaj predaju takmičenja" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." @@ -233,11 +238,7 @@ msgstr[0] "%d Takmičenje uspešno otključano." msgstr[1] "%d Takmičenja uspešno otključana." msgstr[2] "%d Takmičenja uspešno otključana." -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "Otključaj predaju takmičenja" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." @@ -245,7 +246,11 @@ msgstr[0] "%d predaja je uspešno zakazana za ponovno ocenjivanje." msgstr[1] "%d predaje su uspešno zakazane za ponovno ocenjivanje." msgstr[2] "%d predaje su uspešno zakazane za ponovno ocenjivanje." -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Preračunati rezultati" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." @@ -253,45 +258,42 @@ msgstr[0] "%d učestvovanje preračunato." msgstr[1] "%d učestvovanja preračunata." msgstr[2] "%d učestvovanja preračunata." -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "Preračunati rezultati" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "korisničko ime" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "virtualno" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Kratak sadržaj" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "korisnik" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "objekat" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Pogledaj na sajtu" #: judge/admin/problem.py:21 msgid "Edit reason" -msgstr "" +msgstr "Izmeni razlog" #: judge/admin/problem.py:30 msgid "Describe the changes you made (optional)" @@ -306,8 +308,8 @@ msgid "Taxonomy" msgstr "Taksonomija" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Poeni" @@ -316,9 +318,8 @@ msgstr "Poeni" msgid "Limits" msgstr "Granice" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Jezik" @@ -326,11 +327,16 @@ msgstr "Jezik" msgid "History" msgstr "Istorija" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Autori" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "autori" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Podesi datum objavljivanja na današnji dan" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." @@ -338,11 +344,11 @@ msgstr[0] "%d datum objavljivanja zadatka uspešno ažuriran." msgstr[1] "%d datum objavljivanja zadataka uspešno ažuriran." msgstr[2] "%d datum objavljivanja zadataka uspešno ažuriran." -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "Podesi datum objavljivanja na današnji dan" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Obeleži zadatak kao javni" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." @@ -350,11 +356,11 @@ msgstr[0] "%d zadatak je uspešno označen kao javni." msgstr[1] "%d zadaci su uspešno označeni kao javni." msgstr[2] "%d zadaci su uspešno označeni kao javni." -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "Obeleži zadatak kao javni" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Obeleži zadatak kao privatni" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." @@ -362,43 +368,31 @@ msgstr[0] "%d zadatak je uspešno označen kao privatni." msgstr[1] "%d zadaci su uspešno označeni kao privatni." msgstr[2] "%d zadaci su uspešno označeni kao privatni." -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "Obeleži zadatak kao privatni" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "zadatak" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "vremenska zona" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Korisnik" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "email" -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Email" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Vremenska zona" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "datum pridruženja" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Preračunaj rezultate" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." @@ -406,30 +400,26 @@ msgstr[0] "%d korisnikov rezultat je preračunat." msgstr[1] "%d korisnikovi rezultati su preračunati." msgstr[2] "%d korisnikovi rezultati su preračunati." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Preračunaj rezultate" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" -msgstr "" +msgstr "Regeneriši" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Opis" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Informacija" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Sposobnosti" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Nijedan" @@ -448,12 +438,12 @@ msgstr "Nije prihvaćeno" #: judge/admin/submission.py:85 #, python-format msgid "%s (spectating)" -msgstr "" +msgstr "%s (posmatrač)" #: judge/admin/submission.py:87 #, python-format msgid "%s (virtual %d)" -msgstr "" +msgstr "%s (virtual %d)" #: judge/admin/submission.py:94 #, python-format @@ -461,19 +451,23 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s u %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Ponovo oceni izabrane predaje" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Nemate prava da ponovo ocenite predaje." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Nemate prava da ponovo ocenite TOLIKO puno predaja." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Ponovo oceni izabrane predaje" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Preračunaj izabrane predaje" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." @@ -481,40 +475,40 @@ msgstr[0] "%d predaja je uspešno preračunata." msgstr[1] "%d predaje su uspešno preračunate." msgstr[2] "%d predaje su uspešno preračunate." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Preračunaj izabrane predaje" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "kod zadatka" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Kod zadatka" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "ime zadatka" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Ime zadatka" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "vreme" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Vreme" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "memorija" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Memorija" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "jezik" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" -msgstr "" +msgstr "Zaključano" #: judge/admin/taxon.py:11 judge/admin/taxon.py:34 msgid "Included problems" @@ -536,13 +530,14 @@ msgstr "Online Sudija" msgid "Comment body" msgstr "Sastav komentara" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Trenutno ste ućutkani, skrati jezičinu." #: judge/comments.py:49 templates/comments/list.html:146 msgid "You must solve at least one problem before your voice can be heard." -msgstr "" +msgstr "Morate da rešite bar jedan zadatak pre što možete da komentarišete." #: judge/comments.py:96 msgid "Posted comment" @@ -555,19 +550,19 @@ msgstr "AtCoder" #: judge/contest_format/atcoder.py:117 judge/contest_format/default.py:79 #: judge/contest_format/icpc.py:127 judge/contest_format/legacy_ioi.py:97 msgid "The maximum score submission for each problem will be used." -msgstr "" +msgstr "Računa se najbolje rešenje za svaki zadatak." #: judge/contest_format/atcoder.py:122 judge/contest_format/icpc.py:132 #, python-format msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "Svako poslato rešenje, prve prvog sa najvećim brojem poena, će prouzrokovati **kaznu od %d minut**." +msgstr[1] "Svako poslato rešenje, prve prvog sa najvećim brojem poena, će prouzrokovati **kaznu od %d minuta**." +msgstr[2] "Svako poslato rešenje, prve prvog sa najvećim brojem poena, će prouzrokovati **kaznu od %d minuta**." #: judge/contest_format/atcoder.py:127 msgid "Ties will be broken by the last score altering submission time." -msgstr "" +msgstr "Izjednačenja će se rešavati gledajući vreme poslednjeg koda koji menja broj poena." #: judge/contest_format/default.py:18 msgid "Default" @@ -575,7 +570,7 @@ msgstr "Default" #: judge/contest_format/default.py:80 msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." -msgstr "" +msgstr "Izjednačenja će se rešavati gledajući sumu vremena poslednjih poslatih kodova po zadacima sa nenultim brojem poena." #: judge/contest_format/ecoo.py:18 msgid "ECOO" @@ -583,12 +578,12 @@ msgstr "ECOO" #: judge/contest_format/ecoo.py:130 msgid "The score on your **last** non-CE submission for each problem will be used." -msgstr "" +msgstr "Broj poena sa Vašeg **poslednjeg** ne-CE rešenja će se računati za svaki zadatak." #: judge/contest_format/ecoo.py:135 #, python-format msgid "There is a **%d bonus** for fully solving on your first non-CE submission." -msgstr "" +msgstr "Postoji **%d bonus** za potpuno rešavanje zadatka u prvom pokušaju." #: judge/contest_format/ecoo.py:141 #, python-format @@ -596,16 +591,16 @@ msgid "For every **%d minute** you submit before the end of your window, there w msgid_plural "For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus." msgstr[0] "" msgstr[1] "" -msgstr[2] "" +msgstr[2] "Za svakih **%d minuta** za koje pošaljete rešenje pre kraja svog prozora postoji bonus od **1** poena." #: judge/contest_format/ecoo.py:147 msgid "Ties will be broken by the sum of the last submission time on **all** problems." -msgstr "" +msgstr "Izjednačenja će se rešavati gledajući sumu vremena poslednjih poslatih kodova na **svim** zadacima." #: judge/contest_format/ecoo.py:149 judge/contest_format/ioi.py:102 #: judge/contest_format/legacy_ioi.py:103 msgid "Ties by score will **not** be broken." -msgstr "" +msgstr "Izjednačenja po broju poena se **neće** rešavati." #: judge/contest_format/icpc.py:19 msgid "ICPC" @@ -613,7 +608,7 @@ msgstr "ICPC" #: judge/contest_format/icpc.py:137 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score, followed by the time of the last score altering submission." -msgstr "" +msgstr "Izjednačenja će se rešavati gledajući sumu vremena poslednjih poslatih kodova koji menjaju broj poena na zadacima sa nenultim brojem poena, nakon čega se gleda vreme poslednjeg koda koji menja broj poena. " #: judge/contest_format/ioi.py:11 msgid "IOI" @@ -621,133 +616,141 @@ msgstr "IOI" #: judge/contest_format/ioi.py:96 msgid "The maximum score for each problem batch will be used." -msgstr "" +msgstr "Računa se najbolje rešenje po svakom podzadatku." #: judge/contest_format/ioi.py:99 judge/contest_format/legacy_ioi.py:100 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score." -msgstr "" +msgstr "Izjednačenja će se rešavati gledajući sumu vremena poslednjih poslatih kodova koji menjaju broj poena po zadacima sa nenultim brojem poena." #: judge/contest_format/legacy_ioi.py:18 msgid "IOI (pre-2016)" msgstr "IOI (pre-2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -msgstr[2] "" +msgstr[2] "Tokeni za autentifikaciju u dva koraka moraju imati {count} cifrara." -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Nevažeći token za dvofaktornu autentifikaciju." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "Scratch kod mora biti 16 Base32 karaktera." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "Nevažeći scratch kod." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Prijavi se za vesti sa takmičenja" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Dozvolite eksperimentalne karakteristike" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "Morate rešiti barem jedan zadatak pre nego što možete da ažurirate svoj profil." -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." -msgstr[0] "" +msgstr[0] "Ne možete biti član više od {count} javne organizacije." msgstr[1] "" msgstr[2] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Download komentare?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Download rešenja?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "Filtriraj po glob kodu zadatka:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "Ostavi prazno da uključiš sva rešenja" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Filtriraj po rezultatima:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "Izaberite barem jednu stvar za download." -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Bilo koji sudija" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Korisničko Ime" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Lozinka" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Nevažeća dužina koda." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Nevažeći WebAuthn odgovor." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." -msgstr "" +msgstr "Ni jedan WebAuthn challenge nije izdat." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "Nevažeći WebAuthn credential ID." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "Nevažeći token za dvofaktornu autentifikaciju ili scratch kod." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." -msgstr "" +msgstr "Morate naznačiti ili totp_token ili webauthn_response." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Kod zadatka mora biti ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Zadatak sa tim kodom več postoji." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "ID takmičenja mora biti ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Takmičenje sa tim ključem već postoji." @@ -756,108 +759,114 @@ msgstr "Takmičenje sa tim ključem već postoji." msgid "N j, Y, g:i a" msgstr "j. N Y. \\у H:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "na {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "Prati temu sajta" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Ostavi kao LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Samo SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Samo MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax sa SVG alternativom" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Otkrij najbolji kvalitet" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "Prati podrazumevana podešavanja " + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Svetla" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Tamna" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "Kod stranice mora biti ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "komentator" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "vreme predaje" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "povezana stranica" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "glasovi" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "body komentara" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "sakriveno" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "roditelj" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "revizije" + +#: judge/models/comment.py:39 msgid "comment" msgstr "komentar" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "komentari" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Uvodnik za %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" -msgstr "" +msgstr "%(page)s od korisnika %(user)s" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -903,7 +912,7 @@ msgstr "Sakriveno tokom učestvovanja" #: judge/models/contest.py:65 msgid "Hidden permanently" -msgstr "" +msgstr "Trajno sakriven" #: judge/models/contest.py:67 msgid "contest id" @@ -913,16 +922,11 @@ msgstr "id takmičenja" msgid "contest name" msgstr "ime takmičenja" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "autori" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "Ovi korisnici će moći da edituju takmičenje." -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "kustos" @@ -930,7 +934,7 @@ msgstr "kustos" 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:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "testeri" @@ -940,15 +944,15 @@ msgstr "Ovi korisnici će moći da vide takmičenje, ali neće moći da ga editu #: judge/models/contest.py:80 msgid "testers see scoreboard" -msgstr "" +msgstr "testeri vide tabelu" #: judge/models/contest.py:81 msgid "If testers can see the scoreboard." -msgstr "" +msgstr "Ako testeri mogu da vide tabelu." #: judge/models/contest.py:82 msgid "testers see submissions" -msgstr "" +msgstr "testeri vide poslata rešenja" #: judge/models/contest.py:83 msgid "If testers can see in-contest submissions." @@ -956,22 +960,22 @@ msgstr "" #: judge/models/contest.py:84 msgid "spectators" -msgstr "" +msgstr "posmatrači" #: judge/models/contest.py:85 msgid "These users will be able to spectate the contest, but not see the problems ahead of time." -msgstr "" +msgstr "Ovi korisnici će moći da posmatraju takmičenje, ali ne i da bude zadatke pre vremena." #: judge/models/contest.py:88 judge/models/runtime.py:139 msgid "description" msgstr "opis" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "zadaci" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "vreme početka" @@ -979,12 +983,12 @@ msgstr "vreme početka" msgid "end time" msgstr "vreme kraja" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "vremensko ograničenje" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "vidljivo za javnost" @@ -1010,11 +1014,11 @@ msgstr "Ovi korisnici će moći da vide rezultate svih učesnika takmičenja." #: judge/models/contest.py:102 msgid "can see contest submissions" -msgstr "" +msgstr "može da vidi poslata rešenja " #: judge/models/contest.py:104 msgid "These users will be able to see in-contest submissions." -msgstr "" +msgstr "Ovi korisnici će moći da vide poslata rešenja u toku takmičenja " #: judge/models/contest.py:106 msgid "scoreboard visibility" @@ -1070,7 +1074,7 @@ msgstr "privatni takmičari" #: judge/models/contest.py:122 msgid "If non-empty, only these users may see the contest." -msgstr "" +msgstr "Ako je neprazno, samo ovi korisnici mogu da vide takmičenje." #: judge/models/contest.py:124 msgid "hide problem tags" @@ -1086,15 +1090,15 @@ msgstr "sakrij autore zadatka" #: judge/models/contest.py:128 msgid "Whether problem authors should be hidden by default." -msgstr "" +msgstr "Da li autori zadataka treba da budu podrazumevano sakriveni" #: judge/models/contest.py:130 msgid "run pretests only" -msgstr "" +msgstr "pregledaj samo pretest-ove" #: judge/models/contest.py:131 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 "" +msgstr "Da li judge-evi treba da pregledaju samo pretest-e, ili i sve test primere. Uglavnom postavljeno tokom takmičenja, onda uklonjeno pre ponovnog pregledanja svih poslatih rešenja kada se takmičenje završi." #: judge/models/contest.py:135 msgid "show short form settings display" @@ -1102,32 +1106,32 @@ msgstr "" #: judge/models/contest.py:136 msgid "Whether to show a section containing contest settings on the contest page or not." -msgstr "" +msgstr "Da li da se prikazuju podešavanja takmičenja na stranici takmičenja" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "organizacije" #: judge/models/contest.py:141 msgid "If non-empty, only these organizations may see the contest." -msgstr "" +msgstr "Ako je neprazno, samo ove organizacije mogu da vide takmičenje." #: judge/models/contest.py:142 msgid "limit organizations that can join" -msgstr "" +msgstr "ograničite koje organizacije mogu da se priključe " #: judge/models/contest.py:143 msgid "join organizations" -msgstr "" +msgstr "priključi se organizaciji" #: judge/models/contest.py:144 msgid "If non-empty, only these organizations may join the contest." -msgstr "" +msgstr "Ako je neprazno, samo ove organizacije mogu da se priključe takmičenju." #: judge/models/contest.py:146 judge/models/profile.py:143 msgid "classes" @@ -1138,7 +1142,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "OpenGraph slika" @@ -1158,9 +1162,9 @@ msgstr "broj aktivnih učesnika" msgid "contest summary" msgstr "kratak opis takmičenja" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." -msgstr "" +msgstr "Tekst koji se prikazuje u meta description tagu, npr. za društvene mreže." #: judge/models/contest.py:157 judge/models/profile.py:57 #: judge/models/profile.py:110 @@ -1171,7 +1175,7 @@ msgstr "access code" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "personae non gratae" @@ -1219,215 +1223,215 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Pogledajte privatna takmičenja" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "MOSS takmičenje" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "Napravi privatno takmičenje" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "Promeniti vidljivost takmičenja" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "takmičenje" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "takmičenja" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "povezana takmičenja" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "rezultat" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "zbirno vreme" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "diskvalifikovan" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" -msgstr "" +msgstr "učešće u takmičenju" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "učesnici takmičenja" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "poeni" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "delimičan" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "več testiran" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "redosled" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" -msgstr "" +msgstr "nadjačavanje prefiksne dužine izlaza" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" -msgstr "" +msgstr "maksimalan broj slanja" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "Maksimalan broj odgovora za ovaj zadatak, ili ostaviti prazno da nema ograničenja." -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "Zašto uključiti zadatak koji ne možete predati?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "zadatak na takmičenju" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "zadaci na takmičenju" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "predaja" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "učestvovanje" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." -msgstr "" +msgstr "Da li je ovo rešenje bilo pokretano samo na pretest-ima." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "predaja takmičenja" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "predaje takmičenja" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "rang" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "rangiranje" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" -msgstr "" +msgstr "sirov rejting" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" -msgstr "" +msgstr "nastup na takmičenju" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" -msgstr "" +msgstr "poslednje rangirano" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" -msgstr "" +msgstr "rejting takmičenja" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" -msgstr "" +msgstr "rejtinzi takmičenja" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" -msgstr "" +msgstr "moss rezultatat takmičenja" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" -msgstr "" +msgstr "moss rezultati takmičenja" #: judge/models/interface.py:17 judge/models/problem.py:60 msgid "key" @@ -1435,7 +1439,7 @@ msgstr "ključ" #: judge/models/interface.py:18 msgid "value" -msgstr "" +msgstr "vrednost" #: judge/models/interface.py:24 msgid "configuration item" @@ -1443,7 +1447,7 @@ msgstr "" #: judge/models/interface.py:25 msgid "miscellaneous configuration" -msgstr "" +msgstr "nestvrstane konfiguracije" #: judge/models/interface.py:37 msgid "navigation item" @@ -1455,11 +1459,11 @@ msgstr "" #: judge/models/interface.py:44 msgid "identifier" -msgstr "" +msgstr "identifikator" #: judge/models/interface.py:45 msgid "label" -msgstr "" +msgstr "oznaka" #: judge/models/interface.py:47 msgid "highlight regex" @@ -1471,15 +1475,15 @@ msgstr "" #: judge/models/interface.py:66 msgid "post title" -msgstr "" +msgstr "naslov posta" #: judge/models/interface.py:68 msgid "slug" msgstr "puž" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" -msgstr "" +msgstr "javna vidljivost" #: judge/models/interface.py:70 msgid "sticky" @@ -1503,7 +1507,7 @@ msgstr "Edituj sve objave" #: judge/models/interface.py:97 msgid "Edit post visibility" -msgstr "" +msgstr "Izmeni vidljivost posta" #: judge/models/interface.py:99 msgid "blog post" @@ -1530,7 +1534,7 @@ msgstr "ime kategorije zadatka" msgid "problem type" msgstr "tip zadatka" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "tipovi zadataka" @@ -1542,7 +1546,7 @@ msgstr "ID grupe zadataka" msgid "problem group name" msgstr "ime grupe zadataka" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "grupa zadataka" @@ -1579,7 +1583,7 @@ msgstr "URL za ikonu." msgid "license text" msgstr "tekst licence" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "licenca" @@ -1603,280 +1607,267 @@ msgstr "Dostupno ako je zadatak rešen" msgid "Only own submissions" msgstr "Samo svoja rešenja" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "kod zadatka" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "Kratak, jedinstveni kod za zadatak, koji se koristi u URL-u posle /problem/" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "ime zadatka" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "Puno ime zadatka, kao što je prikazano u listi zadataka." -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "sadržaj zadatka" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "kreatori" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "Ovi korisnici će moći da edituju zadatak, i biće navedeni kao autori." -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "Ovi korisnici će moći da edituju zadatak, ali neće biti navedeni kao autori." -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "Ovi korisnici će moći da vide privatni zadatak, ali neće moći da ga edituju." -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "Tip zadatka, kao što je prikazano na stranici zadatka." -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "Grupa zadatka, prikazana u okviru Kategorije u listi zadataka." -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "Vremensko ograničenje za ovaj zadatak, u sekundama. Delovi sekunda (npr. 1.5) su podržani." -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "ograničenje memorije" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "Memorijsko ograničenje za ovaj zadatak, u kilobytes (npr. 256mb = 262144 kilobytes)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "Poeni dodeljeni za rešen zadatak. Poeni su prikazani sa 'p' sufiksom ako je rešenje delimično priznato." -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "dozvoljava dodeljivanje delimičnih poena" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "dozvoljeni jezici" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "Lista dozvoljenih jezika za rešenja." -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." -msgstr "" +msgstr "Da li je judge-evima treba biti dozvoljeno da rukovode podacima ili ne." -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" -msgstr "" +msgstr "datum objavljivanja" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." -msgstr "" +msgstr "Nema magičnu sposobnost da se automatski objavi zbog kompatibilnosti unazad." -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." -msgstr "" +msgstr "Banuje označenog korisnika od slanja novih rešenja za ovaj zadatak." -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." -msgstr "" +msgstr "Licenca pod kojom je objavljen ovaj zadatak." -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" -msgstr "" +msgstr "sažetak zadatka" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "broj korisnika" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." -msgstr "" +msgstr "Broj korisnika koji su rešili ovaj zadatak." -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" -msgstr "" +msgstr "dozvolite potpun pristup markdown-u" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" -msgstr "" +msgstr "vidljivost koda poslatog rešenja" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." -msgstr "" +msgstr "Ako je privatno, samo ove organizacije mogu da vide zadatak." -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "Vidi sakrivene zadatke" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" -msgstr "" +msgstr "Izmeni sopstvene zadatke" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" -msgstr "" +msgstr "Izmeni sve zadatke" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" -msgstr "" +msgstr "Izmeni sve javne zadatke" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" -msgstr "" +msgstr "Kloniraj zadatak" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" -msgstr "" +msgstr "Promeni is_public polje" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" -msgstr "" +msgstr "Promeni is_manually_managed polje" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" -msgstr "" +msgstr "Vidi zadatke koji su privatni u organizaciji" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "jezik" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "prevedeno ime" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "preveden opis" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "prevod zadatka" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "prevodi zadatka" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" -msgstr "" +msgstr "pojašnjen zadatak" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" -msgstr "" +msgstr "pojašnjenje zadatka" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" -msgstr "" +msgstr "pojašnjenja zadatka" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" -msgstr "" +msgstr "ograničenja resursa specifična za neke jezike" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "datum objave" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "rešenje" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "rešenja" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1902,7 +1893,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1911,63 +1902,63 @@ msgstr "" #: judge/models/problem_data.py:30 msgid "Line-by-line" -msgstr "" +msgstr "Liniju po liniju" #: judge/models/problem_data.py:37 msgid "data zip file" -msgstr "" +msgstr "zip fajl sa podacima" #: judge/models/problem_data.py:39 msgid "generator file" -msgstr "" +msgstr "generatorski fajl" #: judge/models/problem_data.py:41 judge/models/problem_data.py:92 msgid "output prefix length" -msgstr "" +msgstr "dužina prefiksa izlaza" #: judge/models/problem_data.py:42 judge/models/problem_data.py:93 msgid "output limit length" -msgstr "" +msgstr "ograničenje za dužinu izlaza" #: judge/models/problem_data.py:43 msgid "init.yml generation feedback" -msgstr "" +msgstr "init.yml povratna informacija generisanja" #: judge/models/problem_data.py:44 judge/models/problem_data.py:94 msgid "checker" -msgstr "" +msgstr "proveravač" #: judge/models/problem_data.py:45 msgid "enable unicode" -msgstr "" +msgstr "aktiviraj unicode" #: judge/models/problem_data.py:46 msgid "disable bigInteger / bigDecimal" -msgstr "" +msgstr "deaktiviraj bigInteger / bigDecimal" #: judge/models/problem_data.py:47 judge/models/problem_data.py:95 msgid "checker arguments" -msgstr "" +msgstr "arugmenti za proveravač" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." -msgstr "" +msgstr "Argumenti za proveravač kao JSON objekat." #: judge/models/problem_data.py:79 msgid "problem data set" -msgstr "" +msgstr "skup podataka za zadatak" #: judge/models/problem_data.py:81 msgid "case position" -msgstr "" +msgstr "pozicija primera" #: judge/models/problem_data.py:82 msgid "case type" -msgstr "" +msgstr "tip primera" #: judge/models/problem_data.py:83 msgid "Normal case" -msgstr "" +msgstr "Običan primer" #: judge/models/problem_data.py:84 msgid "Batch start" @@ -1987,7 +1978,7 @@ msgstr "ime izlaznog fajla" #: judge/models/problem_data.py:89 msgid "generator arguments" -msgstr "" +msgstr "argumenti generatora" #: judge/models/problem_data.py:90 msgid "point value" @@ -1995,6 +1986,18 @@ msgstr "vrednost poena" #: judge/models/problem_data.py:91 msgid "case is pretest?" +msgstr "primer je pretest?" + +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "argumenti za proveravač kao JSON objekat" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" msgstr "" #: judge/models/profile.py:42 @@ -2055,7 +2058,7 @@ msgstr "Ova slika če zameniti default site logo za korisnike koji gledaju organ #: judge/models/profile.py:62 msgid "class membership required" -msgstr "" +msgstr "neophodno je članstvo klase" #: judge/models/profile.py:63 msgid "Whether members are compelled to select a class when joining." @@ -2074,7 +2077,7 @@ msgid "Edit all organizations" msgstr "Edit-uj sve organizacije" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organizacija" @@ -2115,7 +2118,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2140,26 +2143,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "vreme poslednjeg pristupa" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "poslednji IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "prikaži rang" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "Običan Korisnik" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "Pisac Zadatka" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2169,230 +2176,230 @@ msgstr "Pisac Zadatka" msgid "Admin" msgstr "Administrator" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "nemi komentar" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "U ćutanju je zlato." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "Korisnik neće biti rangiran." -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." -msgstr "" +msgstr "Korisnički definisan JavaScript za prilagođavanje" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "takmičenje u toku" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "math engine" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." -msgstr "" +msgstr "Rendering engine za renderovanje matematike." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" -msgstr "" +msgstr "TOTP 2FA je aktiviran" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." -msgstr "" +msgstr "Označi za aktiviranje TOTP dvofaktorne autentifikacije." -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" -msgstr "" +msgstr "WebAuthn 2FA je aktiviran" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." -msgstr "" +msgstr "Označi za aktiviranje WebAuthn dvofaktorne autentifikacije." -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" -msgstr "" +msgstr "TOTP ključ" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." -msgstr "" +msgstr "32-karakterni Base32-enkodirani ključ za TOTP." -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." -msgstr "" +msgstr "TOTP ključ mora biti prazan ili Base32-enkodirani string." -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" -msgstr "" +msgstr "scratch kodovi" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." -msgstr "" +msgstr "JSON niz 16-karakternih Base32-enkodiranih kodova za scratch kodove." -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." -msgstr "" +msgstr "Scratch kodovi moraju biti prazni ili JSON niz 16-karakternih Base32 kodova." -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" -msgstr "" +msgstr "poslednji TOTP vremenski kod" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "API token" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." -msgstr "" +msgstr "64-karakterni hex-enkoridani API pristupni token." -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" -msgstr "" +msgstr "API token mora biti None ili heksadecimalan" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "interne beleške" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." -msgstr "" +msgstr "Beleške za admine o ovom korisniku." -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" -msgstr "" +msgstr "poslednje vreme skidanja podataka" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" -msgstr "" +msgstr "nadjačavanje prikaznog imena" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." -msgstr "" +msgstr "Ime koje se prikauzje umesto korisničkog imena." -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" -msgstr "" +msgstr "Izmeni TOTP podešavanja" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "profil korisnika" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" -msgstr "" +msgstr "profili korisnika" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "ime uređaja" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" -msgstr "" +msgstr "javni ključ" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" -msgstr "" +msgstr "WebAuthn kredencijal: %(name)s" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" -msgstr "" +msgstr "WebAuthn kredencijal" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" -msgstr "" +msgstr "WebAuthn kredencijali" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" -msgstr "" +msgstr "datum zatraženja" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "status" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" -msgstr "" +msgstr "Na čekanju" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" -msgstr "" +msgstr "Odobreno" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Odbijeno" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "razlog" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" -msgstr "" +msgstr "nalog za pristup organizaciji" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" -msgstr "" +msgstr "nalozi za pristup organizaciji" #: judge/models/runtime.py:19 msgid "short identifier" -msgstr "" +msgstr "kratki identifikatori" #: judge/models/runtime.py:20 msgid "The identifier for this language; the same as its executor id for judges." -msgstr "" +msgstr "Identifikator za ovaj jezik; isti je kao executor id za judge-eve." #: judge/models/runtime.py:22 msgid "long name" -msgstr "" +msgstr "dugačko ime" #: judge/models/runtime.py:23 msgid "Longer name for the language, e.g. \"Python 2\" or \"C++11\"." -msgstr "" +msgstr "Duže ime za jezik, npr. \"Python 2\" ili \"C++11\"." #: judge/models/runtime.py:25 msgid "More readable, but short, name to display publicly; e.g. \"PY2\" or \"C++11\". If left blank, it will default to the short identifier." -msgstr "" +msgstr "Više čitljivo, ali kratko, ime za prikazivanje; npr \"PY2\" ili \"C++11\". Ako je ostavljeno prazno, koristi se vrednost za kratki identifikator." #: judge/models/runtime.py:29 msgid "common name" -msgstr "" +msgstr "zajedničko ime" #: 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 "" +msgstr "Zajedničko ime za jezik. Na primer, za C++03, C++11 i C++14 bi bilo \"C++\"." #: judge/models/runtime.py:32 msgid "ace mode name" @@ -2412,11 +2419,11 @@ msgstr "" #: judge/models/runtime.py:37 msgid "code template" -msgstr "" +msgstr "šablon koda" #: judge/models/runtime.py:38 msgid "Code template to display in submission editor." -msgstr "" +msgstr "Šablon koda za prikazivanje u urediniku rešenja." #: judge/models/runtime.py:39 msgid "runtime info override" @@ -2436,7 +2443,7 @@ msgstr "" #: judge/models/runtime.py:45 msgid "extension" -msgstr "" +msgstr "dodaci" #: judge/models/runtime.py:46 msgid "The extension of source files, e.g., \"py\" or \"cpp\"." @@ -2605,15 +2612,15 @@ msgstr "" msgid "submission time" msgstr "" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "" @@ -2621,141 +2628,141 @@ msgstr "" msgid "submission language" msgstr "" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "status" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "rezultat" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "greške u kompajliranju" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "statusna zastava" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2819,16 +2826,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2885,40 +2882,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2976,45 +2997,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Već ste glasali." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "Ne postoji takvo takmičenje" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Takmičenje sa \"%s\" ključem nije pronađeno." @@ -3023,111 +3044,111 @@ msgstr "Takmičenje sa \"%s\" ključem nije pronađeno." msgid "Contests" msgstr "Takmičenja" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "F Y." -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Učestvovanje" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "Oznaka takmičenja: %s" @@ -3156,76 +3177,76 @@ msgstr "" msgid "Runtimes" msgstr "" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizacije" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." @@ -3233,7 +3254,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." @@ -3241,7 +3262,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." @@ -3249,7 +3270,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." @@ -3257,152 +3278,160 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3430,51 +3459,51 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Vremenska zona" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Željeni jezik" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "" -#: 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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3486,77 +3515,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "" #: judge/views/status.py:108 -msgid "Version matrix" +msgid "Version" msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Sva rešenja" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Sva moja rešenja" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Sva rešenja od %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Sva rešenja za %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "Moja rešenja za %(problem)s" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(user)sa rešenja za %(problem)s" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "Moja rešenja u %(contest)s" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "" @@ -3611,102 +3640,157 @@ msgstr "" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "Nevažeće ime" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "Ne postoj takav korisnik" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j. M Y. \\у H:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "Skini vaše podatke" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3732,13 +3816,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "Uključi" @@ -3758,49 +3842,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Zdravo, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "ili" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Edit-uj" @@ -4000,15 +4085,15 @@ msgstr "Rezultat" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4089,7 +4174,7 @@ msgstr "" msgid "Info" msgstr "" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "" @@ -4307,7 +4392,7 @@ msgstr "" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "" @@ -4315,7 +4400,7 @@ msgstr "" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "" @@ -4481,19 +4566,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Pokaži organizacije" @@ -4664,6 +4749,17 @@ msgstr "Vreme:" msgid "Reason:" msgstr "Razlog:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Korisnik" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Vreme" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4680,7 +4776,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "" @@ -4716,59 +4812,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "Pogledaj YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Tip" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Predaj!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4787,86 +4891,86 @@ msgstr[0] "Autor:" msgstr[1] "" msgstr[2] "" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "Popularni zadaci" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Kategorija" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." @@ -4874,7 +4978,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" @@ -4882,7 +4986,7 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4960,13 +5064,13 @@ msgstr "Poeni:" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" -msgstr "" +msgstr "Vremensko ograničenje:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" -msgstr "" +msgstr "Ograničenje memorije:" #: templates/problem/problem.html:246 msgid "Problem type" @@ -5003,14 +5107,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Vremensko Ograničenje:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Ograničenje Memorije:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -5048,8 +5144,8 @@ msgstr "Tipovi zadatka" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Idi" @@ -5058,7 +5154,7 @@ msgid "Random" msgstr "" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5070,20 +5166,20 @@ msgstr "Rezultat" msgid "Date" msgstr "Datum" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" @@ -5091,11 +5187,11 @@ msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "" @@ -5202,6 +5298,70 @@ msgstr[2] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" +msgstr[2] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5305,7 +5465,7 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "" @@ -5318,36 +5478,40 @@ msgstr "" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Email" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "" @@ -5381,7 +5545,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5389,17 +5553,17 @@ msgid "Enable Two Factor Authentication" msgstr "Omogući Dvofaktornu Autentifikaciju" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5408,7 +5572,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5426,12 +5590,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5500,7 +5664,7 @@ msgid "Judges" msgstr "Sudije" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" +msgid "Versions" msgstr "" #: templates/submission/info-base.html:8 @@ -5525,27 +5689,27 @@ msgstr "" msgid "Error information" msgstr "" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5582,7 +5746,7 @@ msgstr "Pogledaj status" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "" @@ -5668,15 +5832,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "" @@ -5709,34 +5873,34 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" msgstr[2] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5787,152 +5951,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Rang" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Samo-opis:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Vremenska zona:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Jezik:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Math engine:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "Dvofaktorna autentifikacija je uključena:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "API token:" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "Sakriveno" + +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "Dvofaktorna autentifikacija je uključena:" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "Sakriveno" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "Dvofaktorna autentifikacija je isključena:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "API token:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "Izbriši" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "Dodaj" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" diff --git a/locale/sr_Latn/LC_MESSAGES/djangojs.po b/locale/sr_Latn/LC_MESSAGES/djangojs.po index 2180270dad..0b24decdbe 100644 --- a/locale/sr_Latn/LC_MESSAGES/djangojs.po +++ b/locale/sr_Latn/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:44\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-08-01 00:54\n" "Last-Translator: \n" "Language-Team: Serbian (Latin)\n" "Language: sr_CS\n" @@ -17,71 +17,71 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%d dan i %h:%m:%s" +msgstr[1] "%d dana i %h:%m:%s" +msgstr[2] "%d dana %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" -msgstr "" +msgstr "%h:%m:%s" #: resources/problem-vote.js:11 msgid "Vote on problem points" -msgstr "" +msgstr "Glasajte za poene zadatka" #: resources/problem-vote.js:16 #, javascript-format msgid "Unable to delete vote: %s" -msgstr "" +msgstr "Neuspešno brisanje glasa: %s" #: resources/problem-vote.js:28 #, javascript-format msgid "Edit points vote (%s)" -msgstr "" +msgstr "Promeni glas za poene (%s)" #: resources/problem-vote.js:34 #, javascript-format msgid "Unable to cast vote: %s" -msgstr "" +msgstr "Neuspešno slanje glasa: %s" #: resources/problem-vote.js:63 msgid "Number of votes for this point value" -msgstr "" +msgstr "Broj glasova za ovaj broj poena" #: resources/user_profile.js:47 msgid "past year" -msgstr "" +msgstr "protekle godine" #: resources/user_profile.js:64 msgid "%(cnt)d total submission" msgid_plural "%(cnt)d total submissions" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(cnt)d poslato rešenje" +msgstr[1] "%(cnt)d poslata rešenje" +msgstr[2] "%(cnt)d poslatih rešenja " #: resources/user_profile.js:69 msgid "%(cnt)d submission in the last year" msgid_plural "%(cnt)d submissions in the last year" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(cnt)d poslato rešenje u proteklih godinu dana" +msgstr[1] "%(cnt)d poslata rešenja u proteklih godinu dana" +msgstr[2] "%(cnt)d poslatih rešenja u proteklih godinu dana" #: resources/user_profile.js:74 msgid "%(cnt)d submission in %(year)d" msgid_plural "%(cnt)d submissions in %(year)d" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(cnt)d poslato rešenje u %(year)d" +msgstr[1] "%(cnt)d poslata rešenja u %(year)d" +msgstr[2] "%(cnt)d poslatih rešenja u %(year)d" #: resources/user_profile.js:88 msgid "%(cnt)d submission on %(date)s" msgid_plural "%(cnt)d submissions on %(date)s" -msgstr[0] "" -msgstr[1] "" -msgstr[2] "" +msgstr[0] "%(cnt)d poslato rešenje %(date)s" +msgstr[1] "%(cnt)d poslata rešenja %(date)s" +msgstr[2] "%(cnt)d poslatih rešenja %(date)s" diff --git a/locale/tr/LC_MESSAGES/django.po b/locale/tr/LC_MESSAGES/django.po index c7d4da30bb..2be47d030d 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -17,145 +17,146 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Katalanca" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Almanca" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Yunanca" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "İngilizce" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "İspanyolca" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Fransızca" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Hırvatça" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Macarca" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Japonca" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Korece" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Brezilya Portekizcesi" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" -msgstr "Rumence" +msgstr "Romence" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Rusça" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Sırpça (Latin)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Türkçe" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Vietnamca" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Basitleştirilmiş Çince" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Geleneksel Çince" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" -msgstr "" +msgstr "Aktivasyon Başarılı!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" -msgstr "" +msgstr "Kayıt Tamamlandı" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" -msgstr "" +msgstr "Kayıt Yapılamaz" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Ana sayfa" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "İçerik" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Yorumları gizle" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d yorum gizlendi." msgstr[1] "%d yorum gizlendi." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Yorumları gizle" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Yorumları göster" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d yorum gösterildi." msgstr[1] "%d yorum gösterildi." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Yorumları göster" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "İlişkili sayfa" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "ilişkili sayfa" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Yarışmalar" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" -msgstr "" +msgstr "Sorun" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" -msgstr "Problemler" +msgstr "Sorunlar" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Yeniden değerlendir" @@ -173,7 +174,7 @@ msgstr "Ayrıntılar" #: judge/admin/contest.py:127 msgid "Format" -msgstr "" +msgstr "Biçim" #: judge/admin/contest.py:128 templates/contest/ranking-table.html:5 msgid "Rating" @@ -187,103 +188,104 @@ msgstr "Erişim" msgid "Justice" msgstr "Demir yumruk" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Yarışmaları görünür olarak işaretle" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d yarışma başarıyla görünür olarak işaretlendi." msgstr[1] "%d yarışma başarıyla görünür olarak işaretlendi." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Yarışmaları görünür olarak işaretle" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Yarışmaları gizli olarak işaretleme" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d yarışma başarıyla gizli olarak işaretlendi." +msgstr[1] "%d yarışmalar başarıyla gizli olarak işaretlendi." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Yarışma gönderimlerini kilitle" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d yarışma başarıyla kilitlendi." +msgstr[1] "%d yarışmalar başarıyla kilitlendi." -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Yarışma gönderimlerinin kilidini açın" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d yarışma başarıyla açıldı." +msgstr[1] "%d yarışmalar başarıyla açıldı." -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, python-format msgid "%d submission was successfully scheduled for rejudging." msgid_plural "%d submissions were successfully scheduled for rejudging." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "%d gönderim başarıyla yeniden değerlendirmeye alındı." +msgstr[1] "%d gönderimler başarıyla yeniden değerlendirmeye alındı." + +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Sonuçları yeniden hesapla" -#: judge/admin/contest.py:356 +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." -msgstr[0] "" -msgstr[1] "" - -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "" +msgstr[0] "%d katılım yeniden hesaplandı." +msgstr[1] "%d katılımlar yeniden hesaplandı." -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "kullanıcı adı" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "sanal" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "link ucu" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Özet" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "kullanıcı" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" -msgstr "" +msgstr "obje" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Sitede görüntüle" #: judge/admin/problem.py:21 msgid "Edit reason" -msgstr "" +msgstr "Düzenleme nedeni" #: judge/admin/problem.py:30 msgid "Describe the changes you made (optional)" @@ -298,8 +300,8 @@ msgid "Taxonomy" msgstr "Tasnif" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Puanlar" @@ -308,9 +310,8 @@ msgstr "Puanlar" msgid "Limits" msgstr "Sınırlar" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Dil" @@ -318,106 +319,95 @@ msgstr "Dil" msgid "History" msgstr "Geçmiş" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Yazarlar" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "yazarlar" + +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "Yayınlanma tarihini şimdiye ayarla" -#: judge/admin/problem.py:193 +#: 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[0] "%d sorunun yayınlanma tarihi başarıyla güncellendi." +msgstr[1] "%d sorunun yayınlanma tarihi başarıyla güncellendi." -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "Problemleri herkese aç" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, 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:207 -msgid "Mark problems as public" -msgstr "Problemleri herkese aç" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Problemleri gizle" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, 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:217 -msgid "Mark problems as private" -msgstr "Problemleri gizle" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" -msgstr "" +msgstr "sorun" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "saat dilimi" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Kullanıcı" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "E-posta" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "e-posta" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Saat dilimi" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "kayıt tarihi" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Puanları yeniden hesapla" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had 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:123 -msgid "Recalculate scores" -msgstr "Puanları yeniden hesapla" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" -msgstr "" +msgstr "Yeniden oluştur" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Tanım" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Bilgi" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Desteklenenler" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Hiç" @@ -436,12 +426,12 @@ msgstr "Kabul edilmemiş" #: judge/admin/submission.py:85 #, python-format msgid "%s (spectating)" -msgstr "" +msgstr "%s (izleniyor)" #: judge/admin/submission.py:87 #, python-format msgid "%s (virtual %d)" -msgstr "" +msgstr "%s (sanal %d)" #: judge/admin/submission.py:94 #, python-format @@ -449,59 +439,63 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s - %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Seçili çözümleri yeniden değerlendir" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Çözümleri yeniden değerlendirme yetkin yok." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Bu miktarda çözümü yeniden değerlendirme yetkin yok." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Seçili çözümleri yeniden değerlendir" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Seçili çözümleri yeniden puanla" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d çözüm yeniden puanlandı." msgstr[1] "%d çözüm yeniden puanlandı." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Seçili çözümleri yeniden puanla" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "problem kodu" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Problem anahtarı" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "problem adı" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Problem adı" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "zaman" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Zaman" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "bellek" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Bellek" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "dil" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" -msgstr "" +msgstr "Kilitli" #: judge/admin/taxon.py:11 judge/admin/taxon.py:34 msgid "Included problems" @@ -523,13 +517,14 @@ msgstr "Online Değerlendirme Sistemi" msgid "Comment body" msgstr "Yorum" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Senin rolün sessiz, küçük kurbağa." #: judge/comments.py:49 templates/comments/list.html:146 msgid "You must solve at least one problem before your voice can be heard." -msgstr "" +msgstr "Sesinizin duyulması için en az bir sorunu çözmeniz gerekir." #: judge/comments.py:96 msgid "Posted comment" @@ -537,23 +532,23 @@ msgstr "Gönderilmiş yorum" #: judge/contest_format/atcoder.py:19 msgid "AtCoder" -msgstr "" +msgstr "AtCoder" #: judge/contest_format/atcoder.py:117 judge/contest_format/default.py:79 #: judge/contest_format/icpc.py:127 judge/contest_format/legacy_ioi.py:97 msgid "The maximum score submission for each problem will be used." -msgstr "" +msgstr "Her problem için gönderilen maksimum puan kullanılacaktır." #: judge/contest_format/atcoder.py:122 judge/contest_format/icpc.py:132 #, python-format msgid "Each submission before the first maximum score submission will incur a **penalty of %d minute**." msgid_plural "Each submission before the first maximum score submission will incur a **penalty of %d minutes**." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "İlk maksimum puandan önce yapılan her gönderim **%d dakika cezaya tabi olacaktır**." +msgstr[1] "İlk maksimum puandan önce yapılan her gönderim **%d dakikalık cezaya tabi olacaktır**." #: judge/contest_format/atcoder.py:127 msgid "Ties will be broken by the last score altering submission time." -msgstr "" +msgstr "Beraberlik, son skorun değiştirilme zamanına göre çözülecektir." #: judge/contest_format/default.py:18 msgid "Default" @@ -561,31 +556,31 @@ msgstr "Varsayılan" #: judge/contest_format/default.py:80 msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." -msgstr "" +msgstr "Beraberlikler, sıfır olmayan bir puanı olan sorunlardaki son gönderim süresinin toplamı ile çözülecektir." #: judge/contest_format/ecoo.py:18 msgid "ECOO" -msgstr "" +msgstr "ECOO" #: judge/contest_format/ecoo.py:130 msgid "The score on your **last** non-CE submission for each problem will be used." -msgstr "" +msgstr "Her bir sorun için **son** CE dışı gönderiminizin puanı kullanılacaktır." #: judge/contest_format/ecoo.py:135 #, python-format msgid "There is a **%d bonus** for fully solving on your first non-CE submission." -msgstr "" +msgstr "CE dışı ilk gönderiminizde tam çözüm için bir **%d bonus** vardır." #: judge/contest_format/ecoo.py:141 #, python-format msgid "For every **%d minute** you submit before the end of your window, there will be a **1** point bonus." msgid_plural "For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus." -msgstr[0] "" -msgstr[1] "" +msgstr[0] "Pencerenizin bitiminden önce gönderdiğiniz her **%d dakika** için **1** puan bonusu verilecektir." +msgstr[1] "Pencerenizin bitiminden önce gönderdiğiniz her **%d dakikalar** için **1** puan bonusu verilecektir." #: judge/contest_format/ecoo.py:147 msgid "Ties will be broken by the sum of the last submission time on **all** problems." -msgstr "" +msgstr "**Tüm** problemlerde son gönderim süresinin toplamına göre eşitlik bozulacaktır." #: judge/contest_format/ecoo.py:149 judge/contest_format/ioi.py:102 #: judge/contest_format/legacy_ioi.py:103 @@ -616,121 +611,129 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Yarışma güncellemelerine abone ol" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Deneysel özellikleri aç" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "" msgstr[1] "" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Kullanıcı Adı" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Şifre" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Problem kodu ^[a-z0-9]+$ olmalıdır" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Yarışma ID'si ^[a-z0-9]+$ olmalıdır" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -739,108 +742,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "j M Y, H:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "{time} tarihinde" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "LaTeX olarak bırak" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Yalnızca SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Yalnızca MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax, fallback olarak SVG" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "En iyi kaliteyi tespit et" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Açık" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Koyu" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "yorum yazan" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "gönderi zamanı" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "ilişkili sayfa" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "oy" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "yorum metni" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "üst yorum" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "yorum" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "yorumlar" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "%s problemi için editorial" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "yorum oyu" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "yorum oyları" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -896,16 +905,11 @@ msgstr "yarışma ID'si" msgid "contest name" msgstr "yarışma adı" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "yazarlar" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "küratörler" @@ -913,7 +917,7 @@ msgstr "küratörler" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "testçiler" @@ -949,12 +953,12 @@ msgstr "" msgid "description" msgstr "tanım" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "problemler" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "başlangıç" @@ -962,12 +966,12 @@ msgstr "başlangıç" msgid "end time" msgstr "bitiş" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "zaman sınırı" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "herkese açık" @@ -1087,11 +1091,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "organizasyonlara özel" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "organizasyonlar" @@ -1121,7 +1125,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "OpenGraph resmi" @@ -1141,7 +1145,7 @@ msgstr "anlık katılımcı sayısı" msgid "contest summary" msgstr "yarışma özeti" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 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." @@ -1154,7 +1158,7 @@ msgstr "erişim kodu" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "istenmeyen kişiler" @@ -1202,213 +1206,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Özel yarışmaları gör" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Kendi yarışmalarını düzenle" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Tüm yarışmaları düzenle" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Yarışmaları derecelendir" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "Yarışma erişim kodları" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "yarışma" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "yarışmalar" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "ilişkili yarışma" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "puan" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "kümülatif süre" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "sanal katılım ID'si" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "yarışma katılımı" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "yarışma katılımları" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "puan" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "kısmi" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "ön testli" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "sıra" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 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:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "yarışma problemi" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "yarışma problemleri" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "çözüm" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "katılım" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "Bu çözüm yalnızca pretest'lerde mi çalıştı?" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "yarışma çözümü" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "yarışma çözümleri" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "sıralama" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "derece" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "son derecelendirme" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "yarışma derecesi" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "yarışma dereceleri" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1460,7 +1464,7 @@ msgstr "gönderi başlığı" msgid "slug" msgstr "" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "halka açık mı?" @@ -1513,7 +1517,7 @@ msgstr "problem kategorisi adı" msgid "problem type" msgstr "problem tipi" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "problem tipleri" @@ -1525,7 +1529,7 @@ msgstr "problem grup ID'si" msgid "problem group name" msgstr "problem grubu adı" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "problem grubu" @@ -1562,7 +1566,7 @@ msgstr "Ikon URL'si." msgid "license text" msgstr "lisans metni" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "lisans" @@ -1586,280 +1590,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "problem kodu" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "problem adı" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "problem içeriği" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "yaratıcılar" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 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:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "bellek sınırı" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "Bu problem için kilobayt cinsinden hafıza sınırı. (örn. 256 MB = 262144 KB)" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "kısa devre" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "kısmi puanlama yapılabilir" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "izin verilen diller" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "elle yönetilir" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "yayınlama tarihi" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the 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:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "problem özeti" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Soruyu çoğalt" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "dil" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "çevrilmiş ad" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "çevrilmiş tanım" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "problem çevirisi" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "problem çevirileri" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "açıklık getirilmiş problem" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "açıklama içeriği" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "açıklama zaman damgası (timestamp)" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "dile özel kaynak sınırı" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "dile özel kaynak sınırları" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "ilgili problem" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "yayın tarihi" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "problem analizi içeriği" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "çözüm" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "çözümler" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "not" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "problem oyu" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "problem oyları" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1885,7 +1876,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1932,7 +1923,7 @@ msgstr "" msgid "checker arguments" msgstr "checker değişkenleri" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Checker değişkenleri, JSON nesnesi olarak." @@ -1980,6 +1971,18 @@ msgstr "puan değeri" msgid "case is pretest?" msgstr "ön test mi?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "checker değişkenleri, JSON nesnesi olarak" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "organizasyon başlığı" @@ -2057,7 +2060,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "organizasyon" @@ -2098,7 +2101,7 @@ msgstr "üyeler" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2123,26 +2126,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "son erişim" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "son IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "görünen derece" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2152,200 +2159,200 @@ msgstr "" msgid "Admin" msgstr "Yönetici" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "yorum engeli" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "Bazı kullanıcıların sessiz kalması daha iyidir." -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "userscript" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "Site düzenlemesi için kullanıcı tanımlı JavaScript." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "şu anki yarışma" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "matematik motoru" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "Matematiksel ifadeleri gösteren program." -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "kullanıcı profili" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "kullanıcı profilleri" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "istek zamanı" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "durum" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "Beklemede" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Onaylandı" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Geri çevrildi" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "sebep" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "organizasyona katılma isteği" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "organizasyona katılma istekleri" @@ -2588,15 +2595,15 @@ msgstr "İç Hata (judge sunucusu hatası)" msgid "submission time" msgstr "çözüm süresi" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "çalışma süresi" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "bellek kullanımı" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "verilen puan" @@ -2604,141 +2611,141 @@ msgstr "verilen puan" msgid "submission language" msgstr "çözüm dili" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "statü" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "sonuç" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "derleme hataları" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "kümelenmiş testler" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "test puanı" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "toplam test puanı" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "değerlendirildiği sunucu" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "sadece ön testlerde çalıştı" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "çözümler" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "ilişkili çözüm gönderisi" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "kaynak kodu" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "test ID" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "durum kodu" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "alınabilecek puan" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "küme #" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "program çıktısı" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "çözüm testi" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "çözüm testleri" @@ -2802,16 +2809,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "[page]/[topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2868,40 +2865,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +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/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "Kümeler boş olamaz." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "Küme olmayan test #%d için puan tanımlanmalıdır." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "Test #%d için girdi dosyası yok: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "Test #%d için çıktı dosyası yok: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "Küme başlangıç testi #%d puan değerine sahip olmalıdır." -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "Test #%d bir kümenin içinde değil, ancak küme bitişini işaret ediyor." -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "Zip yolunu bozmayı nasıl becerdin?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "Generator yolunu bozmayı nasıl becerdin?" @@ -2956,45 +2977,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "Sayfa %d" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "Ooo, bakıyorum da etrafı karıştırıyoruz." -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Zaten oy verdin." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Site aracılığıyla düzenlendi" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "Yorum düzenleniyor" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "Böyle bir yarışma yok :(" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "\"%s\" anahtarıyla bir yarışma bulunamadı." @@ -3003,111 +3024,111 @@ msgstr "\"%s\" anahtarıyla bir yarışma bulunamadı." msgid "Contests" msgstr "Yarışmalar" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "Yarışma bulunamadı." -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "\"%s\" yarışmasına erişimin yok" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "Yarışma devam etmiyor" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" şu anda devam etmiyor." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "\"%s\" için erişim kodunu gir" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "\"%s\" yarışmasında değilsin." -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "%(month)s ayındaki yarışmalar" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "%s - Sıralama" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "\"%(contest)s\" yarışmasına katılımın" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "Canlı" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Katılım" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "Yarışma etiketi: %s" @@ -3136,249 +3157,257 @@ msgstr "bozuk sayfa \"%s\"" msgid "Runtimes" msgstr "Dil sürümleri" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "Böyle bir organizasyon yok :(" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "\"%s\" anahtarına sahip bir organizasyon bulunamadı." -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "Böyle bir organizasyon bulunamadı." -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Organizasyonlar" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s üye" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Organizasyona katılım" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Bu organizasyonda zaten varsın." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Bu organizasyon açık değil." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Organizasyondan çık" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "\"%s\" içinde değilsin." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "%s'ye katılma isteği" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Katılma isteği detayı" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "%s - Katılım isteklerini yönet" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "" msgstr[1] "" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, 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:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "%d kullanıcı reddedildi." msgstr[1] "%d kullanıcı reddedildi." -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "%s düzenleniyor" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "Bu organizasyon düzenlenemiyor" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "Bu organizasyonu düzenleme yetkisine sahip değilsin." -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "Üyeleri bu organizasyondan atma yetkisine sahip değilsin." -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "Bu üyeyi atamazsın" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "Atmaya çalıştığın üye bulunamıyor!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, 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/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "Böyle bir problem yok :(" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "\"%s\" anahtarına sahip problem bulunamadı." -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} - Problem analizi" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "Böyle bir problem analizi yok :(" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "Çözüm gönderme engellendi" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "Bu problem için istenmeyen adam olarak işaretlendin. Çözüm gönderemezsin." -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Çok fazla çözüm gönderisi" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 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:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Soruyu Çoğalt" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "Checker değişkenleri JSON nesnesi olarak verilmelidir." -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "Checker değişkeni olarak geçersiz JSON verdin." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "Zip dosyan geçersiz!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "Çözümleri karşılaştır - {0}" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "Verileri düzenle - {0}" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "%s için verileri düzenle" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "%s için init.yml oluşturuldu" @@ -3405,51 +3434,51 @@ msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" msgstr[1] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "%s için en iyi çözümler" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, 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:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, 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/register.py:26 +#: judge/views/register.py:23 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:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Saat dilimi" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Tercih edilen dil" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "Haber bültenine abone ol" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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: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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Kaydol" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Kimlik doğrulama hatası" @@ -3461,77 +3490,77 @@ msgstr "Diğer" msgid "Language statistics" msgstr "Dil istatistikleri" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Durum" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Sürüm matrisi" +msgid "Version" +msgstr "" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, 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:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Tüm çözümler" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Tüm çözümlerim" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "%s'nin tüm çözümleri" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "%s için tüm çözümler" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "%(problem)s için çözümlerim" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, 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:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "{user} tarafından {problem} için gönderilen çözüm - {contest}" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "{user} tarafından problem {number} için gönderilen çözüm - {contest}" @@ -3586,102 +3615,157 @@ msgstr "kimse" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "Böyle bir kullanıcı yok :(" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "\"%s\" adında bir kullanıcı yok." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "Hesabım" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Kullanıcı %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Giriş" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j M Y, G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Sitede güncellendi" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Profili düzenle" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Sıralama" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3707,13 +3791,13 @@ msgstr "" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "" @@ -3733,49 +3817,50 @@ msgstr "" msgid "Edit user" msgstr "Kullanıcı düzenle" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Merhaba, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Çıkış yap" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Giriş yap" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "ya da" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "izleniyor" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "Bu sitenin düzgün görüntülenmesi için JavaScript etkin olmalıdır." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "Düzenle" @@ -3975,15 +4060,15 @@ msgstr "Puan" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4064,7 +4149,7 @@ msgstr "Takvim" msgid "Info" msgstr "Hakkında" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "İstatistikler" @@ -4279,7 +4364,7 @@ msgstr "AC Oranı" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Kullanıcılar" @@ -4287,7 +4372,7 @@ msgstr "Kullanıcılar" msgid "Editorials" msgstr "" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "Problem analizi" @@ -4452,19 +4537,19 @@ msgstr "" msgid "Disqualify" msgstr "" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "Kullanıcı katılımını göster" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Organizasyonları göster" @@ -4635,6 +4720,17 @@ msgstr "Zaman:" msgid "Reason:" msgstr "Sebep:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Kullanıcı" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Zaman" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4651,7 +4747,7 @@ msgid "There are no requests to approve." msgstr "Onaylanacak istek yok." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "Sil?" @@ -4687,59 +4783,67 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "YAML'i görüntüle" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "Sütunları göster:" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "Çıktı öneki" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "Çıktı sınırı" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "Generator değişkenleri" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Tip" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "Girdi dosyası" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "Çıktı dosyası" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "Ön test?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "Gönder!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "Yeni test ekle" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" @@ -4757,100 +4861,100 @@ msgid_plural "Authors:" msgstr[0] "Yazar:" msgstr[1] "Yazarlar:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "Tipe göre filtrele..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "Popüler problemler" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Kategori" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Tipler" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" msgstr[1] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4927,11 +5031,11 @@ msgstr "Puan:" msgid "(partial)" msgstr "(kısmi)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Zaman sınırı:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Bellek sınırı:" @@ -4968,14 +5072,6 @@ msgstr "Açıklama talebi" msgid "Report an issue" msgstr "Bir sorun bildir" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Zaman Sınırı:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Bellek Sınırı:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Problem ara" @@ -5013,8 +5109,8 @@ msgstr "Problem tipleri" msgid "Point range" msgstr "Puan aralığı" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Git" @@ -5023,7 +5119,7 @@ msgid "Random" msgstr "Rastgele" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "" @@ -5035,31 +5131,31 @@ msgstr "Sonuç" msgid "Date" msgstr "Tarih" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "Uyarı!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "Varsayılan dilin, %(language)s, bu soru için kullanılamıyor." -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "" msgstr[1] "" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "Geriye 0 çözümün kaldı" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "Bu problem için herhangi bir judge mevcut değil." @@ -5164,6 +5260,68 @@ msgstr[1] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" +msgstr[1] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "Kullanıcı adı veya şifre yanlış." @@ -5267,7 +5425,7 @@ msgstr "%(site_name)s takımı" msgid "Password reset on %(site_name)s" msgstr "%(site_name)s şifre sıfırlaması" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Devam et >" @@ -5280,36 +5438,40 @@ msgstr "" msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." msgstr "Başarıyla kaydoldun! Girdiğin e-posta adresine kaydını onaylaman için bir e-posta gönderdik." -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "E-posta" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(onaylamak için lütfen tekrar gir)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(sana en yakın büyük şehri seç)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "haritadan seç" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "Varsayılan dil" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "Organizasyon üyelikleri" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "Gelecek yarışmalar hakkında beni bilgilendir" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "Kaydol!" @@ -5343,7 +5505,7 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5351,17 +5513,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5370,7 +5532,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5388,12 +5550,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5462,8 +5624,8 @@ msgid "Judges" msgstr "Judge'lar" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Sürüm Matrisi" +msgid "Versions" +msgstr "" #: templates/submission/info-base.html:8 #, python-format @@ -5487,27 +5649,27 @@ msgstr "Değerlendirme sırasında bir hata oluştu." msgid "Error information" msgstr "Hata bilgisi" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "Duruma göre filtrele..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "Dile göre filtrele..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Çözümleri filtrele" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "" -#: templates/submission/list.html:350 +#: 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." @@ -5544,7 +5706,7 @@ msgstr "Durumu görüntüle" msgid "View raw source" msgstr "Ham kaynağı görüntüle" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Yeniden gönder" @@ -5630,15 +5792,15 @@ msgstr "Ön testleri geçmek sistem testlerinde tam puan almayı garantilemez." msgid "Submission aborted!" msgstr "Çözüm iptal edildi!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Kaynağı görüntüle" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "İptal et" @@ -5671,33 +5833,33 @@ msgstr "Yeniden açıldı: " msgid "Closed: " msgstr "Kapatıldı: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "Masaüstü bildirimlerini kullan" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "Sadece benim biletlerimi göster" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "Dolduran kullanıcı" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" msgstr[1] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "Başlık" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "Sorumlular" @@ -5748,152 +5910,152 @@ msgstr "Sorumlu notları" msgid "Nothing here." msgstr "Burada hiçbir şey yok :(" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Sıralama" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "Kullanıcı adı ile ara..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "En yakın büyük şehri seç" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Saat dilimi:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Dil:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "Editör teması:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Matematik motoru:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "Profil fotoğrafı değiştir" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "Şifre değiştir" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" +#: templates/user/edit-profile.html:355 +msgid "API token:" msgstr "" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" msgstr "" -#: templates/user/edit-profile.html:363 -msgid "Scratch codes:" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" +#: templates/user/edit-profile.html:385 +msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "Profilini güncelle" diff --git a/locale/tr/LC_MESSAGES/djangojs.po b/locale/tr/LC_MESSAGES/djangojs.po index 9d6c4360bc..90543adfe2 100644 --- a/locale/tr/LC_MESSAGES/djangojs.po +++ b/locale/tr/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:44\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:52\n" "Last-Translator: \n" "Language-Team: Turkish\n" "Language: tr_TR\n" @@ -17,14 +17,14 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d gün, %h:%m:%s" msgstr[1] "%d gün, %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po index 8e86aa6c22..7a435dc69c 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-23 05:41\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -17,143 +17,144 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "Tiếng Catalan" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "Tiếng Đức" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "Tiếng Hy Lạp" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "Tiếng Anh" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "Tiếng Tây Ban Nha" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "Tiếng Pháp" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "Tiếng Croatia" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "Tiếng Hung-ga-ri" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "Tiếng Nhật Bản" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "Tiếng Hàn Quốc" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "Tiếng Braxin-Bồ Đào Nha" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "Tiếng Romania" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "Tiếng Nga" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "Tiếng Séc-bi (Latin)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "Tiếng Thổ Nhĩ Kỳ" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "Tiếng Việt" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "Tiếng Trung (Giản thể)" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "Tiếng Trung (Phồn thể)" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "Kích hoạt thành công!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "Đăng ký thành công" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "Không được phép đăng ký" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "Trang chủ" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "Nội dung" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "Ẩn bình luận" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d bình luận đã được ẩn." -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "Ẩn bình luận" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "Bỏ ẩn bình luận" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d bình luận đã được hiện lại." -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "Bỏ ẩn bình luận" - -#: judge/admin/comments.py:58 -msgid "Associated page" -msgstr "Trang liên kết" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" +msgstr "trang liên kết" #: judge/admin/contest.py:31 msgid "Included contests" msgstr "Các cuộc thi" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "Đề bài" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" -msgstr "Đề bài" +msgstr "Các bài" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "Chấm lại" @@ -167,7 +168,7 @@ msgstr "Kế hoạch" #: judge/admin/contest.py:126 msgid "Details" -msgstr "Chi tiêt" +msgstr "Chi tiết" #: judge/admin/contest.py:127 msgid "Format" @@ -185,91 +186,92 @@ msgstr "Truy cập" msgid "Justice" msgstr "Luật" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "Đánh dấu các kỳ thi là có thể thấy" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d kỳ thi đã được đánh dấu là có thể thấy." -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "Đánh dấu các kỳ thi là có thể thấy" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "Đánh dấu các kỳ thi là ẩn" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d kỳ thi đã được đánh dấu là ẩn." -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "Đánh dấu các kỳ thi là ẩn" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "Khóa nạp bài cho kỳ thi" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, 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:250 -msgid "Lock contest submissions" -msgstr "Khóa nạp bài cho kỳ thi" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "Hủy khóa nộp bài cho kỳ thi" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, 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:259 -msgid "Unlock contest submissions" -msgstr "Gỡ khóa nạp bài cho kỳ thi" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "Tính lại kết quả" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d tham gia tính lại." -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "Tính lại kết quả" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "tên người dùng" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "ảo" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "đường dẫn liên kết" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "Tổng hợp" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "thành viên" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "đối tượng" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "Xem trên trang web" @@ -290,8 +292,8 @@ msgid "Taxonomy" msgstr "Phân loại" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "Điểm" @@ -300,9 +302,8 @@ msgstr "Điểm" msgid "Limits" msgstr "Giới hạn" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "Ngôn ngữ" @@ -310,102 +311,91 @@ msgstr "Ngôn ngữ" msgid "History" msgstr "Lịch sử" -#: judge/admin/problem.py:180 -msgid "Authors" -msgstr "Tác giả" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" +msgstr "tác giả" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +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: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:197 -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:196 +msgid "Mark problems as public" +msgstr "Công bố đề bài" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "%d bài tập đã được công bố." -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "Công bố đề bài" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "Ẩn đề bài" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "%d bài tập đã được đánh dấu là cá nhân." -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "Ẩn đề bài" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "vấn đề" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "múi giờ" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "Thành viên" +#: judge/admin/profile.py:111 +msgid "email" +msgstr "email" -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" -msgstr "Hộp thư" - -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "Múi giờ" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "ngày tham gia" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "Tính lại điểm" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d người dùng có tính lại điểm." -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "Tính lại điểm" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "Tạo lại" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "Mô tả" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "Thông tin" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "Khả năng" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "Không" @@ -437,62 +427,66 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s trong %(contest)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "Chấm lại các bài đã chọn" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "Bạn không có quyền chấm lại bài." -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Bạn không không có quyền chấm lại QUÁ NHIỀU bài nộp." -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "Chấm lại các bài đã chọn" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "Tính điểm lại các bài đã chọn" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d bài đã được tính điểm lại." -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "Tính điểm lại các bài đã chọn" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "mã đề bài" -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "Mã bài tập" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" +msgstr "tên bài tập" -#: judge/admin/submission.py:216 -msgid "Problem name" -msgstr "Tên bài" +#: judge/admin/submission.py:222 +msgid "time" +msgstr "thời gian" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" -msgstr "Thời gian" +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "bộ nhớ" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "Bộ nhớ" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "ngôn ngữ" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "Đã khóa" #: judge/admin/taxon.py:11 judge/admin/taxon.py:34 msgid "Included problems" -msgstr "Bao gồm các đề" +msgstr "Bao gồm các câu hỏi" #: judge/admin/taxon.py:14 msgid "These problems are included in this group of problems." @@ -510,7 +504,8 @@ msgstr "Chấm bài trực tuyến" msgid "Comment body" msgstr "Bình luận" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "Không có phần nói của ngươi, đồ cóc ghẻ." @@ -539,7 +534,7 @@ msgstr[0] "Những lần nạp bài trước lần nạp có điểm số cao nh #: judge/contest_format/atcoder.py:127 msgid "Ties will be broken by the last score altering submission time." -msgstr "Kết quả do điểm bằng nhau có thể bị thay đổi bởi tổng thời gian nạp bài." +msgstr "Kết quả do điểm bằng nhau có thể bị thay đổi bởi tổng thời gian nộp bài." #: judge/contest_format/default.py:18 msgid "Default" @@ -547,7 +542,7 @@ msgstr "Mặc định" #: judge/contest_format/default.py:80 msgid "Ties will be broken by the sum of the last submission time on problems with a non-zero score." -msgstr "Kết quả bằng nhau có thể bị thay đổi bởi lần thời gian lần nạp bài cuối cùng cho bài tập với một điểm số khác không." +msgstr "Kết quả bằng nhau có thể bị thay đổi bởi lần thời gian lần nộp bài cuối cùng cho bài tập với một điểm số khác không." #: judge/contest_format/ecoo.py:18 msgid "ECOO" @@ -555,18 +550,18 @@ msgstr "ECOO" #: judge/contest_format/ecoo.py:130 msgid "The score on your **last** non-CE submission for each problem will be used." -msgstr "Điểm số ở lần nạp bài **cuối cùng** gặp lỗi biên dịch ở mỗi bài tập sẽ được sử dụng." +msgstr "Điểm số ở lần nộp bài **cuối cùng** gặp lỗi biên dịch ở mỗi bài tập sẽ được sử dụng." #: judge/contest_format/ecoo.py:135 #, python-format msgid "There is a **%d bonus** for fully solving on your first non-CE submission." -msgstr "Có **%d** điểm thương cho việc hoàn thành tất cả bài trong lần nạp không gặp lỗi biên dịch đầu tiên." +msgstr "Có **%d** điểm thương cho việc hoàn thành tất cả bài trong lần nộp không gặp lỗi biên dịch đầu tiên." #: judge/contest_format/ecoo.py:141 #, python-format msgid "For every **%d minute** you submit before the end of your window, there will be a **1** point bonus." msgid_plural "For every **%d minutes** you submit before the end of your window, there will be a **1** point bonus." -msgstr[0] "Với mỗi **%d phút** bạn nạp bài trước thời gian kết thúc của cửa sổ, sẽ có **1** điểm thưởng." +msgstr[0] "Với mỗi **%d phút** bạn nộp bài trước thời gian kết thúc của cửa sổ, sẽ có **1** điểm thưởng." #: judge/contest_format/ecoo.py:147 msgid "Ties will be broken by the sum of the last submission time on **all** problems." @@ -595,125 +590,133 @@ msgstr "Số điểm cao nhất cho từng bài tập sẽ được sử dụng. #: judge/contest_format/ioi.py:99 judge/contest_format/legacy_ioi.py:100 msgid "Ties will be broken by the sum of the last score altering submission time on problems with a non-zero score." -msgstr "Kết quả bằng nhau do điểm số cuối cùng có thể bị thay đổi bởi lần thời gian lần nạp bài cuối cùng cho bài tập với một điểm số khác không." +msgstr "Kết quả bằng nhau do điểm số cuối cùng có thể bị thay đổi bởi lần thời gian lần nộp bài cuối cùng cho bài tập với một điểm số khác không." #: judge/contest_format/legacy_ioi.py:18 msgid "IOI (pre-2016)" msgstr "IOI (trước năm 2016)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "Mã xác thực 2 yếu tố phải có {count} chữ số." -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "Mã xác thực 2 yếu tố không đúng." -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "Mã dự phòng phải là 16 kí tự hệ 32." -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "Mã dự phòng không hợp lệ." -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "Đăng ký để nhận các cập nhật về cuộc thi" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "Bật các tính năng đang thử nghiệm" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." 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:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "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:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "Địa chỉ email này đã được sử dụng." + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "Tải các bình luận về?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "Tải xuống các bài nộp?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "Sắp xếp theo mã bài tập:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "Hãy để trống để bao gồm mọi bài nộp" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "Lọc theo kết quả:" -#: judge/forms.py:113 +#: judge/forms.py:136 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:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "Bất kì máy chấm nào" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "Tên người dùng" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "Mật khẩu" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "Độ dài của bài nộp không hợp lệ." -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "Phản hồi WebAuthn không hợp lệ." -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "Không có xác thực web (WebAuthn) nào được sử dụng." -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "Chứng chỉ xác thực web (WebAuthn) không hợp lệ." -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "Mã xác thực 2 yếu tố hoặc mã dự phòng không hợp lệ." -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "Bắt buộc phải có totp_token hoặc webauthn_response." -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Mã đầu bài chỉ bao gồm ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "Mã bài tập đã tồn tại." -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Id cuộc thi phải bao gồm ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "Mã kỳ thi đã tồn tại." @@ -722,108 +725,114 @@ msgstr "Mã kỳ thi đã tồn tại." msgid "N j, Y, g:i a" msgstr "j \\t\\há\\n\\g n \\nă\\m Y, g:i a" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "vào lúc {time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "Chưa xếp hạng" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "Theo chủ đề hệ thống" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "Giữ nguyên dạng LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "Chỉ dạng SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "Chỉ dạng MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax với SVG dự phòng" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "Phát hiện chất lượng tốt nhất" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "Chọn theo mặc định" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "Sáng" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "Tối" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "Mã trang phải bao gồm ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "bình luận" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "thời gian đăng" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "trang liên kết" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "đánh giá" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "nhận xét" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "ẩn" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "cấp trên" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "sửa đổi" + +#: judge/models/comment.py:39 msgid "comment" msgstr "bình luận" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "nhận xét" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "Hướng giải cho %s" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "%(page)s của %(user)s" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "đánh giá bình luận" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "đánh giá bình luận" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "Ghi đè khóa nhận xét" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "khoá bình luận" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "khoá các bình luận" @@ -873,22 +882,17 @@ msgstr "Ẩn vĩnh viễn" #: judge/models/contest.py:67 msgid "contest id" -msgstr "mã Id cuộc thi" +msgstr "Id cuộc thi" #: judge/models/contest.py:69 msgid "contest name" msgstr "tên cuộc thi" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "tác giả" - #: judge/models/contest.py:71 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:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "giám khảo" @@ -896,7 +900,7 @@ msgstr "giám khảo" 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:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "người kiểm tra" @@ -932,12 +936,12 @@ msgstr "Những người dùng này sẽ có thể theo dõi cuộc thi, nhưng msgid "description" msgstr "mô tả" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "đề bài" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "t. gian b. đầu" @@ -945,12 +949,12 @@ msgstr "t. gian b. đầu" msgid "end time" msgstr "thời gian kết thúc" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "giới hạn thời gian" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "công khai" @@ -960,7 +964,7 @@ msgstr "Nên được đặt ngay cả đối với các cuộc thi riêng, nơi #: judge/models/contest.py:97 msgid "contest rated" -msgstr "cuộc thi đã được xếp hạng" +msgstr "cuộc thi được xếp hạng" #: judge/models/contest.py:97 msgid "Whether this contest can be rated." @@ -1028,7 +1032,7 @@ msgstr "không xếp hạng" #: judge/models/contest.py:120 msgid "private to specific users" -msgstr "riêng tu cho thành viên cụ thể" +msgstr "riêng tư cho thành viên cụ thể" #: judge/models/contest.py:121 msgid "private contestants" @@ -1070,11 +1074,11 @@ msgstr "hiển thị cài đặt rút gọn" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "Có hiển thị phần cài đặt của cuộc thi tại trang của cuộc thi hay không?" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "dành riêng cho tổ chức" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "tổ chức" @@ -1104,7 +1108,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "Nếu tổ chức là riêng tư, chỉ những lớp này mới có thể xem cuộc thi." #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "Ảnh OpenGraph" @@ -1124,7 +1128,7 @@ msgstr "số lượng người tham gia trực tiếp" msgid "contest summary" msgstr "tổng kết cuộc thi" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 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." @@ -1137,7 +1141,7 @@ msgstr "mã truy cập" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "cá nhân - không tính điểm" @@ -1163,7 +1167,7 @@ msgstr "Một đối tượng JSON dùng để chọn cấu hình định dạng #: judge/models/contest.py:168 msgid "contest problem label script" -msgstr "tiêu đề của bài tập trong kỳ thi" +msgstr "tiêu đề của câu hỏi trong kỳ thi" #: judge/models/contest.py:169 msgid "A custom Lua function to generate problem labels. Requires a single function with an integer parameter, the zero-indexed contest problem index, and returns a string, the label." @@ -1185,213 +1189,213 @@ msgstr "độ chính xác" 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:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "Xem các kỳ thi riêng tư" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "Sửa các kỳ thi sở hữu" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "Sửa tất cả các kỳ thi" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "Nhân bản kỳ thi" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "MOSS kỳ thi" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "Đánh gia các kỳ thi" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "Mã truy cập kỳ thi" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "Tạo kỳ thi riêng tư" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "Chỉnh tính công khai của cuộc thi" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "Sửa tiêu đề của bài tập trong kỳ thi" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "Chỉnh trạng thái khóa của cuộc thi" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "cuộc thi" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "cuộc thi" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "cuộc thi liên quan" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "điểm" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "thời gian tích lũy" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "bị loại" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "Có bị hủy tư cách tham gia" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "trường dùng để tie-break" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "mã số tham gia ảo" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 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:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "định dạng dữ liệu cụ thể của kỳ thi" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "%(user)s đang theo dõi trong %(contest)s" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "%(user)s trong %(contest)s, v%(id)d" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "%(user)s trong %(contest)s" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "tham gia cuộc thi" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "tham gia cuộc thi" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "điểm" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "một phần" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" -msgstr "được test trước" +msgstr "sử dụng pretests" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "thứ tự" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "ghi đè độ dài output prefix" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "gửi tối đa" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 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:595 +#: judge/models/contest.py:604 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:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "đề bài của cuộc thi" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "đề bài của cuộc thi" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "nộp bài" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "tham gia" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 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ử." +msgstr "Bài nộp này chỉ chạy trên Pre-tests." -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "nộp bài thi" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "nộp bài thi" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "hạng" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "đánh giá" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" -msgstr "đáng giá thô" +msgstr "đánh giá thô" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "hiệu suất của kỳ thi" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "lần xếp hạng cuối" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "xếp hạng cuộc thi" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "xếp hạng cuộc thi" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "kết quả kỳ thi moss" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "kết quả kỳ thi moss" @@ -1443,7 +1447,7 @@ msgstr "tiêu đề bài viết" msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "hiển thị công khai" @@ -1496,7 +1500,7 @@ msgstr "phân nhóm bài" msgid "problem type" msgstr "kiểu bài tập" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "kiểu bài tập" @@ -1508,7 +1512,7 @@ msgstr "ID của nhóm đề bài" msgid "problem group name" msgstr "tên nhóm đề bài" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "nhóm đề bài" @@ -1545,7 +1549,7 @@ msgstr "URL cho biểu tượng." msgid "license text" msgstr "văn bản cấp phép" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "giấy phép" @@ -1569,283 +1573,270 @@ msgstr "Hiển thị nếu bài tập đã được giải" msgid "Only own submissions" msgstr "Chỉ những lần nộp bài riêng của cá nhân" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "mã đầu bài" - #: judge/models/problem.py:119 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:120 -msgid "problem name" -msgstr "tên bài tập" - #: judge/models/problem.py:121 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:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "nội dung bài tập" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "người tạo" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 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:127 +#: judge/models/problem.py:128 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:131 +#: judge/models/problem.py:132 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:133 +#: judge/models/problem.py:134 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:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "Nhóm của bài tập, hiển thị trong danh sách bài tập." -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 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:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "giới hạn bộ nhớ" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "Giới hạn bộ nhớ (kilobytes) cho bài tập này (chẳng hạn 256mb = 262144 kilobytes)." -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" -msgstr "ngắn mạch" +msgstr "ngắt trình chấm (nếu kết quả testcases chạy không đúng)" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 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:151 +#: judge/models/problem.py:152 msgid "allows partial points" -msgstr "cho phép cho điểm từng phần" +msgstr "cho phép cho điểm thành phần" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "ngôn ngữ cho phép" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 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:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "quản lý thủ công" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 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:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "ngày xuất bản" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the 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:161 +#: judge/models/problem.py:162 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:163 +#: judge/models/problem.py:164 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:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "tổng quan bài tập" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "số thành viên" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 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:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "tỉ lệ giải được" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "cho phép truy cập hoàn toàn markdown" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "hiển thị nguồn" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 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:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "Xem các bài bị ẩn" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "Sửa đề bài của mình" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "Sửa mọi đề bài" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "Sửa mọi đề bài công khai" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "Sửa bài tập với chỉ toàn markup" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "Nhân bản bài tập" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "Thay đổi trường is_public" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "Thay đổi trường is_manually_managed" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "Xem đề bài riêng của tổ chức" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "ngôn ngữ" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "tên bộ dịch" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "mô tả bộ dịch" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "dịch đầu bài" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "dịch đầu bài" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "bài tập được làm rõ" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "nội dung làm rõ" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "thời gian làm rõ" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "làm rõ vấn đề" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "làm rõ vấn đề" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "giới hạn tài nguyên theo ngôn ngữ" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "giới hạn tài nguyên theo ngôn ngữ" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "đầu bài liên quan" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "ngày công bố" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "nội dung hướng dẫn giải" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "Xem các lời giải ẩn" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "lời giải" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "lời giải" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" -msgstr "" +msgstr "điểm được đề xuất" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." -msgstr "" +msgstr "Lượng điểm được vote cho bài này." -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "người bình chọn" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "thời gian vote" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." -msgstr "" +msgstr "Thời điểm vote." -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "ghi chú" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." -msgstr "" +msgstr "phanvchung" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" -msgstr "Bình chọn cho bài" +msgstr "bình chọn cho bài" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" -msgstr "" +msgstr "phanvchung" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" -msgstr "" +msgstr "Điểm được vote bởi %(voter)s cho %(problem)s" #: judge/models/problem_data.py:23 msgid "Standard" @@ -1868,8 +1859,8 @@ msgid "Non-trailing spaces" msgstr "Dấu cách liền" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "Không sắp xếp" +msgid "Sorted" +msgstr "Đã sắp xếp" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1905,17 +1896,17 @@ msgstr "kiểm tra" #: judge/models/problem_data.py:45 msgid "enable unicode" -msgstr "" +msgstr "bật unicode" #: judge/models/problem_data.py:46 msgid "disable bigInteger / bigDecimal" -msgstr "" +msgstr "chặn Số lớn" #: judge/models/problem_data.py:47 judge/models/problem_data.py:95 msgid "checker arguments" msgstr "đối số kiểm tra" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "Kiểm tra đối số như là một đối tượng JSON." @@ -1937,11 +1928,11 @@ msgstr "Test đơn" #: judge/models/problem_data.py:84 msgid "Batch start" -msgstr "Bắt đầu lô" +msgstr "Bắt đầu nhóm" #: judge/models/problem_data.py:85 msgid "Batch end" -msgstr "Hết lô" +msgstr "Hết nhóm" #: judge/models/problem_data.py:87 msgid "input file name" @@ -1961,7 +1952,19 @@ msgstr "giá trị điểm" #: judge/models/problem_data.py:91 msgid "case is pretest?" -msgstr "test mẫu?" +msgstr "test mẫu (pre-test)?" + +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "kiểm tra đối số như là một đối tượng JSON" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" #: judge/models/profile.py:42 msgid "organization title" @@ -2040,7 +2043,7 @@ msgid "Edit all organizations" msgstr "Sửa mọi tổ chức" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "tổ chức" @@ -2081,7 +2084,7 @@ msgstr "các thành viên" msgid "%(class)s in %(organization)s" msgstr "%(class)s trong %(organization)s" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "lớp" @@ -2106,26 +2109,30 @@ msgid "Ace theme" msgstr "Chủ đề Ace" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "giao diện" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "lần truy cập cuối cùng" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "IP cuối cùng" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "hiển thị xếp hạng" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "Người dùng bình thường" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "Người ra đề" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2133,202 +2140,202 @@ msgstr "Người ra đề" #: templates/submission/submission-list-tabs.html:15 #: templates/ticket/message.html:18 msgid "Admin" -msgstr "Quản trị" +msgstr "Quản trị viên" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "bình luận tắt" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 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:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "thành viên không được liệt kê" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "Thành viên không được xếp hạng." -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" -msgstr "" +msgstr "bị cấm vote điểm cho bài tập" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." -msgstr "" +msgstr "Người dùng không thể bình chọn số điểm cho bài tập này" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "script tự định nghĩa" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "JavaScript tự định nghĩa để tùy chỉnh trang web." -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "cuộc thi hiện tại" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "bộ xử lý toán học" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 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:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "Xác thực 2 yếu tố TOTP được kích hoạt" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "Đánh dấu để kích hoạt xác thực 2 yếu tố TOTP-based." -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn xác thực 2 yếu tố được kích hoạt" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "Đánh dấu để kích hoạt xác thực 2 yếu tố dựa trên WebAuthn." -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "Mã TOTP" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "Mã 32 ký tự Base32-encoded cho TOTP." -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "Mã TOTP cần rỗng hoặc Base32." -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "mã dự phòng" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "Mảng JSON gồm 16 mã được mã hóa Base32 ký tự cho mã dự phòng." -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "Mã dự phòng phải để trống hoặc là một mảng JSON với 16 kí tự Base32." -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "thời gian mật khẩu dùng một lần (TOTP) cuối cùng" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "Mã API" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "Mã truy cập API được mã hóa hex 64 ký tự." -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "Mã API phải là None hoặc là số ở hệ thập lục phân" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "ghi chú nội bộ" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 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:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "thời gian tải dữ liệu cuối cùng" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "hiển thị tên ghi đè" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "Tên hiển thị thay cho tên người dùng." -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "Hiển thị những thứ đang được phát triển" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "Chỉnh sửa cài đặt TOTP" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "hồ sơ người dùng" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "hồ sơ người dùng" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "tên thiết bị" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "thông tin đăng nhập" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "public key" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "sign counter" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "Chứng chỉ WebAuthn: %(name)s" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "Chứng chỉ WebAuthn" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "Nhiều chứng chỉ WebAuthn" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "thời gian yêu cầu" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "trạng thái" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "Đang chờ" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "Phê duyệt" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "Bị từ chối" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "lý do" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "yêu cầu tham gia tổ chức" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "yêu cầu tham gia tổ chức" @@ -2462,11 +2469,11 @@ msgstr "Có chặn máy chấm khỏi kết nối cho dù key chính xác." #: judge/models/runtime.py:132 msgid "disable judge" -msgstr "" +msgstr "tắt trình chấm" #: judge/models/runtime.py:133 msgid "Whether this judge should be removed from judging queue." -msgstr "" +msgstr "Liệu trình chấm này có nên bị loại khỏi hàng đợi hay không." #: judge/models/runtime.py:134 msgid "judge online status" @@ -2503,7 +2510,7 @@ msgstr "máy chấm" #: judge/models/submission.py:22 judge/models/submission.py:50 #: judge/utils/problems.py:66 msgid "Accepted" -msgstr "Chấp nhận (AC)" +msgstr "Kết quả được chấp nhận (AC)" #: judge/models/submission.py:23 judge/models/submission.py:51 msgid "Wrong Answer" @@ -2527,12 +2534,12 @@ msgstr "Lỗi khi chạy chương trình (IR)" #: judge/models/submission.py:28 judge/models/submission.py:57 msgid "Runtime Error" -msgstr "Lỗi Runtime (RE)" +msgstr "Runtime (RE)" #: judge/models/submission.py:29 judge/models/submission.py:44 #: judge/models/submission.py:58 judge/utils/problems.py:68 msgid "Compile Error" -msgstr "Lỗi dịch (CE)" +msgstr "Lỗi Biên dịch (CE)" #: judge/models/submission.py:30 judge/models/submission.py:43 msgid "Internal Error" @@ -2540,7 +2547,7 @@ msgstr "Lỗi nội bộ (IE)" #: judge/models/submission.py:31 judge/models/submission.py:52 msgid "Short Circuited" -msgstr "Ngắn mạch" +msgstr "Ngắt trình chấm" #: judge/models/submission.py:32 judge/models/submission.py:45 #: judge/models/submission.py:64 @@ -2569,17 +2576,17 @@ msgstr "Lỗi nội bộ (máy chủ chấm bài lỗi)" #: judge/models/submission.py:69 msgid "submission time" -msgstr "ngày nộp bài" +msgstr "thời gian nộp bài" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "thời gian thực hiện tối đa" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "bộ nhớ sử dụng" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "điểm được cho" @@ -2587,141 +2594,141 @@ msgstr "điểm được cho" msgid "submission language" msgstr "ngôn ngữ lập trình" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "trạng thái" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "kết quả" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" -msgstr "lỗi dịch" +msgstr "lỗi biên dịch" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "nhóm test" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "điểm cho testcase" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "tổng điểm test case" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "đánh giá trên" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "thời gian chấm của bài nộp" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 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:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" -msgstr "chỉ được chạy bởi test sơ bộ" +msgstr "chỉ được chạy bởi test mẫu" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" -msgstr "khóa nạp bài" +msgstr "khóa nộp bài" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "Bài nộp %(id)d về %(problem)s bởi %(user)s" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "Ngừng bất kì bài nộp" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "Chấm lại bài nộp" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "Chấm lại nhiều bài nộp" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "Nộp không giới hạn" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "Xem tất cả bài nộp" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "Gửi lại bài nộp của người khác" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "Chỉnh sửa trạng thái khóa của nạp bài" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "nộp bài" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "bài nộp liên quan" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "mã nguồn" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "Nguồn %(submission)s" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "nguồn nộp" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "các nguồn nộp" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "mã testcase" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "cờ trạng thái" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "khả năng điểm" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "lô số" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "phản hồi chấm thi" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "phản hồi trình chấm mở rộng" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "lập trình đầu ra" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "test case của bài" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "các test case của bài" @@ -2785,16 +2792,6 @@ msgstr "tin nhắn vé" msgid "ticket messages" msgstr "các tin nhắn vé" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "Trang [page] / [topage]" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "Trang số %s trên %s" - #: judge/ratings.py:194 msgid "Newbie" msgstr "Newbie" @@ -2821,11 +2818,11 @@ msgstr "Grandmaster" #: judge/ratings.py:200 msgid "Target" -msgstr "Đích" +msgstr "Target" #: judge/tasks/contest.py:19 msgid "Recalculating contest scores" -msgstr "Đang tính lại điểm của cuộc thi" +msgstr "Đang tính lại điểm của kỳ thi" #: judge/tasks/contest.py:40 msgid "Running MOSS" @@ -2851,40 +2848,64 @@ msgstr "Đang chuẩn bị dữ liệu bài nộp của bạn" msgid "Preparing your comment data" msgstr "Đang chuẩn bị dữ liệu bình luận của bạn" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +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/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "Trang thứ {page_number} trên tổng số {total_pages} trang" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "Lệnh theo lô trống là không được phép." -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "Điểm phải được xác định cho các trường hợp không theo lô #%d." -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "Các tập tin đầu vào cho trường hợp %d không tồn tại: %s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "Các tập tin đầu ra cho trường hợp %d không tồn tại: %s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "Phép thử theo lô #%d yêu cầu điểm." -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "Cố gắng để kết thúc bộ số liệu nằm ngoài một trong các trường hợp #%d." -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "Bạn đã làm hỏng đường dẫn zip?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "Làm thế nào bạn đã làm hỏng đường dẫn file tạo?" @@ -2894,7 +2915,7 @@ msgstr "Sai" #: judge/utils/problems.py:69 msgid "Timeout" -msgstr "Hết giờ" +msgstr "Timeout" #: judge/utils/problems.py:70 msgid "Error" @@ -2906,7 +2927,7 @@ msgstr "Mật khẩu này quá thông dùng." #: judge/utils/pwned.py:112 msgid "Your password can't be a commonly used password." -msgstr "Mật khẩu của bạn không thể là một mật khẩu thông dùng." +msgstr "Mật khẩu của bạn không thể là một mật khẩu thông dụng." #: judge/utils/timedelta.py:49 msgctxt "time format with day" @@ -2936,45 +2957,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "Trang %d của bài viết" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "Bị rối?" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." -msgstr "Bạn cần phải giải ít nhất một bài trước khi được quyền bầu chọn." +msgstr "Bạn cần phải giải ít nhất một bài trước khi được quyền bình chọn." -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "Bình luận không tìm thấy." -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "Bạn không thể bình chọn cho bình luận của mình." -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "Bạn đã bỏ phiếu rồi." -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "Biên tập từ trang web" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "Đang chỉnh sửa bình luận" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "Không có cuộc thi như vậy" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, 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\"." @@ -2983,111 +3004,111 @@ msgstr "Không thể tìm thấy một cuộc thi với khóa \"%s\"." msgid "Contests" msgstr "Cuộc thi" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 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:238 +#: judge/views/contests.py:255 #, 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:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "Nhân bản kỳ thi" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "Cuộc thi được nhân bàn từ %s" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "Cuộc thi không đang diễn ra" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" không đang diễn ra." -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "Cấm tham gia" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." -msgstr "Bạn đã được xác định không phải đối tượng tham gia của cuộc thi này. Bạn bị ban vĩnh viễn khỏi cuộc thi này." +msgstr "Bạn đã được xác định không phải đối tượng tham gia của cuộc thi này. Bạn bị cấm vĩnh viễn khỏi cuộc thi này." -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "Không thể vào" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "Bạn không thể tham gia cuộc thi này." -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "Nhập mã đăng nhập cho \"%s\"" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, 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:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "Cuộc thi tại %(month)s" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "\\t\\há\\n\\g n \\nă\\m Y" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "Thống kê của %s" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "%s xếp hạng" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "Tham gia của bạn vào %(contest)s" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "Sự tham gia của %(user)s vào %(contest)s" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "Trực tuyến" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Tham gia" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "Kết quả MOSS của %s" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "Đang chạy MOSS cho %s..." -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "Thẻ cuộc thi: %s" @@ -3116,245 +3137,253 @@ msgstr "trang lỗi %s" msgid "Runtimes" msgstr "Đang chạy" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "Không có tổ chức như vậy" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, 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:56 +#: judge/views/organization.py:57 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:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "Tổ chức" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" -msgstr "%s thành viên" +msgstr "Các thành viên của %s " -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "Đang tham gia tổ chức" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "Bạn đã trong tổ chức." -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "Tổ chức này không phải là mở." -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "Rời khỏi tổ chức" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "Bạn đang không ở trong \"%s\"." -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "Không thể yêu cầu tham gia %s" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "Bạn đã có một yêu cầu trước đó để tham gia %s." -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "Yêu cầu tham gia %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "Chi tiết yêu cầu tham gia" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, 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:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "Tổ chức của bạn có thể chỉ nhận được %d thêm các thành viên." -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "Bạn không thể chấp nhận người dùng %d." -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, 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:313 +#: judge/views/organization.py:340 #, 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:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "Đang chỉnh sửa %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "Không thể chỉnh sửa tổ chức" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 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:376 +#: judge/views/organization.py:403 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:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "Không thể loại thành viên" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 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:386 +#: judge/views/organization.py:413 #, 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/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "Lớp {name} trong {organization}" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "Lớp {name} - {organization}" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "Yêu cầu tham gia {name} trong {organization}" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" -msgstr "Không có vấn đề như vậy" +msgstr "Không có câu hỏi như vậy" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, 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:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "Hướng giải của {0}" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" -msgstr "Không có hướng dẫn" +msgstr "Không có lời giải" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "Không thể tìm thấy một hướng dẫn với mã \"%s\"." -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." -msgstr "" +msgstr "Không được phép bình chọn trong bài tập này." -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." -msgstr "" +msgstr "Không được phép xóa bình chọn trong bài tập này." -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "thành công" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "Nộp cho %s" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "Bạn đã gửi quá nhiều lần." -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "Cấm nộp bài" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to 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:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "Quá nhiều bài nộp" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 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:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "Bạn có muốn bị tôi ngăn chặn?" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "Nhân bản bài tập" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "Nhân bản bài tập từ %s" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "Đối số kiểm tra phải là đối tượng JSON." -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "Đối số kiểm tra là đối tượng JSON không hợp lệ." -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "File nén bị lỗi!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "So sánh các bài nộp cho {0}" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "Sửa dữ liệu cho {0}" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "Chỉnh sửa các dữ liệu cho %s" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "Tạo file init.yml cho %s" @@ -3380,51 +3409,51 @@ msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "Hẹn lịch thành công cho %d nạp bài để chấm lại." -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "Các giải pháp tốt nhất cho %s" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, 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:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, 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/register.py:26 +#: judge/views/register.py:23 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:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "Múi giờ" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "Ngôn ngữ ưa thích" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "Đăng ký nhận bản tin?" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, 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: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:65 +#: judge/views/register.py:57 msgid "Register" msgstr "Đăng ký" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "Mã kích hoạt không hợp lệ" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "Xác thực không thành công" @@ -3436,77 +3465,77 @@ msgstr "Khác" msgid "Language statistics" msgstr "Thống kê theo ngôn ngữ" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "Trạng thái" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "Ma trận phiên bản" +msgid "Version" +msgstr "Phiên bản" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "Từ chối quyền. Hãy giải %(problem)s để xem." -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "Không thể xem bài nộp" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "Từ chối quyền." -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Nộp %(problem)s bởi %(user)s" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "Tất cả các bài nộp" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "Tất cả những lần nộp bài của tôi" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "Tất cả các bài nộp bởi %s" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "Tất cả các bài nộp cho %s" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, 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:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, 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:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, 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:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, 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:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "{user} gửi cho {problem} trong {contest}" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "Bài nộp của {user} cho bài {number} trong {contest}" @@ -3561,102 +3590,157 @@ msgstr "không có ai" msgid "New Ticket Message For: %s" msgstr "Tin nhắn về thẻ mới cho: %s" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "Kích hoạt xác thực 2 yếu tố" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" -msgstr "Đặt lại xác thực 2 yếu tố" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" +msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "Vô hiệu hóa xác thực 2 yếu tố" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "Phản hồi WebAuthn không hợp lệ" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "Tên không hợp lệ" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "Staff không thể tắt 2FA" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "Thực hiện xác thực 2 yếu tố" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "Không có thư mục này" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "Không xử lý người dùng \"%s\"." -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "Tài khoản của tôi" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "Người dùng %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "Đăng nhập" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "j \\t\\há\\n\\g n \\nă\\m Y, G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "Đang chuẩn bị dữ liệu..." -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "Đang tải xuống dữ liệu" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "Không thể chỉnh sửa hồ sơ" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "Cập nhật trên trang web" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "Chỉnh sửa tiểu sử" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "Tạo mã API cho người dùng" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "Xóa mã API cho người dùng" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "Tạo mã dự phòng cho người dùng" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Bảng xếp hạng" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "Bạn vừa đăng xuất thành công." -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "Bạn đã gửi quá nhiều yêu cầu đặt lại mật khẩu. Hãy vui lòng thử lại sau." +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "Đã yêu cầu thay đồi Email" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "Bạn có chắc chắn muốn chấm lại TẤT CẢ các bài nộp?" @@ -3682,13 +3766,13 @@ msgstr "Chấm dứt" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "Vô hiệu hóa" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "Kích hoạt" @@ -3701,58 +3785,59 @@ msgstr "Xem các bài nộp" #: templates/admin/judge/problem/change_form.html:20 #: templates/admin/judge/problem/change_form.html:23 msgid "View problem votes" -msgstr "" +msgstr "View problem votes" #: templates/admin/judge/profile/change_form.html:14 #: templates/admin/judge/profile/change_form.html:17 msgid "Edit user" -msgstr "Cập nhật người dùng" +msgstr "Chỉnh sửa người dùng" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "Xin chào, %(username)s." -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "Ngừng mạo danh" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "Đăng xuất" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "Đăng nhập" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "hoặc" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "Đăng ký" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "đang theo dõi" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." -msgstr "Trang web này hoạt động tốt nhất với JavaScript được cho phép." +msgstr "Trang web này hoạt động tốt nhất khi JavaScript được cho phép." -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "dựa trên nền tảng **DMOJ**" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" -msgstr "Soạn thảo" +msgstr "Chỉnh sửa" #: templates/blog/content.html:27 #, python-format @@ -3761,7 +3846,7 @@ msgstr "đã đăng vào %(time)s" #: templates/blog/list.html:45 msgid "Blog" -msgstr "Blog" +msgstr "Bài đăng" #: templates/blog/list.html:47 msgid "Events" @@ -3783,7 +3868,7 @@ msgstr "đã đăng {time}" #: templates/blog/list.html:81 msgid "Continue reading..." -msgstr "" +msgstr "Tiếp theo..." #: templates/blog/list.html:95 templates/problem/problem.html:331 msgid "Clarifications" @@ -3877,7 +3962,7 @@ msgstr "Phản hồi" #: templates/comments/list.html:93 templates/comments/votes.html:1 msgid "Votes" -msgstr "Đánh giá" +msgstr "Các bình chọn" #: templates/comments/list.html:94 msgid "Hide" @@ -3950,15 +4035,15 @@ msgstr "Điểm" msgid "No votes" msgstr "Không có phiếu bầu" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "Nhấn để sao chép" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "Sao chép" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "Đã sao chép!" @@ -4039,7 +4124,7 @@ msgstr "Lịch" msgid "Info" msgstr "Thông tin" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "Thống kê" @@ -4097,7 +4182,7 @@ msgstr "Đang theo dõi, cuộc thi kết thúc trong %(countdown)s." #: templates/contest/contest.html:35 #, python-format msgid "Participating virtually, %(countdown)s remaining." -msgstr "" +msgstr "Đang tham gia ảo, còn lại %(countdown)s." #: templates/contest/contest.html:37 msgid "Participating virtually." @@ -4251,7 +4336,7 @@ msgstr "Tỷ lệ AC" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "Thành viên" @@ -4259,7 +4344,7 @@ msgstr "Thành viên" msgid "Editorials" msgstr "Hướng dẫn giải" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "Hướng dẫn giải" @@ -4288,7 +4373,7 @@ msgstr "Cửa sổ %(time_limit)s" #: templates/contest/list.html:105 #, python-format msgid "%(duration)s long" -msgstr "" +msgstr "Thời gian : %(duration)s" #: templates/contest/list.html:125 templates/contest/list.html:137 msgid "Join" @@ -4423,19 +4508,19 @@ msgstr "Bỏ loại" msgid "Disqualify" msgstr "Loại" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 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:156 +#: templates/contest/ranking.html:51 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:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "Xem thành viên tham gia" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "Hiển thị các tổ chức" @@ -4457,7 +4542,7 @@ msgstr "Tỉ lệ AC của ngôn ngữ" #: templates/license.html:12 msgid "Visit source" -msgstr "" +msgstr "Xem nguồn trang" #: templates/newsletter/common.html:6 #: templates/newsletter/subscription_unsubscribe_activated.html:3 @@ -4548,7 +4633,7 @@ msgstr "Tham gia tổ chức" #: templates/organization/home.html:54 msgid "Request membership" -msgstr "Yêu cầu tư cách thành viên" +msgstr "Gửi yêu cầu làm thành viên" #: templates/organization/home.html:60 msgid "Edit organization" @@ -4560,7 +4645,7 @@ msgstr "Xem yêu cầu" #: templates/organization/home.html:71 msgid "Admin organization" -msgstr "Tổ chức người quản trị" +msgstr "Quản trị tổ chức" #: templates/organization/home.html:76 msgid "View members" @@ -4606,6 +4691,17 @@ msgstr "Thời gian:" msgid "Reason:" msgstr "Lý do:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "Thành viên" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "Thời gian" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4622,7 +4718,7 @@ msgid "There are no requests to approve." msgstr "Không có yêu cầu để chấp nhận." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "Xoá?" @@ -4658,59 +4754,67 @@ msgstr "Xem trước cập nhật" msgid "Enter a new code for the cloned problem:" msgstr "Nhập mã mới cho bài tập đã nhân bản:" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" -msgstr "" +msgstr "độ chính xác (đến chữ số thập phân)" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "Xem YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "Hiển thị các cột:" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "Tiền tố đầu ra" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "Giới hạn đầu ra" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "Kiểm tra" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "Bộ sinh args" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "Kiểu" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "Tập tin đầu vào" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "Tập tin đầu ra" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "Thử sơ bộ?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" -msgstr "Nộp bài!" +msgstr "Gửi!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" -msgstr "Thêm mới trường hợp" +msgstr "Thêm trường hợp mới" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "Lưu" @@ -4727,104 +4831,104 @@ msgid "Author:" msgid_plural "Authors:" msgstr[0] "Tác giả:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "Lọc theo loại..." -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "Những bài tập nổi bật" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "Nhóm" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "Kiểu" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "Để trống để không lọc theo ngôn ngữ" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "Để trống để không lọc theo kết quả" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." 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 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "ID kết thúc phải sau ID bắt đầu." -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, python-brace-format msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" 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 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" 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 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "Chấm lại bài nộp" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "Lọc theo ID:" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "ID bắt đầu:" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "ID kết thúc:" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "Khoảng này bao gồm cả 2 điểm đầu cuối." -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "Lọc theo ngôn ngữ:" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "Chấm lại các bài đã chọn" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "Tính điểm lại mọi thứ" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "Việc này sẽ chấm lại %(count)s bài nộp." -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "Bạn có chắc chấm lại %(count)s bài nộp?" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "Chấm điểm lại mọi bài nộp" #: templates/problem/problem.html:96 msgid "View as PDF" -msgstr "Xem dạng PDF" +msgstr "Xem dưới dạng PDF" #: templates/problem/problem.html:106 templates/problem/problem.html:116 #: templates/problem/problem.html:121 @@ -4835,11 +4939,11 @@ msgstr "Gửi bài giải" #, python-format msgid "%(counter)s submission left" msgid_plural "%(counter)s submissions left" -msgstr[0] "Còn %(counter)s lần nộp" +msgstr[0] "Bạn còn %(counter)s lần nộp" #: templates/problem/problem.html:117 msgid "0 submissions left" -msgstr "Còn 0 lần nộp" +msgstr "Bạn còn 0 lần nộp" #: templates/problem/problem.html:129 msgid "My submissions" @@ -4851,16 +4955,16 @@ msgstr "Bài nộp tốt nhất" #: templates/problem/problem.html:140 msgid "Vote on problem points" -msgstr "" +msgstr "Bình chọn điểm cho bài tập này" #: templates/problem/problem.html:142 #, python-format msgid "Edit points vote (%(points)d)" -msgstr "" +msgstr "Chỉnh sửa bình chọn : (%(points)d) điểm" #: templates/problem/problem.html:146 templates/problem/vote-stats-ajax.html:3 msgid "Voting statistics" -msgstr "" +msgstr "Thống kê các bình chọn" #: templates/problem/problem.html:151 msgid "Read editorial" @@ -4876,7 +4980,7 @@ msgstr "Sửa đề bài" #: templates/problem/problem.html:162 msgid "Edit test data" -msgstr "Sửa đổi test" +msgstr "Sửa dữ liệu test" #: templates/problem/problem.html:167 msgid "My tickets" @@ -4894,11 +4998,11 @@ msgstr "Điểm:" msgid "(partial)" msgstr "(một phần)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "Giới hạn thời gian:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "Giới hạn bộ nhớ:" @@ -4933,14 +5037,6 @@ msgstr "Gửi thắc mắc" msgid "Report an issue" msgstr "Báo cáo vấn đề" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "Giới hạn thời gian:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "Giới hạn bộ nhớ:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Tìm kiếm bài tập" @@ -4976,10 +5072,10 @@ msgstr "Kiểu bài tập" #: templates/problem/search-form.html:62 msgid "Point range" -msgstr "Tầm điểm" +msgstr "Khoảng điểm" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "Tìm" @@ -4988,7 +5084,7 @@ msgid "Random" msgstr "Ngẫu nhiên" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5000,53 +5096,53 @@ msgstr "Kết quả" msgid "Date" msgstr "Ngày" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "Mã nguồn của bạn chỉ được chứa tối đa 65536 kí tự." -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "Cảnh báo!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." -msgstr "Ngôn ngữ mặc định của bạn, %(language)s, không có sẵn cho bài tập này đã bị bỏ chọn." +msgstr "Ngôn ngữ mặc định của bạn, %(language)s, không có sẵn cho bài tập này và đã bị xóa." -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "Bạn còn %(left)s lần nộp" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "Bạn còn 0 lần nộp" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "Bài tập này hiện không sẵn sàng để chấm." #: templates/problem/vote-ajax.html:4 msgid "Change vote" -msgstr "" +msgstr "Thay đổi bình chọn" #: templates/problem/vote-ajax.html:7 #, python-format msgid "Last voted on %(date)s" -msgstr "" +msgstr "Bình chọn lần cuối vào %(date)s" #: templates/problem/vote-ajax.html:11 msgid "Cast vote" -msgstr "" +msgstr "Bỏ phiếu" #: templates/problem/vote-ajax.html:25 msgid "Justification:" -msgstr "" +msgstr "Lý giải:" #: templates/problem/vote-ajax.html:27 msgid "A short justification for your vote to this problem's point value (optional)." -msgstr "" +msgstr "Giải thích ngắn gọn cho điểm đánh giá của bạn về vấn đề này (không bắt buộc)." #: templates/problem/vote-ajax.html:33 msgid "Vote!" @@ -5058,17 +5154,17 @@ msgstr "Xóa vote" #: templates/problem/vote-stats-ajax.html:7 msgid "No votes available!" -msgstr "" +msgstr "Không có phiếu bầu khả dụng!" #: templates/problem/vote-stats-ajax.html:16 #, python-format msgid "Median vote: %(val)s" -msgstr "" +msgstr "Trung bình số phiếu bầu: %(val)s" #: templates/problem/vote-stats-ajax.html:17 #, python-format msgid "Mean vote: %(val)s" -msgstr "" +msgstr "Trung bình số phiếu bầu: %(val)s" #: templates/problem/vote-stats-ajax.html:18 #, python-format @@ -5098,17 +5194,17 @@ msgstr[0] "Đây là bước cuối để kích hoạt tài khoản của bạn. #: templates/registration/activation_email.html:14 #: templates/registration/activation_email.txt:8 msgid "Please click on the following link to activate your account:" -msgstr "Vui lòng nhấn vào link bên dưới để kích hoạt tài khoản của bạn" +msgstr "Vui lòng nhấn vào link bên dưới để kích hoạt tài khoản của bạn:" #: templates/registration/activation_email.html:18 #: templates/registration/activation_email.txt:11 msgid "Alternatively, you can reply to this message to activate your account. Your reply must keep the following text intact for this to work:" -msgstr "" +msgstr "Bạn cũng có thể trả lời tin nhắn này để kích hoạt tài khoản. Câu trả lời của bạn phải giữ nguyên phần văn bản sau đây mới được coi là hợp lệ:" #: templates/registration/activation_email.html:22 #, python-format msgid "See you soon! If you have problems activating your account, feel free to send us an email at %(email)s." -msgstr "Hẹn gặp lại! Nếu bạn có vấn đề về kích hoạt tài khoản của bạn, hãy email cho chúng tôi tại %(email)s" +msgstr "Hẹn gặp lại! Nếu bạn có vấn đề về kích hoạt tài khoản của bạn, hãy email cho chúng tôi tại %(email)s." #: templates/registration/activation_email.html:25 #: templates/registration/password_reset_email.html:17 @@ -5119,13 +5215,73 @@ msgstr "Hẹn gặp lại!" #, python-format msgid "Please activate your %(site_name)s account in the next %(count)s day." msgid_plural "Please activate your %(site_name)s account in the next %(count)s days." -msgstr[0] "Hãy kích hoạt tài khoản %(site_name)s của bạn trong %(count)s ngày " +msgstr[0] "Hãy kích hoạt tài khoản %(site_name)s của bạn trong %(count)s ngày." #: templates/registration/activation_email_subject.txt:1 #, python-format msgid "Activate your %(site_name)s account" msgstr "Kích hoạt tài khoản %(site_name)s của bạn" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "Tên người dùng hoặc mật khẩu không hợp lệ." @@ -5195,7 +5351,7 @@ msgstr "Quên mật khẩu trên trang %(site_name)s? Đừng lo lắng!" #: templates/registration/password_reset_email.html:8 #, python-format msgid "To reset the password for your account \"%(username)s\", click the link below." -msgstr "Để reset lại mật khẩu tài khoản \"%(username)s\" của bạn, nhấn vào link dưới đây" +msgstr "Để reset lại mật khẩu tài khoản \"%(username)s\" của bạn, nhấn vào link dưới đây." #: templates/registration/password_reset_email.html:14 #, python-format @@ -5229,7 +5385,7 @@ msgstr "Đội ngũ %(site_name)s" msgid "Password reset on %(site_name)s" msgstr "Đặt lại mật khẩu tại %(site_name)s" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "Tiếp tục >" @@ -5242,36 +5398,40 @@ msgstr "Việc đăng ký hiện đã đóng. Vui lòng liên hệ với quản msgid "You have successfully been registered. An email has been sent to the email address you provided to confirm your registration." msgstr "Chúc mừng bạn đã đăng ký thành công. Một Email đã được gửi đến cho bạn để xác nhận đăng ký của bạn." -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "Hộp thư" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(xác nhận mật khẩu)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(chọn thành phố gần bạn nhất)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "chọn từ bản đồ" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "Ngôn ngữ mặc định" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "Tổ chức đại diện" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "Thông báo cho tôi về các cuộc thi sắp tới" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." -msgstr "" +msgstr "Bằng việc đăng ký, bạn sẽ đồng ý với [Điều khoản và Điều kiện][0] của chúng tôi." -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "Đăng ký!" @@ -5305,25 +5465,25 @@ 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:90 -msgid "Refresh Two Factor Authentication" -msgstr "Đặt lại xác thực 2 yếu tố" +msgid "Edit 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 yếu tố" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "Dưới đây là các mã dự phòng sử dụng một lần." #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "Những mã này chỉ có thể được sử dụng một lần và được sử dụng trong trường hợp khẩn cấp." #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "Bạn có thể sử dụng những mã này để đăng nhập vào tài khoản hoặc vô hiệu hóa xác thực 2 yếu tố." @@ -5332,7 +5492,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "Nếu bạn cần thêm mã dự phòng, bạn có thể tạo thêm ở trang sửa thông tin." #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "Hãy ghi lại và giữ chúng ở vị trí an toàn." @@ -5350,12 +5510,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "Nếu bạn đánh mất thiết bị xác minh và không thể sử dụng mã dự phòng, quản trị viên của %(site_name)s sẽ KHÔNG THỂ phục hồi tài khoản. Hãy giữ mã dự phòng an toàn!" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." 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:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "Không thể kết nối với máy chủ." @@ -5398,7 +5558,7 @@ msgstr "Thời gian hoạt động" #: templates/status/judge-status-table.html:8 msgid "Ping" -msgstr "Ping" +msgstr "Độ trễ" #: templates/status/judge-status-table.html:9 msgid "Load" @@ -5424,13 +5584,13 @@ msgid "Judges" msgstr "Các máy chấm" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "Ma trận phiên bản" +msgid "Versions" +msgstr "Phiên bản" #: templates/submission/info-base.html:8 #, python-format msgid "%(date)s on %(judge)s" -msgstr "" +msgstr "%(date)s ở %(judge)s" #: templates/submission/internal-error-message.html:3 #, python-format @@ -5449,27 +5609,27 @@ msgstr "Một lỗi hệ thống vừa xảy ra trong quá trình chấm bài." msgid "Error information" msgstr "Thông tin về lỗi" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" -msgstr "" +msgstr "Bạn chắc chắn muốn chấm lại?" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "Lọc theo trạng thái..." -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "Lọc theo ngôn ngữ..." -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "Lọc các bài nộp" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "Tổng:" -#: templates/submission/list.html:350 +#: 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." @@ -5506,7 +5666,7 @@ msgstr "Xem trạng thái" msgid "View raw source" msgstr "Xem mã nguồn" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "Gửi lại" @@ -5537,30 +5697,30 @@ msgstr "Kết quả thực hiện" #: templates/submission/status-testcases.html:51 #, python-format msgid "Batch #%(id)d" -msgstr "" +msgstr "Nhóm #%(id)d" #: templates/submission/status-testcases.html:64 #, python-format msgid "Case #%(id)d:" -msgstr "Test số%(id)d:" +msgstr "Test số %(id)d:" #: templates/submission/status-testcases.html:66 #, python-format msgid "Pretest #%(id)d:" -msgstr "" +msgstr "Pretest #%(id)d:" #: templates/submission/status-testcases.html:68 #, python-format msgid "Test case #%(id)d:" -msgstr "" +msgstr "Test case #%(id)d:" #: templates/submission/status-testcases.html:101 msgid "Your output (clipped)" -msgstr "Output của bạn (cắt xén)" +msgstr "Output của bạn (đã cắt)" #: templates/submission/status-testcases.html:113 msgid "Judge feedback" -msgstr "Phản hồi trình chấm" +msgstr "Phản hồi của trình chấm" #: templates/submission/status-testcases.html:129 msgid "Resources:" @@ -5586,21 +5746,21 @@ msgstr "%(points)s/%(total)s điểm" #: templates/submission/status-testcases.html:161 msgid "Passing pretests does not guarantee a full score on system tests." -msgstr "Vượt qua các bộ test thử không chắc chắn được toàn bộ số điểm từ các bộ test hệ thống." +msgstr "Vượt qua các pre-tests không chắc chắn sẽ nhận được toàn bộ số điểm từ bộ test hệ thống." #: templates/submission/status-testcases.html:164 msgid "Submission aborted!" msgstr "Bài nộp đã bị huỷ!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "Xem nguồn" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "Nhấn Ctrl-Enter hay Command-Enter để hủy bỏ chương trình." -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "Huỷ bỏ" @@ -5623,7 +5783,7 @@ msgstr "Đã hoàn thành!" #: templates/task_status.html:95 msgid "Failed!" -msgstr "Không thành công" +msgstr "Không thành công!" #: templates/ticket/list.html:70 templates/ticket/ticket.html:95 msgid "Reopened: " @@ -5633,32 +5793,32 @@ msgstr "Đã mở lại: " msgid "Closed: " msgstr "Đã đóng: " -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "Sử dụng thông báo trên màn hình" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "Ẩn các ticket đã đóng" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "Chỉ hiện thẻ của tôi" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "Filing user" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "Người được phân công" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "Tiêu đề" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "Những người được phân công" @@ -5683,7 +5843,7 @@ msgstr "Xin lưu ý rằng biểu mẫu này dành cho việc báo cáo các v #: templates/ticket/ticket.html:30 #, python-brace-format msgid "Could not change ticket: {error}" -msgstr "" +msgstr "Không thể thay đổi ticket: {error}" #: templates/ticket/ticket.html:189 msgid "Associated object" @@ -5709,159 +5869,159 @@ msgstr "Ghi chú của người được giao" msgid "Nothing here." msgstr "Không có gì ở đây." -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "Xếp hạng" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "Tìm kiếm theo tên..." -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." -msgstr "" +msgstr "Các quản trị viên của trang web này yêu cầu tất cả nhân viên phải bật Xác thực hai yếu tố, vì vậy hiện tại không thể vô hiệu hóa" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "Bạn có chắc chắn để tạo hoặc tạo lại mã API?" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "Điều này sẽ làm mất hiệu lực của mọi mã thông báo API trước đó." -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "Nó cho phép bạn truy cập tài khoản mà không có xác thực 2 yếu tố." -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "Bạn sẽ không thể xem lại mã API sau khi rời trang này!" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "Đang tạo..." -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "Xóa" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "Bạn có chắc chắn muốn xóa mã API?" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "Tạo" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "Bạn có chắc chắn muốn xóa mã bảo mật này?" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" -msgstr "" +msgstr "Bạn chắc chắn muốn tạo hoặc tạo lại một đoạn code mới không?" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." -msgstr "" +msgstr "Điều này sẽ làm cho bất kỳ đoạn code nào trước đó của bạn trở nên vô hiệu." -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" -msgstr "" +msgstr "Bạn sẽ không thể xem lại code nháp của mình sau khi rời trang này!" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "Mô tả bản thân:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 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:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "Múi giờ:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "Ngôn ngữ:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "Giao diện:" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "Giao diện khung viết code:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "Công cụ toán học:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "Tổ chức đại diện:" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "Đổi ảnh đại diện của bạn" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "Đổi mật khẩu của bạn" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "Xác thực 2 yếu tố đã được kích hoạt:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "Mã API:" + +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "Ẩn" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "Làm mới" +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "Xác thực 2 yếu tố đã được kích hoạt:" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "Mã dự phòng:" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "Ẩn" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." -msgstr "" +msgstr "Nếu bạn cần thêm code nháp, bạn có thể sinh chúng ở đây." -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "Xác thực 2 yếu tố đã được vô hiệu hóa:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "Mã API:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "Khóa bảo mật:" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "Xóa" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "Đặt tên cho khóa này" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "Thêm" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "Script tự định nghĩa:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "Cập nhật profile" #: templates/user/pp-row.html:26 #, python-format msgid "weighted %(percent)s (%(pp)spp)" -msgstr "" +msgstr "trọng số %(percent)s (%(pp)spp)" #: templates/user/prepare-data.html:64 msgid "Are you sure you want to prepare a download?" @@ -5878,7 +6038,7 @@ msgstr "Theo dõi quá trình" #: templates/user/prepare-data.html:85 #, python-format msgid "You may only prepare a new data download once every %(duration)s." -msgstr "" +msgstr "Bạn chỉ có thể tải xuống dữ liệu mới một lần sau mỗi %(duration)s." #: templates/user/prepare-data.html:87 msgid "Once your data is ready, you will find a download link on this page." @@ -5907,7 +6067,7 @@ msgstr "Dữ liệu của bạn đã sẵn sàng!" #: templates/user/prepare-data.html:135 #, python-format msgid "You will need to wait %(countdown)s to prepare a new data download." -msgstr "" +msgstr "Bạn cần phải đợi %(countdown)s để tải xuống dữ liệu một lần nữa." #: templates/user/prepare-data.html:137 msgid "Download data" @@ -5919,7 +6079,7 @@ msgstr "Từ" #: templates/user/user-about.html:25 msgid "Admin notes:" -msgstr "" +msgstr "Ghi chú của admin:" #: templates/user/user-about.html:32 templates/user/user-tabs.html:4 msgid "About" @@ -5963,11 +6123,11 @@ msgstr "T7" #: templates/user/user-about.html:97 msgid "Less" -msgstr "Ít" +msgstr "Thu gọn" #: templates/user/user-about.html:103 msgid "More" -msgstr "Nhiều" +msgstr "Mở rộng" #: templates/user/user-about.html:111 msgid "Rating history" diff --git a/locale/vi/LC_MESSAGES/djangojs.po b/locale/vi/LC_MESSAGES/djangojs.po index a1a3affebc..fe7afa11e1 100644 --- a/locale/vi/LC_MESSAGES/djangojs.po +++ b/locale/vi/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:44\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-04-23 00:51\n" "Last-Translator: \n" "Language-Team: Vietnamese\n" "Language: vi_VN\n" @@ -17,39 +17,39 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d ngày %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" #: resources/problem-vote.js:11 msgid "Vote on problem points" -msgstr "" +msgstr "Vote điểm điểm cho bài tập" #: resources/problem-vote.js:16 #, javascript-format msgid "Unable to delete vote: %s" -msgstr "" +msgstr "Không thể sửa điểm: %s" #: resources/problem-vote.js:28 #, javascript-format msgid "Edit points vote (%s)" -msgstr "" +msgstr "Sửa điểm vote (%s)" #: resources/problem-vote.js:34 #, javascript-format msgid "Unable to cast vote: %s" -msgstr "" +msgstr "Không thể sửa điểm: %s" #: resources/problem-vote.js:63 msgid "Number of votes for this point value" -msgstr "" +msgstr "Số lượng vote cho điểm này" #: resources/user_profile.js:47 msgid "past year" @@ -68,7 +68,7 @@ msgstr[0] "%(cnt)d bài gửi trong một năm trước" #: resources/user_profile.js:74 msgid "%(cnt)d submission in %(year)d" msgid_plural "%(cnt)d submissions in %(year)d" -msgstr[0] "bài gửi trong %(year)d năm" +msgstr[0] "%(cnt)d bài gửi trong năm %(year)d" #: resources/user_profile.js:88 msgid "%(cnt)d submission on %(date)s" diff --git a/locale/zh_Hans/LC_MESSAGES/django.po b/locale/zh_Hans/LC_MESSAGES/django.po index 6ed83bf773..1398da5434 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-22 00:52\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,120 +17,121 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "加泰隆语" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "德语" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "希腊语" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "英语" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "西班牙语" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "法语" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "克罗地亚语" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "匈牙利语" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "日语" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "韩语" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "巴西葡萄牙语" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "罗马尼亚语" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "俄语" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "塞尔维亚文(拉丁字母)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "土耳其语" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "越南语" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "简体中文" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "繁体中文" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "激活成功!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "注册完成" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "不允许注册" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "首页" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "内容" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "隐藏选定评论" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "%d个评论成功隐藏。" -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "隐藏选定评论" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "取消隐藏选定评论" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "%d个评论成功取消隐藏。" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "取消隐藏选定评论" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "关联页" #: judge/admin/contest.py:31 @@ -138,22 +139,22 @@ msgid "Included contests" msgstr "带标签的竞赛" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "题目" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "题目" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "重新评分" @@ -185,91 +186,92 @@ msgstr "访问权限" msgid "Justice" msgstr "司法" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "标记竞赛为可见" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d个竞赛已成功公开。" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "标记竞赛为可见" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "隐藏选定竞赛" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d个竞赛已成功隐藏。" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "隐藏选定竞赛" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "锁定竞赛提交" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "%d个竞赛锁定成功。" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "锁定竞赛提交" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "解锁竞赛提交" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "%d个竞赛解锁成功。" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "解锁竞赛提交" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "重新计算结果" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "重新计算了%d个参与。" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "重新计算结果" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "用户名" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "模拟竞赛" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "链接路径" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "概要" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "用户" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "对象" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "查看" @@ -290,8 +292,8 @@ msgid "Taxonomy" msgstr "分类" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "分数" @@ -300,9 +302,8 @@ msgstr "分数" msgid "Limits" msgstr "限制" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "语言" @@ -310,102 +311,91 @@ msgstr "语言" msgid "History" msgstr "编辑历史" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "作者" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "设发表日期为现在" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "%d个题目的发表日期更新成功。" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "设发表日期为现在" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "公开题目" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "%d 个题目已被成功地公开。" -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "公开题目" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "隐藏题目" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "%d 个题目已被成功地隐藏。" -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "隐藏题目" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "题目" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "时区" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "用户" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "电子邮箱" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "时区" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "加入日期" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "重新计算总分" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d个用户的总分已被重新计算。" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "重新计算总分" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "重新生成" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "描述" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "信息" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "能力" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "无" @@ -437,56 +427,60 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(contest)s 中的 %(problem)s" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "重新评分选定的程序" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "您没有为程序重新评分的权利。" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "您没有为这么多程序重新评分的权利。" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "重新评分选定的程序" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "重新计算选定程序的分数" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d个程序提交的分数已被重新计算。" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "重新计算选定程序的分数" - -#: judge/admin/submission.py:211 -msgid "Problem code" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" msgstr "题目代码" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "题目名称" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:222 +msgid "time" msgstr "时间" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "内存" + +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "内存" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "语言" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "已锁定" @@ -510,13 +504,14 @@ msgstr "在线评测系统" msgid "Comment body" msgstr "评论正文" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "你已被静音……" #: judge/comments.py:49 templates/comments/list.html:146 msgid "You must solve at least one problem before your voice can be heard." -msgstr "" +msgstr "至少正确通过一道题目后你才可以发表评论。" #: judge/comments.py:96 msgid "Posted comment" @@ -601,119 +596,127 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "IOI(2016年之前)" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "双重身份验证令牌必须是{count}小数。" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "无效的双重验证码。" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "一次性双重验证码必须是16个32十进制字符。" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "无效的一次性代码。" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "订阅有关于竞赛的资讯" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "允许使用实验性功能" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "你必须至少解决一个题目,才能更新你的资料。" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "你不能参与超过{count}个组织。" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "下载评论?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "下载提交?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "按题目代码glob过滤:" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "留空以包含所有提交" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "以结果过滤:" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "请选择下载至少一个东西。" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "任何裁判服务器" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "用户名" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "密码" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "无效的代码长度。" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "WebAuthn回复无效。" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "未发出WebAuthn质疑。" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "无效的WebAuthn凭据ID。" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "无效的双重验证码或者一次性代码。" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "必须指定 totp_token 或 webauthn_response。" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "题目代码必须匹配 ^[a-z0-9]+$" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "代码已经存在题目。" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "竞赛标识必须匹配 ^[a-z0-9]+$" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "有这个代码的竞赛已经存在。" @@ -722,108 +725,114 @@ msgstr "有这个代码的竞赛已经存在。" msgid "N j, Y, g:i a" msgstr "Y年n月j日 G:i" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "在{time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "未评分" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "跟随站点主题" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "显示为LaTeX" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "仅使用SVG" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "仅使用MathML" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "MathJax,自动SVG切换" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "检测最佳质量" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "跟随系统默认" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "亮" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "暗" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "页代码必须匹配 ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "评论者" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "发布时间" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "关联页" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "投票" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "评论正文" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "隐藏" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "母评论" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "修订" + +#: judge/models/comment.py:39 msgid "comment" msgstr "评论" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "评论" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" msgstr "%s 的题解" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "%(page)s 由 %(user)s" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "评论投票" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "评论投票" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "覆盖评论锁定" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "评论锁定" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "评论锁定" @@ -879,16 +888,11 @@ msgstr "竞赛标识" msgid "contest name" msgstr "竞赛名称" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "作者" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "这些用户可以编辑竞赛。" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "策展人" @@ -896,7 +900,7 @@ msgstr "策展人" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "这些用户将可以编辑竞赛,但会隐藏姓名。" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "测试人员" @@ -910,7 +914,7 @@ msgstr "测试人员看到记分板" #: judge/models/contest.py:81 msgid "If testers can see the scoreboard." -msgstr "" +msgstr "排行榜是否对选手可见" #: judge/models/contest.py:82 msgid "testers see submissions" @@ -918,7 +922,7 @@ msgstr "测试人员看到提交" #: judge/models/contest.py:83 msgid "If testers can see in-contest submissions." -msgstr "" +msgstr "赛时提交是否对选手可见" #: judge/models/contest.py:84 msgid "spectators" @@ -932,12 +936,12 @@ msgstr "这些用户将能够旁观竞赛,但是不能提前看到题目。" msgid "description" msgstr "描述" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "题目" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "开始时间" @@ -945,12 +949,12 @@ msgstr "开始时间" msgid "end time" msgstr "结束时间" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "时间限制" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "公开" @@ -988,7 +992,7 @@ msgstr "记分板可见性" #: judge/models/contest.py:107 msgid "Scoreboard visibility through the duration of the contest." -msgstr "" +msgstr "赛时排行榜是否可见" #: judge/models/contest.py:109 msgid "no comments" @@ -1068,20 +1072,20 @@ msgstr "" #: judge/models/contest.py:136 msgid "Whether to show a section containing contest settings on the contest page or not." -msgstr "" +msgstr "是否在比赛首页显示比赛设置" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "只对组织可见" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "组织" #: judge/models/contest.py:141 msgid "If non-empty, only these organizations may see the contest." -msgstr "" +msgstr "如果非空,该比赛只对这些组织的成员可见" #: judge/models/contest.py:142 msgid "limit organizations that can join" @@ -1104,7 +1108,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "OpenGraph 图像" @@ -1124,7 +1128,7 @@ msgstr "实时参与者数" msgid "contest summary" msgstr "竞赛简介" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "在meta description标签内显示的纯文本介绍。" @@ -1137,7 +1141,7 @@ msgstr "访问码" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "不受欢迎人物" @@ -1185,213 +1189,213 @@ msgstr "精度" msgid "Number of digits to round points to." msgstr "将分数四舍五入到第几位。" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "查看私人竞赛" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "编辑我的竞赛" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "编辑全部竞赛" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "复制竞赛" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "MOSS竞赛" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "计算积分的竞赛" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "竞赛访问码" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "创建私人竞赛" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "更改竞赛可见性" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "编辑竞赛题目标签脚本" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "更改竞赛锁定状态" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "竞赛" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "竞赛" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "关联的竞赛" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "得分" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "累积时间" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "已被取消资格" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "此参与是否被取消资格。" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "以这个抢七" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "虚拟参与信息编号" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 表示正式参与,否则表示第n次虚拟参与。" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "竞赛格式特有的数据" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "%(user)s 在 %(contest)s 旁观" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "%(user)s 于 %(contest)s 的第%(id)d次虚拟参与" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "竞赛参与信息" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "竞赛参与信息" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "分" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "部分" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "仅通过预测试" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "顺序" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "输出前缀替换" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "提交次数上限" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "此题目的最大提交数量,或留空白而表示无限制。" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "为什么包括一个你不能提交的题目?" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "竞赛题目" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "竞赛题目" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "提交信息" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "参与" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "该程序是否只通过预测试。" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "竞赛提交信息" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "竞赛提交历史" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "排名" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "评分" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "原始评分" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "竞赛表现" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "上次评分" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "竞赛评分信息" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "竞赛评分历史" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "竞赛MOSS结果" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "竞赛MOSS结果" @@ -1443,7 +1447,7 @@ msgstr "文章标题" msgid "slug" msgstr "网址标志" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "公共可见性" @@ -1496,7 +1500,7 @@ msgstr "题目类型名称" msgid "problem type" msgstr "题目类型" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "题目类型" @@ -1508,7 +1512,7 @@ msgstr "题目组标识符" msgid "problem group name" msgstr "题目组名称" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "题目组" @@ -1545,7 +1549,7 @@ msgstr "图标的URL。" msgid "license text" msgstr "许可证文本" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "许可证" @@ -1569,280 +1573,267 @@ msgstr "题目解决后可见" msgid "Only own submissions" msgstr "我提交的程序" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "题目代码" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "一个简短,独特的题目代码,将在URL里/problem/之后显示。" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "题目名称" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "题目列表中显示的题目全名。" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "题目正文" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "作者" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "这些用户将能够编辑题目并被列为作者。" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "这些用户将可以编辑这个题目,但不会公开显示为作者。" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "这些用户将能查看这个隐藏的题目,但无法编辑。" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "在题目页面显示的题目类型。" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "在题目列表显示的题目组。" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." msgstr "这个题目的时间限制(以秒为单位)。支持小数秒计时方式(例如1.5)。" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "内存限制" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "此题目的存储限制,以kb为单位(例如 256mb = 262144 kb)。" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "跳过" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "完成题目得分的分数,如果有部分分数而显示'p'结尾。" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "允许部分分数" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "允许的语言" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "允许提交语言。" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" msgstr "手动管理" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "是否允许裁判管理数据。" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "公开日期" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "无法自动在时间后公开题目。" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "禁止这些用户对该题目提交答案。" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "此题目的許可證。" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "题目摘要" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "用户数" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "解决这个题目的用户数量。" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "通过率" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "允许使用所有markup" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "提交源码可见性" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "隐藏时,只对选择的组织才可见。" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "查看隐藏题目" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "编辑自己的题目" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "编辑所有题目" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "编辑所有公共题目" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "使用所有markup来编辑题目" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" msgstr "复制题目" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "改变is_public领域" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "改变is_manually_managed领域" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "查看对组织私有的题目" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "语言" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "翻译题目名" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "翻译题目正文" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "题目翻译" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "题目翻译" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "已澄清的题目" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "澄清的身体" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "澄清时间戳" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "题目澄清" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "题目澄清" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "语言特定资源限制" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "语言特定资源限制" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "关联的题目" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "发布日期" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "题解内容" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "查看隐藏的解答" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "题目讲解" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "题目讲解" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "投票者" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" -msgstr "" +msgstr "投票时间" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "备注" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "题目投票" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "题目投票" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1868,8 +1859,8 @@ msgid "Non-trailing spaces" msgstr "无尾随空格" #: judge/models/problem_data.py:28 -msgid "Unordered" -msgstr "无序的" +msgid "Sorted" +msgstr "" #: judge/models/problem_data.py:29 msgid "Byte identical" @@ -1915,7 +1906,7 @@ msgstr "禁用 BigInteger / BigDecimal" msgid "checker arguments" msgstr "检查器参数" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "检查器参数作为JSON对象。" @@ -1963,6 +1954,18 @@ msgstr "分数" msgid "case is pretest?" msgstr "是否为预测试?" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "检查器参数作为JSON对象" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "组织名称" @@ -2040,7 +2043,7 @@ msgid "Edit all organizations" msgstr "编辑所有组织" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "组织" @@ -2081,7 +2084,7 @@ msgstr "成员" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "类" @@ -2106,26 +2109,30 @@ msgid "Ace theme" msgstr "Ace主题" #: judge/models/profile.py:158 +msgid "site theme" +msgstr "" + +#: judge/models/profile.py:159 msgid "last access time" msgstr "上次访问时间" -#: judge/models/profile.py:159 +#: judge/models/profile.py:160 msgid "last IP" msgstr "上次访问 IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "显示排名" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "普通用户" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "题目作家" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2135,200 +2142,200 @@ msgstr "题目作家" msgid "Admin" msgstr "管理" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "禁止评论" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "某些用户在沉默时表现最佳。" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "未列出用户" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "用户将不被排名。" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "用户脚本" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "用户自定义 JavaScript。" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "当前竞赛" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "数学引擎" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "数学渲染使用的引擎。" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "TOTP 2FA 已启用" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "打钩以启用TOTP双重验证。" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "WebAuthn 2FA 已启用" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "打钩以启用WebAuthn双重验证。" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "TOTP 密钥" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "TOTP的32字符,32进制密钥。" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "TOTP密钥必须为空或32进制。" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "一次性代码" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "含有16字符的32进制代码的JSON数组。" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "一次性代码必须是空的或者是一个含有32进制代码的JSON数组。" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "API令牌" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "64个字符hex编码的API访问令牌。" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "API 令牌必须是莫或十六进制的" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "内部备注" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "此用户的管理员备注。" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "上次数据下载时间" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "显示名覆盖" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "显示正在开发的内容" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "编辑 TOTP 设置" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "用户信息" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "用户信息" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" msgstr "设备名称" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "凭据ID" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "公钥" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "签名数量" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "WebAuthn凭据:%(name)s" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "WebAuthn凭据" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "WebAuthn凭据" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "请求时间" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "状态" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "待确认" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "已批准" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "已拒绝" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "理由" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "组织加入请求" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "组织加入请求" @@ -2571,15 +2578,15 @@ msgstr "内部错误 (裁判服务器错误)" msgid "submission time" msgstr "提交时间" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "执行时间" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "内存使用" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "获得分数" @@ -2587,141 +2594,141 @@ msgstr "获得分数" msgid "submission language" msgstr "提交语言" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "状态" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "结果" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "编译错误" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "测试组" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "测试点分值" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "测试用例总分" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "裁判服务器" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" msgstr "提交评论时间" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "管理员最后一次的重新判断日期" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "只进行过预测试" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "提交锁定" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "中止任何提交" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "重新评分提交" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "重新评分很多提交" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "不受限制提交" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "查看所有提交" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "重新提交他人的提交" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "更改提交锁定状态" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" msgstr "提交历史" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "相关提交" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "源码" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "%(submission)s 的源代码" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "测试编号" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "状态标志" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "满分" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "批号" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "评测反馈" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "延长的裁判反馈" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "程序输出" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "程序测试" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "程序测试" @@ -2785,16 +2792,6 @@ msgstr "工单消息" msgid "ticket messages" msgstr "工单消息" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "第[page]页,共[topage]页" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "第%s页/共%s页" - #: judge/ratings.py:194 msgid "Newbie" msgstr "新手" @@ -2851,40 +2848,64 @@ msgstr "正在准备您的提交资料" msgid "Preparing your comment data" msgstr "正在准备您的评论资料" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "由于滥用历史,我们不允许您的电子邮件提供商。请使用有信誉的电子邮件提供商。" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "第{page_number}页,共{total_pages}页" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "不允许测试组为空。" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "编号为%d的组外测试必须设置分数。" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "编号为%d的测试输入文件不存在:%s" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "编号为%d的测试输出文件不存在:%s" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "编号为%d的测试组必须设置分数。" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 +#, python-format +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:154 #, python-format msgid "Attempt to end batch outside of one in case #%d." msgstr "测试编号%d:试图在组外结束测试组。" -#: judge/utils/problem_data.py:154 +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "你怎么损坏zip文件路径?" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "你怎么使生成器路径崩溃?" @@ -2936,45 +2957,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/blog.py:36 +#: judge/views/blog.py:37 #, python-format msgid "Page %d of Posts" msgstr "帖子第%d页" -#: judge/views/comment.py:27 +#: judge/views/comment.py:28 msgid "Messing around, are we?" msgstr "请别捣乱。" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "您投票前必须解决至少一个题目。" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "找不到评论。" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "您不能为自己的评论投票。" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "你已经投了票。" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "从网站中上编辑" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "编辑评论" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "该竞赛不存在" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "找不到标识符为“%s“的竞赛。" @@ -2983,111 +3004,111 @@ msgstr "找不到标识符为“%s“的竞赛。" msgid "Contests" msgstr "竞赛" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "找不到该竞赛。" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "对竞赛”%s“的访问被拒绝" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "复制竞赛" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "从 %s 克隆的竞赛" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "竞赛不在进行" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "“%s“不在进行。" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "禁止加入" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "您在该竞赛不受欢迎。您被永久禁止参加该竞赛。" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "无法输入" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "您不能加入这场竞赛。" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "输入“%s”的访问码" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "你不是在竞赛\"%s\"中。" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "%(month)s的竞赛" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "Y年n月" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "%s 数据" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "%s 排行榜" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "你在 %(contest)s 中的参与历史" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "%(user)s 在 %(contest)s 中的参与历史" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "实时" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "参与历史" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "%s MOSS 结果" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "正在为 %s 运行 MOSS…" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "竞赛标签:%s" @@ -3116,245 +3137,253 @@ msgstr "页面错误 %s" msgid "Runtimes" msgstr "语言" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "无该组织" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "找不到标识符为”%s“的组织。" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "找不到该组织。" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "组织" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "%s 成员列表" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "加入组织" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "你已经是该组织的成员。" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "该组织不开放。" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "离开组织" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "你不是是“%s”的成员。" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "无法申请加入 %s" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "你已经有一个待确认的加入 %s 的请求。" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "请求加入 %s" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "组织加入请求详细信息" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "管理 %s 的加入请求" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "你的组织只能再接受%d个用户。" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "无法接受%d个用户。" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "批准了%d个用户。" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "拒绝了%d个用户。" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "编辑 %s" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "无法编辑组织" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "您没有编辑该组织的权利。" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "你没有踢组织成员的权利。" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "无法踢用户" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "你想踢的用户不存在!" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "你想踢的用户不是组织成员:%s" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "无该题目" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "找不到代码为“%s”的题目。" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "{0} 的题解" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "没有这种题解" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "找不到标识符为“%s”的题解。" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "成功" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "提交给 %s" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "您提交了太多次。" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "禁止提交" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "您在该题目不受欢迎。您被永久禁止为该题目提交解决程序。" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "提交太多了" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "您已超出此题目的提交限制。" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" msgstr "复制题目" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" msgstr "从 %s 克隆的题目" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "检查器参数必须是一个 JSON 对象。" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "检查参数是无效的 JSON。" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "您的 zip 文件是无效的!" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "比较 {0} 的提交" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "正在编辑 {0} 的数据" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "编辑 %s 的测试数据" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "为 %s 生成的init.yml" @@ -3380,51 +3409,51 @@ msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "成功预定重新评分%d个提交。" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "%s 排行榜" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "竞赛 %(contest)s 中 %(problem)s 排行榜" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "%(contest)s 第%(number)s题的最佳解决方案" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "用户名只能包含字母,数字或下划线。" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "时区" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "首选语言" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "订阅简讯" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." msgstr "电子邮件地址“%s”已被使用。每个电子邮件地址只允许一个账户。" -#: judge/views/register.py:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "由于滥用历史,我们不允许您的电子邮件提供商。请使用有信誉的电子邮件提供商。" - -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "注册" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "激活Key无效" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "身份验证失败" @@ -3436,77 +3465,77 @@ msgstr "其他" msgid "Language statistics" msgstr "语言统计信息" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "状态" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "版本矩阵" +msgid "Version" +msgstr "版本" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "拒绝访问。解决 %(problem)s 来查看它。" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" msgstr "无法访问提交" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "权限被拒绝。" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "%(user)s 在 %(problem)s 的提交结果" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "所有提交历史" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "我提交的程序" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "%s 的提交历史" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" msgstr "%s 的提交历史" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" msgstr "我对 %(problem)s 提交的程序" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "%(user)s 在 %(problem)s 的提交历史" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" msgstr "我在 %(contest)s 的提交" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" msgstr "%(user)s 在 %(contest)s 的提交历史" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "{contest} 中 {user} 在 {problem} 的提交历史" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "{user} 对 {contest} 第 {number} 题提交的程序" @@ -3561,102 +3590,157 @@ msgstr "没人" msgid "New Ticket Message For: %s" msgstr "%s 的新工单消息" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "启用双因素身份认证" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" -msgstr "刷新两步验证" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" +msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "禁用双因素身份认证" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "WebAuthn回复无效" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "名称无效" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "员工不能禁用 2FA" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "执行双因素身份认证" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "无该用户" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "无名为“%s”的用户。" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" msgstr "我的帐户" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "用户 %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "登录" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "Y年n月j日 G:i" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "正在准备您的数据…" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "下载您的数据" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "在网站上更新" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "编辑个人资料" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "为用户生成 API 令牌" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "为用户清除API令牌" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "为用户生成一次性代码" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "排行榜" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "您已成功注销。" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "您发送了太多密码重置请求。请稍后再试。" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "您确定您要重新评判所有提交?" @@ -3682,13 +3766,13 @@ msgstr "终止" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "禁用" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "启用" @@ -3708,49 +3792,50 @@ msgstr "" msgid "Edit user" msgstr "编辑用户" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "你好,%(username)s。" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "登出" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" msgstr "登录" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "或" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "注册" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "旁观中" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "本网站启用 JavaScript 效果最好。" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "编辑" @@ -3950,15 +4035,15 @@ msgstr "得分" msgid "No votes" msgstr "没有投票" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" msgstr "点击复制" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "复制" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "复制成功!" @@ -4039,7 +4124,7 @@ msgstr "日历" msgid "Info" msgstr "资料和信息" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "统计数据" @@ -4251,7 +4336,7 @@ msgstr "AC率" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" msgstr "用户" @@ -4259,7 +4344,7 @@ msgstr "用户" msgid "Editorials" msgstr "题目讲解" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" msgstr "题解" @@ -4423,19 +4508,19 @@ msgstr "取消取消资格" msgid "Disqualify" msgstr "取消资格" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "您确定要取消此参与资格吗?" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "您确定要取消取消此参与资格吗?" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "查看用户参与历史" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "显示组织" @@ -4606,6 +4691,17 @@ msgstr "时间:" msgid "Reason:" msgstr "理由:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "用户" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "时间" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4622,7 +4718,7 @@ msgid "There are no requests to approve." msgstr "没有请求批准。" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "删除?" @@ -4658,59 +4754,67 @@ msgstr "更新预览" msgid "Enter a new code for the cloned problem:" msgstr "输入复制题目的新代码:" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "精度(十进制数)" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "查看 YAML" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "显示列:" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "输出前缀" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "输出限制" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "检查器" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "生成器参数" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "类型" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "输入文件" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "输出文件" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "预测试?" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "提交!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "添加新的用例" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "保存" @@ -4727,98 +4831,98 @@ msgid "Author:" msgid_plural "Authors:" msgstr[0] "作者:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "根据类型过滤…" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "热门题目" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "分类" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "类型" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC%%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "留空则不按语言过滤" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "留空则不按结果过滤" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "开始和结束ID必须有效。" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "结束ID必须在开始 ID之后。" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, python-brace-format msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" msgstr "您将重新评分{count}提交,是否确认?" -#: templates/problem/manage_submission.html:96 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" msgstr "您将重新评分一些提交,是否确认?" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "重新评分所有提交" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "通过ID过滤:" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "开始ID:" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "结束ID:" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "这个范围包括两个终点。" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "按语言筛选:" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "重新评分选定的提交" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "全部重新评分" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "这将重新评分%(count)s个提交。" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "您确定您要重新评判%(count)s个提交?" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "重新评分所有提交" @@ -4894,11 +4998,11 @@ msgstr "分数:" msgid "(partial)" msgstr "(部分)" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "时间限制:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "内存限制:" @@ -4933,14 +5037,6 @@ msgstr "提出问题" msgid "Report an issue" msgstr "反馈问题" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "时间限制:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "内存限制:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "题目搜索" @@ -4978,8 +5074,8 @@ msgstr "题目类型" msgid "Point range" msgstr "分数范围" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "搜索" @@ -4988,7 +5084,7 @@ msgid "Random" msgstr "随机" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5000,30 +5096,30 @@ msgstr "结果" msgid "Date" msgstr "日期" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "您的程序必须最多包含 65536 个字符。" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "警告!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "您的默认编程语言,%(language)s,在此题目不可用,且已取消选择。" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" msgstr[0] "你還可以提交%(left)s次" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" msgstr "你還可以提交0次" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "此题目没有可用的裁判服务器。" @@ -5126,6 +5222,66 @@ msgstr[0] "请在 %(count)s 天内激活您的 %(site_name)s 账户。" msgid "Activate your %(site_name)s account" msgstr "激活您的 %(site_name)s 账户" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "无效的用户名或密码!" @@ -5229,7 +5385,7 @@ msgstr "%(site_name)s 团队" msgid "Password reset on %(site_name)s" msgstr "在 %(site_name)s 上重置密码" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" msgstr "继续 >" @@ -5242,36 +5398,40 @@ msgstr "注册目前已关闭。请联系管理员。" 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:170 +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "电子邮箱" + +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "(再输一次密码以确定)" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "(选择离您最近的主要城市)" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "从地图中选" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "默认语言" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "关联的组织" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "通过Email发送未来竞赛的通知" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" msgstr "注册!" @@ -5305,25 +5465,25 @@ msgid "Enter the 6-digit code generated by your app:" msgstr "输入您应用生成的6位数代码:" #: templates/registration/totp_enable.html:90 -msgid "Refresh Two Factor Authentication" -msgstr "刷新双因素认证" +msgid "Edit Two Factor Authentication" +msgstr "" #: templates/registration/totp_enable.html:92 msgid "Enable Two Factor Authentication" msgstr "启用两因素认证" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "下面是一个一次性验证码列表。" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "这些代码只能在紧急情况时使用一次。" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5332,7 +5492,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5350,12 +5510,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "你的浏览器不支持 WebAuthn。" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "联系服务器失败。" @@ -5424,8 +5584,8 @@ msgid "Judges" msgstr "裁判服务器" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "版本矩阵" +msgid "Versions" +msgstr "版本" #: templates/submission/info-base.html:8 #, python-format @@ -5449,27 +5609,27 @@ msgstr "评分时裁判服务端发生了内部错误。" msgid "Error information" msgstr "错误信息" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "您确定要重新评测吗?" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "按状态过滤…" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "按语言筛选…" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "提交筛选" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "总计:" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "您处于离线状态。刷新以显示最近的更新。" @@ -5506,7 +5666,7 @@ msgstr "查看状态" msgid "View raw source" msgstr "查看原始源代码" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "重新提交" @@ -5592,15 +5752,15 @@ msgstr "通过预测试不代表程序可以通过完整测试。" msgid "Submission aborted!" msgstr "提交终止!" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "查看源代码" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "按下 Ctrl-Enter 或 Command-Enter 已中止。" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "停止" @@ -5633,32 +5793,32 @@ msgstr "重新打开状态:" msgid "Closed: " msgstr "已关闭:" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "使用桌面通知" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "隐藏已关闭的工单" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "只显示我的工单" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "归档用户" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "处理人" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "标题" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "被分配的人" @@ -5709,152 +5869,152 @@ msgstr "受让人说明" msgid "Nothing here." msgstr "暂无内容!" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "排名" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "用户名搜索…" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "您确定要生成或重新生成您的API令牌吗?" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "这将使任何之前的 API 令牌无效。" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "它还允许不需要双重身份验证而访问您的帐户。" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "离开此页面后,您将无法查看您的API令牌!" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "正在生成…" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "删除" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "您确定要删除您的API令牌吗?" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "生成" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "您确定要删除此安全密钥吗?" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "离开此页面后,您将无法查看您的一次性代码!" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "自我描述:" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "选择离您最近的主要城市" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "时区:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "默认语言:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "编辑器主题:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "数学引擎:" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "关联的组织:" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "修改头像" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "更改密码" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "已激活双元素认证:" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "API令牌:" -#: templates/user/edit-profile.html:360 -msgid "Refresh" -msgstr "刷新" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "隐藏" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" +msgstr "已激活双元素认证:" + +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "一次性代码:" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "隐藏" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "已禁用双元素认证:" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "API令牌:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "安全密钥:" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "删除" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "输入此密钥的名称" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" msgstr "添加" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "用户脚本:" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "更新资料" diff --git a/locale/zh_Hans/LC_MESSAGES/djangojs.po b/locale/zh_Hans/LC_MESSAGES/djangojs.po index 4db596f2f8..75302194e3 100644 --- a/locale/zh_Hans/LC_MESSAGES/djangojs.po +++ b/locale/zh_Hans/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2023-01-16 00:50\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-10-20 00:40\n" "Last-Translator: \n" "Language-Team: Chinese Simplified\n" "Language: zh_CN\n" @@ -17,39 +17,39 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d 天 %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" #: resources/problem-vote.js:11 msgid "Vote on problem points" -msgstr "" +msgstr "评分题目" #: resources/problem-vote.js:16 #, javascript-format msgid "Unable to delete vote: %s" -msgstr "" +msgstr "删除评分投票失败: %s" #: resources/problem-vote.js:28 #, javascript-format msgid "Edit points vote (%s)" -msgstr "" +msgstr "修改评分 (%s)" #: resources/problem-vote.js:34 #, javascript-format msgid "Unable to cast vote: %s" -msgstr "" +msgstr "无法评分: %s" #: resources/problem-vote.js:63 msgid "Number of votes for this point value" -msgstr "" +msgstr "该分值的评分人数" #: resources/user_profile.js:47 msgid "past year" diff --git a/locale/zh_Hant/LC_MESSAGES/django.po b/locale/zh_Hant/LC_MESSAGES/django.po index 67f515c127..e1f6a8e826 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: 2023-01-20 23:04+0000\n" -"PO-Revision-Date: 2023-01-21 00:48\n" +"POT-Creation-Date: 2024-01-21 07:07+0000\n" +"PO-Revision-Date: 2024-01-22 00:45\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -17,120 +17,121 @@ msgstr "" "X-Crowdin-File: django.po\n" "X-Crowdin-File-ID: 10\n" -#: dmoj/settings.py:380 +#: dmoj/settings.py:392 msgid "Catalan" msgstr "加泰隆語" -#: dmoj/settings.py:381 +#: dmoj/settings.py:393 msgid "German" msgstr "德文" -#: dmoj/settings.py:382 +#: dmoj/settings.py:394 msgid "Greek" msgstr "希臘文" -#: dmoj/settings.py:383 +#: dmoj/settings.py:395 msgid "English" msgstr "英文" -#: dmoj/settings.py:384 +#: dmoj/settings.py:396 msgid "Spanish" msgstr "西班牙文" -#: dmoj/settings.py:385 +#: dmoj/settings.py:397 msgid "French" msgstr "法文" -#: dmoj/settings.py:386 +#: dmoj/settings.py:398 msgid "Croatian" msgstr "克羅地亞文" -#: dmoj/settings.py:387 +#: dmoj/settings.py:399 msgid "Hungarian" msgstr "匈牙利文" -#: dmoj/settings.py:388 +#: dmoj/settings.py:400 msgid "Japanese" msgstr "日語" -#: dmoj/settings.py:389 +#: dmoj/settings.py:401 msgid "Korean" msgstr "韓文" -#: dmoj/settings.py:390 +#: dmoj/settings.py:402 msgid "Brazilian Portuguese" msgstr "巴西葡萄牙語" -#: dmoj/settings.py:391 +#: dmoj/settings.py:403 msgid "Romanian" msgstr "羅馬尼亞文" -#: dmoj/settings.py:392 +#: dmoj/settings.py:404 msgid "Russian" msgstr "俄文" -#: dmoj/settings.py:393 +#: dmoj/settings.py:405 msgid "Serbian (Latin)" msgstr "塞爾維亞文(拉丁語系)" -#: dmoj/settings.py:394 +#: dmoj/settings.py:406 msgid "Turkish" msgstr "土耳其文" -#: dmoj/settings.py:395 +#: dmoj/settings.py:407 msgid "Vietnamese" msgstr "越南文" -#: dmoj/settings.py:396 +#: dmoj/settings.py:408 msgid "Simplified Chinese" msgstr "簡體中文" -#: dmoj/settings.py:397 +#: dmoj/settings.py:409 msgid "Traditional Chinese" msgstr "繁体中文" -#: dmoj/urls.py:32 +#: dmoj/urls.py:31 msgid "Activation Successful!" msgstr "啟動成功!" -#: dmoj/urls.py:40 +#: dmoj/urls.py:39 msgid "Registration Completed" msgstr "註冊完成" -#: dmoj/urls.py:44 +#: dmoj/urls.py:43 msgid "Registration Not Allowed" msgstr "不允許註冊" -#: dmoj/urls.py:93 templates/base.html:183 +#: dmoj/urls.py:95 templates/base.html:193 msgid "Home" msgstr "首頁" -#: judge/admin/comments.py:23 judge/admin/interface.py:72 +#: judge/admin/comments.py:25 judge/admin/interface.py:73 msgid "Content" msgstr "内容" #: judge/admin/comments.py:40 +msgid "Hide comments" +msgstr "隱藏評論" + +#: judge/admin/comments.py:43 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "已成功隱藏%d則評論。" -#: judge/admin/comments.py:43 -msgid "Hide comments" -msgstr "隱藏評論" - #: judge/admin/comments.py:47 +msgid "Unhide comments" +msgstr "取消隱藏回應" + +#: judge/admin/comments.py:50 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "已成功取消隱藏%d則評論。" -#: judge/admin/comments.py:50 -msgid "Unhide comments" -msgstr "取消隱藏回應" - -#: judge/admin/comments.py:58 -msgid "Associated page" +#: judge/admin/comments.py:54 judge/models/comment.py:29 +#: judge/models/comment.py:182 +msgid "associated page" msgstr "關聯頁" #: judge/admin/contest.py:31 @@ -138,22 +139,22 @@ msgid "Included contests" msgstr "帶標籤的競賽" #: judge/admin/contest.py:65 templates/contest/contest.html:195 -#: templates/contest/moss.html:41 templates/problem/list.html:197 -#: templates/problem/list.html:213 templates/user/user-problems.html:58 +#: templates/contest/moss.html:41 templates/problem/list.html:188 +#: templates/problem/list.html:204 templates/user/user-problems.html:58 #: templates/user/user-problems.html:102 msgid "Problem" msgstr "題目" -#: judge/admin/contest.py:66 judge/views/problem.py:355 +#: judge/admin/contest.py:66 judge/views/problem.py:353 #: templates/contest/contest.html:191 templates/user/user-tabs.html:5 #: templates/user/users-table.html:23 msgid "Problems" msgstr "題目" -#: judge/admin/contest.py:76 judge/admin/submission.py:249 +#: judge/admin/contest.py:77 judge/admin/submission.py:245 #: 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:89 +#: templates/submission/source.html:34 templates/submission/status.html:90 msgid "Rejudge" msgstr "重新評分" @@ -185,91 +186,92 @@ msgstr "权限" msgid "Justice" msgstr "司法" -#: judge/admin/contest.py:229 +#: judge/admin/contest.py:225 +msgid "Mark contests as visible" +msgstr "標記競賽為可見" + +#: judge/admin/contest.py:230 #, python-format msgid "%d contest successfully marked as visible." msgid_plural "%d contests successfully marked as visible." msgstr[0] "%d個競賽已成功公開。" -#: judge/admin/contest.py:232 -msgid "Mark contests as visible" -msgstr "標記競賽為可見" +#: judge/admin/contest.py:234 +msgid "Mark contests as hidden" +msgstr "標記競賽為隐藏" -#: judge/admin/contest.py:238 +#: judge/admin/contest.py:239 #, python-format msgid "%d contest successfully marked as hidden." msgid_plural "%d contests successfully marked as hidden." msgstr[0] "%d個競賽已成功隱藏。" -#: judge/admin/contest.py:241 -msgid "Mark contests as hidden" -msgstr "標記競賽為隐藏" +#: judge/admin/contest.py:243 +msgid "Lock contest submissions" +msgstr "鎖定競賽提交" -#: judge/admin/contest.py:247 +#: judge/admin/contest.py:248 #, python-format msgid "%d contest successfully locked." msgid_plural "%d contests successfully locked." msgstr[0] "已成功鎖定%d場競賽。" -#: judge/admin/contest.py:250 -msgid "Lock contest submissions" -msgstr "鎖定競賽提交" +#: judge/admin/contest.py:252 +msgid "Unlock contest submissions" +msgstr "解鎖競賽提交" -#: judge/admin/contest.py:256 +#: judge/admin/contest.py:257 #, python-format msgid "%d contest successfully unlocked." msgid_plural "%d contests successfully unlocked." msgstr[0] "已成功解鎖%d場競賽。" -#: judge/admin/contest.py:259 -msgid "Unlock contest submissions" -msgstr "解鎖競賽提交" - -#: judge/admin/contest.py:280 judge/admin/submission.py:175 +#: judge/admin/contest.py:280 judge/admin/submission.py:177 #, 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:356 +#: judge/admin/contest.py:353 +msgid "Recalculate results" +msgstr "重新計算結果" + +#: judge/admin/contest.py:359 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d位選手的分數被重判了。" -#: judge/admin/contest.py:359 -msgid "Recalculate results" -msgstr "重新計算結果" - -#: judge/admin/contest.py:363 judge/admin/organization.py:113 +#: judge/admin/contest.py:363 judge/admin/organization.py:110 msgid "username" msgstr "使用者名稱" -#: judge/admin/contest.py:368 templates/base.html:249 +#: judge/admin/contest.py:367 templates/base.html:259 msgid "virtual" msgstr "模擬競賽" -#: judge/admin/interface.py:29 judge/models/interface.py:46 +#: judge/admin/interface.py:28 judge/models/interface.py:46 msgid "link path" msgstr "" -#: judge/admin/interface.py:73 +#: judge/admin/interface.py:74 msgid "Summary" msgstr "概要" -#: judge/admin/interface.py:124 judge/models/contest.py:491 -#: judge/models/contest.py:623 judge/models/profile.py:331 -#: judge/models/profile.py:362 judge/models/submission.py:67 +#: judge/admin/interface.py:125 judge/admin/profile.py:107 +#: judge/admin/submission.py:218 judge/models/contest.py:500 +#: judge/models/contest.py:632 judge/models/profile.py:349 +#: judge/models/profile.py:380 judge/models/submission.py:67 #: judge/models/ticket.py:32 msgid "user" msgstr "使用者" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:154 msgid "object" msgstr "对象" -#: judge/admin/organization.py:82 judge/admin/problem.py:183 -#: judge/admin/profile.py:92 +#: judge/admin/organization.py:83 judge/admin/problem.py:183 +#: judge/admin/profile.py:105 msgid "View on site" msgstr "在網站上檢視" @@ -290,8 +292,8 @@ msgid "Taxonomy" msgstr "分類" #: judge/admin/problem.py:133 templates/contest/contest.html:196 -#: templates/problem/data.html:380 templates/problem/list.html:202 -#: templates/problem/list.html:224 templates/user/base-users-table.html:10 +#: templates/problem/data.html:390 templates/problem/list.html:193 +#: templates/problem/list.html:215 templates/user/base-users-table.html:11 #: templates/user/user-problems.html:60 msgid "Points" msgstr "分數" @@ -300,9 +302,8 @@ msgstr "分數" msgid "Limits" msgstr "限制" -#: judge/admin/problem.py:135 judge/admin/submission.py:243 -#: templates/problem/submission-diff.html:65 templates/stats/tabs.html:4 -#: templates/submission/list.html:317 +#: judge/admin/problem.py:135 templates/problem/submission-diff.html:65 +#: templates/stats/tabs.html:4 templates/submission/list.html:319 msgid "Language" msgstr "語言" @@ -310,102 +311,91 @@ msgstr "語言" msgid "History" msgstr "歷史記錄" -#: judge/admin/problem.py:180 -msgid "Authors" +#: judge/admin/problem.py:177 judge/models/contest.py:70 +#: judge/models/interface.py:67 judge/models/problem.py:553 +msgid "authors" msgstr "作者" -#: judge/admin/problem.py:193 +#: judge/admin/problem.py:189 +msgid "Set publish date to now" +msgstr "將發佈日期設置為現在" + +#: judge/admin/problem.py:192 #, python-format msgid "%d problem's publish date successfully updated." msgid_plural "%d problems' publish date successfully updated." msgstr[0] "已成功更新%d個問題的發佈日期。" -#: judge/admin/problem.py:197 -msgid "Set publish date to now" -msgstr "將發佈日期設置為現在" +#: judge/admin/problem.py:196 +msgid "Mark problems as public" +msgstr "把題目設置成公開的" -#: judge/admin/problem.py:203 +#: judge/admin/problem.py:201 #, python-format msgid "%d problem successfully marked as public." msgid_plural "%d problems successfully marked as public." msgstr[0] "已成功標記%d個問題為公開。" -#: judge/admin/problem.py:207 -msgid "Mark problems as public" -msgstr "把題目設置成公開的" +#: judge/admin/problem.py:205 +msgid "Mark problems as private" +msgstr "把題目應藏" -#: judge/admin/problem.py:213 +#: judge/admin/problem.py:210 #, python-format msgid "%d problem successfully marked as private." msgid_plural "%d problems successfully marked as private." msgstr[0] "" -#: judge/admin/problem.py:217 -msgid "Mark problems as private" -msgstr "把題目應藏" - -#: judge/admin/problem.py:276 judge/models/contest.py:583 -#: judge/models/contest.py:608 judge/models/contest.py:648 -#: judge/models/problem.py:488 judge/models/problem.py:493 -#: judge/models/problem.py:516 judge/models/problem.py:576 +#: judge/admin/problem.py:268 judge/models/contest.py:592 +#: judge/models/contest.py:617 judge/models/contest.py:657 +#: judge/models/problem.py:505 judge/models/problem.py:510 +#: judge/models/problem.py:533 judge/models/problem.py:593 #: judge/models/problem_data.py:35 judge/models/submission.py:68 msgid "problem" msgstr "題目" -#: judge/admin/profile.py:35 +#: judge/admin/profile.py:36 judge/admin/profile.py:115 msgid "timezone" msgstr "時區" -#: judge/admin/profile.py:98 judge/admin/submission.py:222 -#: templates/organization/requests/log.html:9 -#: templates/organization/requests/pending.html:12 -#: templates/ticket/list.html:201 -msgid "User" -msgstr "使用者" - -#: judge/admin/profile.py:103 templates/registration/registration_form.html:149 -msgid "Email" +#: judge/admin/profile.py:111 +msgid "email" msgstr "電子郵件" -#: judge/admin/profile.py:108 judge/views/register.py:28 -#: templates/registration/registration_form.html:177 -msgid "Timezone" -msgstr "時區" - -#: judge/admin/profile.py:113 +#: judge/admin/profile.py:119 msgid "date joined" msgstr "加入日期" -#: judge/admin/profile.py:120 +#: judge/admin/profile.py:123 +msgid "Recalculate scores" +msgstr "" + +#: judge/admin/profile.py:129 #, python-format msgid "%d user had scores recalculated." msgid_plural "%d users had scores recalculated." msgstr[0] "%d個用戶的分數被重判了。" -#: judge/admin/profile.py:123 -msgid "Recalculate scores" -msgstr "" - -#: judge/admin/runtime.py:50 templates/user/edit-profile.html:124 -#: templates/user/edit-profile.html:246 templates/user/edit-profile.html:366 -#: templates/user/edit-profile.html:396 +#: judge/admin/runtime.py:52 templates/user/edit-profile.html:119 +#: templates/user/edit-profile.html:241 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:388 msgid "Regenerate" msgstr "" -#: judge/admin/runtime.py:64 +#: judge/admin/runtime.py:66 msgid "Description" msgstr "描述說明" -#: judge/admin/runtime.py:65 +#: judge/admin/runtime.py:67 msgid "Information" msgstr "" -#: judge/admin/runtime.py:66 +#: judge/admin/runtime.py:68 msgid "Capabilities" msgstr "" #: judge/admin/submission.py:24 judge/admin/submission.py:43 -#: judge/admin/submission.py:232 +#: judge/admin/submission.py:230 msgid "None" msgstr "無" @@ -437,56 +427,60 @@ msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "" -#: judge/admin/submission.py:160 judge/admin/submission.py:182 +#: judge/admin/submission.py:159 +msgid "Rejudge the selected submissions" +msgstr "重新評分選定的程式" + +#: judge/admin/submission.py:162 judge/admin/submission.py:184 msgid "You do not have the permission to rejudge submissions." msgstr "您沒有對程式重新評分的權限。" -#: judge/admin/submission.py:166 +#: judge/admin/submission.py:168 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "您沒有對這麼多程式重新評分的權限。" -#: judge/admin/submission.py:178 -msgid "Rejudge the selected submissions" -msgstr "重新評分選定的程式" +#: judge/admin/submission.py:181 +msgid "Rescore the selected submissions" +msgstr "重新計分所選取的提交紀錄" -#: judge/admin/submission.py:204 judge/views/problem_manage.py:129 +#: judge/admin/submission.py:206 judge/views/problem_manage.py:129 #, python-format msgid "%d submission was successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d筆提交紀錄已成功重新計分。" -#: judge/admin/submission.py:207 -msgid "Rescore the selected submissions" -msgstr "重新計分所選取的提交紀錄" - -#: judge/admin/submission.py:211 -msgid "Problem code" -msgstr "題目代碼" +#: judge/admin/submission.py:210 judge/models/problem.py:117 +msgid "problem code" +msgstr "" -#: judge/admin/submission.py:216 -msgid "Problem name" +#: judge/admin/submission.py:214 judge/models/problem.py:120 +msgid "problem name" msgstr "題目名稱" -#: judge/admin/submission.py:226 templates/organization/requests/log.html:10 -#: templates/organization/requests/pending.html:13 -msgid "Time" +#: judge/admin/submission.py:222 +msgid "time" msgstr "時間" -#: judge/admin/submission.py:234 +#: judge/admin/submission.py:226 +msgid "memory" +msgstr "記憶體" + +#: judge/admin/submission.py:232 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:236 +#: judge/admin/submission.py:234 #, python-format msgid "%.2f MB" msgstr "%.2f MB" -#: judge/admin/submission.py:238 -msgid "Memory" -msgstr "記憶體" +#: judge/admin/submission.py:236 judge/models/problem.py:511 +#: judge/models/problem.py:534 judge/models/runtime.py:111 +msgid "language" +msgstr "語言" -#: judge/admin/submission.py:247 +#: judge/admin/submission.py:243 msgid "Locked" msgstr "已锁定" @@ -510,7 +504,8 @@ msgstr "線上裁判" msgid "Comment body" msgstr "評論主體" -#: judge/comments.py:47 judge/views/comment.py:40 judge/views/ticket.py:46 +#: judge/comments.py:47 judge/views/comment.py:41 judge/views/ticket.py:46 +#: judge/views/user.py:353 msgid "Your part is silent, little toad." msgstr "" @@ -601,119 +596,127 @@ msgstr "" msgid "IOI (pre-2016)" msgstr "" -#: judge/forms.py:29 +#: judge/forms.py:31 #, python-brace-format msgid "Two-factor authentication tokens must be {count} decimal digit." msgid_plural "Two-factor authentication tokens must be {count} decimal digits." msgstr[0] "" -#: judge/forms.py:34 +#: judge/forms.py:36 msgid "Invalid two-factor authentication token." msgstr "" -#: judge/forms.py:37 +#: judge/forms.py:39 msgid "Scratch codes must be 16 Base32 characters." msgstr "" -#: judge/forms.py:39 judge/forms.py:265 +#: judge/forms.py:41 judge/forms.py:288 msgid "Invalid scratch code." msgstr "" -#: judge/forms.py:46 +#: judge/forms.py:48 msgid "Subscribe to contest updates" msgstr "" -#: judge/forms.py:47 +#: judge/forms.py:49 msgid "Enable experimental features" msgstr "" -#: judge/forms.py:72 +#: judge/forms.py:74 msgid "You must solve at least one problem before you can update your profile." msgstr "您必須解開至少一道問題才可以更新您的個人檔案。" -#: judge/forms.py:80 judge/views/organization.py:151 judge/views/register.py:58 +#: judge/forms.py:82 judge/views/organization.py:176 judge/views/register.py:50 #, python-brace-format msgid "You may not be part of more than {count} public organization." msgid_plural "You may not be part of more than {count} public organizations." msgstr[0] "您不可以同時在多餘{count}的公共組織。" -#: judge/forms.py:98 +#: judge/forms.py:110 +msgid "This email address is already taken." +msgstr "" + +#: judge/forms.py:116 +msgid "Invalid password" +msgstr "" + +#: judge/forms.py:121 msgid "Download comments?" msgstr "下載評論?" -#: judge/forms.py:99 +#: judge/forms.py:122 msgid "Download submissions?" msgstr "下載提交紀錄?" -#: judge/forms.py:100 +#: judge/forms.py:123 msgid "Filter by problem code glob:" msgstr "" -#: judge/forms.py:104 +#: judge/forms.py:127 msgid "Leave empty to include all submissions" msgstr "" -#: judge/forms.py:107 templates/problem/manage_submission.html:142 +#: judge/forms.py:130 templates/problem/manage_submission.html:144 msgid "Filter by result:" msgstr "" -#: judge/forms.py:113 +#: judge/forms.py:136 msgid "Please select at least one thing to download." msgstr "" -#: judge/forms.py:139 +#: judge/forms.py:162 msgid "Any judge" msgstr "任何評測伺服器" -#: judge/forms.py:160 judge/views/register.py:25 +#: judge/forms.py:183 judge/views/register.py:22 #: templates/problem/submission-diff.html:63 -#: templates/registration/registration_form.html:143 -#: templates/user/base-users-table.html:5 +#: templates/registration/registration_form.html:139 +#: templates/user/base-users-table.html:6 msgid "Username" msgstr "使用者名稱" -#: judge/forms.py:161 templates/registration/registration_form.html:155 -#: templates/registration/registration_form.html:169 +#: judge/forms.py:184 templates/registration/registration_form.html:151 +#: templates/registration/registration_form.html:165 msgid "Password" msgstr "密碼" -#: judge/forms.py:193 +#: judge/forms.py:216 msgid "Invalid code length." msgstr "" -#: judge/forms.py:224 +#: judge/forms.py:247 msgid "Invalid WebAuthn response." msgstr "" -#: judge/forms.py:227 +#: judge/forms.py:250 msgid "No WebAuthn challenge issued." msgstr "" -#: judge/forms.py:233 +#: judge/forms.py:256 msgid "Invalid WebAuthn credential ID." msgstr "" -#: judge/forms.py:263 +#: judge/forms.py:286 msgid "Invalid two-factor authentication token or scratch code." msgstr "" -#: judge/forms.py:267 +#: judge/forms.py:290 msgid "Must specify either totp_token or webauthn_response." msgstr "" -#: judge/forms.py:271 judge/models/problem.py:118 +#: judge/forms.py:294 judge/models/problem.py:118 msgid "Problem code must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:276 +#: judge/forms.py:299 msgid "Problem with code already exists." msgstr "此題目代號已經存在。" -#: judge/forms.py:281 judge/models/contest.py:68 +#: judge/forms.py:304 judge/models/contest.py:68 msgid "Contest id must be ^[a-z0-9]+$" msgstr "" -#: judge/forms.py:286 +#: judge/forms.py:309 msgid "Contest with key already exists." msgstr "" @@ -722,108 +725,114 @@ msgstr "" msgid "N j, Y, g:i a" msgstr "" -#: judge/jinja2/datetime.py:30 -#, python-brace-format -msgid "{time}" -msgstr "{time}" - -#: judge/jinja2/datetime.py:31 -#, python-brace-format -msgid "on {time}" -msgstr "在{time}" - #: judge/jinja2/rating.py:24 msgid "Unrated" msgstr "" -#: judge/models/choices.py:59 +#: judge/models/choices.py:24 +msgid "Follow site theme" +msgstr "" + +#: judge/models/choices.py:60 msgid "Leave as LaTeX" msgstr "以LaTeX顯示" -#: judge/models/choices.py:60 +#: judge/models/choices.py:61 msgid "SVG only" msgstr "" -#: judge/models/choices.py:61 +#: judge/models/choices.py:62 msgid "MathML only" msgstr "" -#: judge/models/choices.py:62 +#: judge/models/choices.py:63 msgid "MathJax with SVG fallback" msgstr "" -#: judge/models/choices.py:63 +#: judge/models/choices.py:64 msgid "Detect best quality" msgstr "" -#: judge/models/comment.py:25 +#: judge/models/choices.py:70 +msgid "Follow system default" +msgstr "" + +#: judge/models/choices.py:71 +msgid "Light" +msgstr "" + +#: judge/models/choices.py:72 +msgid "Dark" +msgstr "" + +#: judge/models/comment.py:23 msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "" -#: judge/models/comment.py:41 +#: judge/models/comment.py:27 msgid "commenter" msgstr "" -#: judge/models/comment.py:42 +#: judge/models/comment.py:28 msgid "posted time" msgstr "發佈時間" -#: judge/models/comment.py:43 judge/models/comment.py:196 -msgid "associated page" -msgstr "關聯頁" - -#: judge/models/comment.py:45 +#: judge/models/comment.py:31 msgid "votes" msgstr "投票" -#: judge/models/comment.py:46 +#: judge/models/comment.py:32 msgid "body of comment" msgstr "評論主體" -#: judge/models/comment.py:47 templates/contest/list.html:50 +#: judge/models/comment.py:33 templates/contest/list.html:50 msgid "hidden" msgstr "隱藏" -#: judge/models/comment.py:48 +#: judge/models/comment.py:34 msgid "parent" msgstr "母評論" -#: judge/models/comment.py:53 +#: judge/models/comment.py:36 +msgid "revisions" +msgstr "" + +#: judge/models/comment.py:39 msgid "comment" msgstr "" -#: judge/models/comment.py:54 +#: judge/models/comment.py:40 msgid "comments" msgstr "評論" -#: judge/models/comment.py:89 judge/models/comment.py:141 -#: judge/models/problem.py:547 +#: judge/models/comment.py:75 judge/models/comment.py:127 +#: judge/models/problem.py:564 #, python-format msgid "Editorial for %s" -msgstr "" +msgstr "%s的題解" -#: judge/models/comment.py:169 +#: judge/models/comment.py:155 #, python-format msgid "%(page)s by %(user)s" msgstr "" -#: judge/models/comment.py:191 +#: judge/models/comment.py:177 msgid "comment vote" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:178 msgid "comment votes" msgstr "" -#: judge/models/comment.py:201 +#: judge/models/comment.py:187 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:203 +#: judge/models/comment.py:189 msgid "comment lock" msgstr "" -#: judge/models/comment.py:204 +#: judge/models/comment.py:190 msgid "comment locks" msgstr "" @@ -879,16 +888,11 @@ msgstr "" msgid "contest name" msgstr "" -#: judge/models/contest.py:70 judge/models/interface.py:67 -#: judge/models/problem.py:536 -msgid "authors" -msgstr "作者" - #: judge/models/contest.py:71 msgid "These users will be able to edit the contest." msgstr "這些使用者將能編輯這場競賽。" -#: judge/models/contest.py:73 judge/models/problem.py:126 +#: judge/models/contest.py:73 judge/models/problem.py:127 msgid "curators" msgstr "" @@ -896,7 +900,7 @@ msgstr "" msgid "These users will be able to edit the contest, but will not be listed as authors." msgstr "這些使用者將能編輯這場競賽,但不會被列為作者。" -#: judge/models/contest.py:77 judge/models/problem.py:129 +#: judge/models/contest.py:77 judge/models/problem.py:130 msgid "testers" msgstr "測試人員" @@ -932,12 +936,12 @@ msgstr "" msgid "description" msgstr "" -#: judge/models/contest.py:89 judge/models/problem.py:489 +#: judge/models/contest.py:89 judge/models/problem.py:506 #: judge/models/runtime.py:141 msgid "problems" msgstr "題目" -#: judge/models/contest.py:90 judge/models/contest.py:492 +#: judge/models/contest.py:90 judge/models/contest.py:501 msgid "start time" msgstr "開始時間" @@ -945,12 +949,12 @@ msgstr "開始時間" msgid "end time" msgstr "結束時間" -#: judge/models/contest.py:92 judge/models/problem.py:136 -#: judge/models/problem.py:518 +#: judge/models/contest.py:92 judge/models/problem.py:137 +#: judge/models/problem.py:535 msgid "time limit" msgstr "時間限制" -#: judge/models/contest.py:93 judge/models/problem.py:154 +#: judge/models/contest.py:93 judge/models/problem.py:155 msgid "publicly visible" msgstr "" @@ -1040,7 +1044,7 @@ msgstr "" #: judge/models/contest.py:124 msgid "hide problem tags" -msgstr "" +msgstr "隱藏題目標籤" #: judge/models/contest.py:125 msgid "Whether problem tags should be hidden by default." @@ -1070,11 +1074,11 @@ msgstr "" msgid "Whether to show a section containing contest settings on the contest page or not." msgstr "" -#: judge/models/contest.py:139 judge/models/problem.py:180 +#: judge/models/contest.py:139 judge/models/problem.py:181 msgid "private to organizations" msgstr "" -#: judge/models/contest.py:140 judge/models/problem.py:178 +#: judge/models/contest.py:140 judge/models/problem.py:179 #: judge/models/profile.py:99 msgid "organizations" msgstr "組織" @@ -1089,7 +1093,7 @@ msgstr "" #: judge/models/contest.py:143 msgid "join organizations" -msgstr "" +msgstr "加入組織" #: judge/models/contest.py:144 msgid "If non-empty, only these organizations may join the contest." @@ -1104,7 +1108,7 @@ msgid "If organization private, only these classes may see the contest." msgstr "" #: judge/models/contest.py:148 judge/models/interface.py:74 -#: judge/models/problem.py:164 +#: judge/models/problem.py:165 msgid "OpenGraph image" msgstr "" @@ -1124,7 +1128,7 @@ msgstr "" msgid "contest summary" msgstr "" -#: judge/models/contest.py:156 judge/models/problem.py:166 +#: judge/models/contest.py:156 judge/models/problem.py:167 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" @@ -1137,7 +1141,7 @@ msgstr "" 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:160 judge/models/problem.py:160 +#: judge/models/contest.py:160 judge/models/problem.py:161 msgid "personae non gratae" msgstr "" @@ -1185,213 +1189,213 @@ msgstr "" msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:470 +#: judge/models/contest.py:479 msgid "See private contests" msgstr "" -#: judge/models/contest.py:471 +#: judge/models/contest.py:480 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:472 +#: judge/models/contest.py:481 msgid "Edit all contests" msgstr "編輯所有競賽" -#: judge/models/contest.py:473 +#: judge/models/contest.py:482 msgid "Clone contest" msgstr "複製競賽" -#: judge/models/contest.py:474 templates/contest/moss.html:76 +#: judge/models/contest.py:483 templates/contest/moss.html:76 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:475 +#: judge/models/contest.py:484 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:476 +#: judge/models/contest.py:485 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:477 +#: judge/models/contest.py:486 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:478 +#: judge/models/contest.py:487 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:488 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:480 +#: judge/models/contest.py:489 msgid "Change lock status of contest" msgstr "" -#: judge/models/contest.py:482 judge/models/contest.py:584 -#: judge/models/contest.py:624 judge/models/contest.py:647 -#: judge/models/submission.py:87 +#: judge/models/contest.py:491 judge/models/contest.py:593 +#: judge/models/contest.py:633 judge/models/contest.py:656 +#: judge/models/submission.py:88 msgid "contest" msgstr "競賽" -#: judge/models/contest.py:483 +#: judge/models/contest.py:492 msgid "contests" msgstr "競賽" -#: judge/models/contest.py:490 +#: judge/models/contest.py:499 msgid "associated contest" msgstr "" -#: judge/models/contest.py:493 +#: judge/models/contest.py:502 msgid "score" msgstr "得分" -#: judge/models/contest.py:494 +#: judge/models/contest.py:503 msgid "cumulative time" msgstr "累計時間" -#: judge/models/contest.py:495 +#: judge/models/contest.py:504 msgid "is disqualified" msgstr "" -#: judge/models/contest.py:496 +#: judge/models/contest.py:505 msgid "Whether this participation is disqualified." msgstr "" -#: judge/models/contest.py:497 +#: judge/models/contest.py:506 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:498 +#: judge/models/contest.py:507 msgid "virtual participation id" msgstr "" -#: judge/models/contest.py:499 +#: judge/models/contest.py:508 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "" -#: judge/models/contest.py:500 +#: judge/models/contest.py:509 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:568 +#: judge/models/contest.py:577 #, python-format msgid "%(user)s spectating in %(contest)s" msgstr "" -#: judge/models/contest.py:570 +#: judge/models/contest.py:579 #, python-format msgid "%(user)s in %(contest)s, v%(id)d" msgstr "" -#: judge/models/contest.py:573 +#: judge/models/contest.py:582 #, python-format msgid "%(user)s in %(contest)s" msgstr "" -#: judge/models/contest.py:576 +#: judge/models/contest.py:585 msgid "contest participation" msgstr "" -#: judge/models/contest.py:577 +#: judge/models/contest.py:586 msgid "contest participations" msgstr "" -#: judge/models/contest.py:585 judge/models/contest.py:612 -#: judge/models/problem.py:147 +#: judge/models/contest.py:594 judge/models/contest.py:621 +#: judge/models/problem.py:148 msgid "points" msgstr "分" -#: judge/models/contest.py:586 +#: judge/models/contest.py:595 msgid "partial" msgstr "部分" -#: judge/models/contest.py:587 judge/models/contest.py:613 +#: judge/models/contest.py:596 judge/models/contest.py:622 msgid "is pretested" msgstr "" -#: judge/models/contest.py:588 judge/models/interface.py:43 +#: judge/models/contest.py:597 judge/models/interface.py:43 msgid "order" msgstr "順序" -#: judge/models/contest.py:589 +#: judge/models/contest.py:598 msgid "output prefix length override" msgstr "" -#: judge/models/contest.py:591 +#: judge/models/contest.py:600 msgid "max submissions" msgstr "" -#: judge/models/contest.py:592 +#: judge/models/contest.py:601 msgid "Maximum number of submissions for this problem, or leave blank for no limit." msgstr "本題最多可以提交的次數,留空表示無限制。" -#: judge/models/contest.py:595 +#: judge/models/contest.py:604 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:600 +#: judge/models/contest.py:609 msgid "contest problem" msgstr "" -#: judge/models/contest.py:601 +#: judge/models/contest.py:610 msgid "contest problems" msgstr "" -#: judge/models/contest.py:606 judge/models/submission.py:230 +#: judge/models/contest.py:615 judge/models/submission.py:231 msgid "submission" msgstr "提交訊息" -#: judge/models/contest.py:610 judge/models/contest.py:625 +#: judge/models/contest.py:619 judge/models/contest.py:634 msgid "participation" msgstr "" -#: judge/models/contest.py:614 +#: judge/models/contest.py:623 msgid "Whether this submission was ran only on pretests." msgstr "" -#: judge/models/contest.py:618 +#: judge/models/contest.py:627 msgid "contest submission" msgstr "" -#: judge/models/contest.py:619 +#: judge/models/contest.py:628 msgid "contest submissions" msgstr "" -#: judge/models/contest.py:627 +#: judge/models/contest.py:636 msgid "rank" msgstr "排名" -#: judge/models/contest.py:628 +#: judge/models/contest.py:637 msgid "rating" msgstr "評分" -#: judge/models/contest.py:629 +#: judge/models/contest.py:638 msgid "raw rating" msgstr "" -#: judge/models/contest.py:630 +#: judge/models/contest.py:639 msgid "contest performance" msgstr "" -#: judge/models/contest.py:631 +#: judge/models/contest.py:640 msgid "last rated" msgstr "" -#: judge/models/contest.py:635 +#: judge/models/contest.py:644 msgid "contest rating" msgstr "" -#: judge/models/contest.py:636 +#: judge/models/contest.py:645 msgid "contest ratings" msgstr "" -#: judge/models/contest.py:655 +#: judge/models/contest.py:664 msgid "contest moss result" msgstr "" -#: judge/models/contest.py:656 +#: judge/models/contest.py:665 msgid "contest moss results" msgstr "" @@ -1443,7 +1447,7 @@ msgstr "" msgid "slug" msgstr "網址標誌" -#: judge/models/interface.py:69 judge/models/problem.py:534 +#: judge/models/interface.py:69 judge/models/problem.py:551 msgid "public visibility" msgstr "" @@ -1496,7 +1500,7 @@ msgstr "" msgid "problem type" msgstr "題目類型" -#: judge/models/problem.py:43 judge/models/problem.py:132 +#: judge/models/problem.py:43 judge/models/problem.py:133 msgid "problem types" msgstr "題目類型" @@ -1508,7 +1512,7 @@ msgstr "" msgid "problem group name" msgstr "" -#: judge/models/problem.py:55 judge/models/problem.py:134 +#: judge/models/problem.py:55 judge/models/problem.py:135 msgid "problem group" msgstr "" @@ -1545,7 +1549,7 @@ msgstr "" msgid "license text" msgstr "" -#: judge/models/problem.py:76 judge/models/problem.py:162 +#: judge/models/problem.py:76 judge/models/problem.py:163 msgid "license" msgstr "許可證" @@ -1569,280 +1573,267 @@ msgstr "" msgid "Only own submissions" msgstr "" -#: judge/models/problem.py:117 -msgid "problem code" -msgstr "" - #: judge/models/problem.py:119 msgid "A short, unique code for the problem, used in the URL after /problem/" msgstr "一個簡短、專屬於此題目的代碼,將顯示在網站URL中 /problem/ 的後面。" -#: judge/models/problem.py:120 -msgid "problem name" -msgstr "題目名稱" - #: judge/models/problem.py:121 msgid "The full name of the problem, as shown in the problem list." msgstr "題目的完整名稱,這將會顯示在題目清單中。" -#: judge/models/problem.py:122 +#: judge/models/problem.py:123 msgid "problem body" msgstr "" -#: judge/models/problem.py:123 +#: judge/models/problem.py:124 msgid "creators" msgstr "建立者" -#: judge/models/problem.py:124 +#: judge/models/problem.py:125 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "這些使用者將能編輯此題目,並且他們將被列為作者。" -#: judge/models/problem.py:127 +#: judge/models/problem.py:128 msgid "These users will be able to edit the problem, but not be listed as authors." msgstr "這些使用者將能編輯此題目,但他們不會被列為作者。" -#: judge/models/problem.py:131 +#: judge/models/problem.py:132 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:133 +#: judge/models/problem.py:134 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:136 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:137 +#: judge/models/problem.py:138 msgid "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) are supported." -msgstr "這個題目的時間限制(以秒為單位)。支持小數秒計時方式(例如1.5)。" +msgstr "這個題目的時間限制(以秒為單位)。支援小數秒計時方式(例如1.5)。" -#: judge/models/problem.py:141 judge/models/problem.py:521 +#: judge/models/problem.py:142 judge/models/problem.py:538 msgid "memory limit" msgstr "記憶體限制" -#: judge/models/problem.py:142 +#: judge/models/problem.py:143 msgid "The memory limit for this problem, in kilobytes (e.g. 256mb = 262144 kilobytes)." msgstr "此題目的記憶體限制,以kb為單位(例如 256mb = 262144 kb)。" -#: judge/models/problem.py:146 +#: judge/models/problem.py:147 msgid "short circuit" msgstr "" -#: judge/models/problem.py:148 +#: judge/models/problem.py:149 msgid "Points awarded for problem completion. Points are displayed with a 'p' suffix if partial." msgstr "完成題目得分的分數,如果有部分分數而顯示'p'結尾。" -#: judge/models/problem.py:151 +#: judge/models/problem.py:152 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:152 +#: judge/models/problem.py:153 msgid "allowed languages" msgstr "允許的語言" -#: judge/models/problem.py:153 +#: judge/models/problem.py:154 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:155 +#: judge/models/problem.py:156 msgid "manually managed" -msgstr "" +msgstr "手動管理" -#: judge/models/problem.py:156 +#: judge/models/problem.py:157 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:158 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:159 +#: judge/models/problem.py:160 msgid "Doesn't have the magic ability to auto-publish due to backward compatibility." msgstr "" -#: judge/models/problem.py:161 +#: judge/models/problem.py:162 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:163 +#: judge/models/problem.py:164 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:165 +#: judge/models/problem.py:166 msgid "problem summary" msgstr "" -#: judge/models/problem.py:167 +#: judge/models/problem.py:168 msgid "number of users" msgstr "" -#: judge/models/problem.py:168 +#: judge/models/problem.py:169 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:169 +#: judge/models/problem.py:170 msgid "solve rate" msgstr "" -#: judge/models/problem.py:170 +#: judge/models/problem.py:171 msgid "allow full markdown access" msgstr "" -#: judge/models/problem.py:171 +#: judge/models/problem.py:172 msgid "submission source visibility" msgstr "" -#: judge/models/problem.py:179 +#: judge/models/problem.py:180 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:478 +#: judge/models/problem.py:495 msgid "See hidden problems" msgstr "" -#: judge/models/problem.py:479 +#: judge/models/problem.py:496 msgid "Edit own problems" msgstr "" -#: judge/models/problem.py:480 +#: judge/models/problem.py:497 msgid "Edit all problems" msgstr "" -#: judge/models/problem.py:481 +#: judge/models/problem.py:498 msgid "Edit all public problems" msgstr "" -#: judge/models/problem.py:482 +#: judge/models/problem.py:499 msgid "Edit problems with full markup" msgstr "" -#: judge/models/problem.py:483 templates/problem/problem.html:181 +#: judge/models/problem.py:500 templates/problem/problem.html:181 msgid "Clone problem" -msgstr "" +msgstr "複製題目" -#: judge/models/problem.py:484 +#: judge/models/problem.py:501 msgid "Change is_public field" msgstr "" -#: judge/models/problem.py:485 +#: judge/models/problem.py:502 msgid "Change is_manually_managed field" msgstr "" -#: judge/models/problem.py:486 +#: judge/models/problem.py:503 msgid "See organization-private problems" msgstr "" -#: judge/models/problem.py:494 judge/models/problem.py:517 -#: judge/models/runtime.py:111 -msgid "language" -msgstr "語言" - -#: judge/models/problem.py:495 +#: judge/models/problem.py:512 msgid "translated name" msgstr "" -#: judge/models/problem.py:496 +#: judge/models/problem.py:513 msgid "translated description" msgstr "" -#: judge/models/problem.py:501 +#: judge/models/problem.py:518 msgid "problem translation" msgstr "" -#: judge/models/problem.py:502 +#: judge/models/problem.py:519 msgid "problem translations" msgstr "" -#: judge/models/problem.py:506 +#: judge/models/problem.py:523 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:507 +#: judge/models/problem.py:524 msgid "clarification body" msgstr "" -#: judge/models/problem.py:508 +#: judge/models/problem.py:525 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:511 +#: judge/models/problem.py:528 msgid "problem clarification" msgstr "" -#: judge/models/problem.py:512 +#: judge/models/problem.py:529 msgid "problem clarifications" msgstr "" -#: judge/models/problem.py:527 +#: judge/models/problem.py:544 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:528 +#: judge/models/problem.py:545 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:532 +#: judge/models/problem.py:549 msgid "associated problem" msgstr "" -#: judge/models/problem.py:535 +#: judge/models/problem.py:552 msgid "publish date" msgstr "" -#: judge/models/problem.py:537 +#: judge/models/problem.py:554 msgid "editorial content" msgstr "" -#: judge/models/problem.py:560 +#: judge/models/problem.py:577 msgid "See hidden solutions" msgstr "" -#: judge/models/problem.py:562 +#: judge/models/problem.py:579 msgid "solution" msgstr "題解" -#: judge/models/problem.py:563 +#: judge/models/problem.py:580 msgid "solutions" msgstr "題解" -#: judge/models/problem.py:568 +#: judge/models/problem.py:585 msgid "proposed points" msgstr "" -#: judge/models/problem.py:569 +#: judge/models/problem.py:586 msgid "The amount of points the voter thinks this problem deserves." msgstr "" -#: judge/models/problem.py:575 +#: judge/models/problem.py:592 msgid "voter" msgstr "投票者" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "vote time" msgstr "" -#: judge/models/problem.py:578 +#: judge/models/problem.py:595 msgid "The time this vote was cast." msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "note" msgstr "" -#: judge/models/problem.py:580 +#: judge/models/problem.py:597 msgid "Justification for problem point value." msgstr "" -#: judge/models/problem.py:584 +#: judge/models/problem.py:601 msgid "problem vote" msgstr "" -#: judge/models/problem.py:585 +#: judge/models/problem.py:602 msgid "problem votes" msgstr "" -#: judge/models/problem.py:588 +#: judge/models/problem.py:605 #, python-format msgid "Points vote by %(voter)s for %(problem)s" msgstr "" @@ -1868,7 +1859,7 @@ msgid "Non-trailing spaces" msgstr "" #: judge/models/problem_data.py:28 -msgid "Unordered" +msgid "Sorted" msgstr "" #: judge/models/problem_data.py:29 @@ -1915,7 +1906,7 @@ msgstr "禁用 BigInteger / BigDecimal" msgid "checker arguments" msgstr "" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:96 +#: judge/models/problem_data.py:48 msgid "Checker arguments as a JSON object." msgstr "" @@ -1963,6 +1954,18 @@ msgstr "分數" msgid "case is pretest?" msgstr "" +#: judge/models/problem_data.py:96 +msgid "checker arguments as a JSON object" +msgstr "" + +#: judge/models/problem_data.py:97 +msgid "batch dependencies" +msgstr "" + +#: judge/models/problem_data.py:98 +msgid "batch dependencies as a comma-separated list of integers" +msgstr "" + #: judge/models/profile.py:42 msgid "organization title" msgstr "" @@ -2040,7 +2043,7 @@ msgid "Edit all organizations" msgstr "" #: judge/models/profile.py:98 judge/models/profile.py:103 -#: judge/models/profile.py:160 judge/models/profile.py:363 +#: judge/models/profile.py:161 judge/models/profile.py:381 msgid "organization" msgstr "組織" @@ -2081,7 +2084,7 @@ msgstr "" msgid "%(class)s in %(organization)s" msgstr "" -#: judge/models/profile.py:142 judge/models/profile.py:371 +#: judge/models/profile.py:142 judge/models/profile.py:389 msgid "class" msgstr "" @@ -2106,26 +2109,30 @@ msgid "Ace theme" msgstr "" #: judge/models/profile.py:158 -msgid "last access time" +msgid "site theme" msgstr "" #: judge/models/profile.py:159 +msgid "last access time" +msgstr "" + +#: judge/models/profile.py:160 msgid "last IP" msgstr "上一訪問 IP" -#: judge/models/profile.py:162 +#: judge/models/profile.py:163 msgid "display rank" msgstr "顯示排名" -#: judge/models/profile.py:164 +#: judge/models/profile.py:165 msgid "Normal User" msgstr "" -#: judge/models/profile.py:165 +#: judge/models/profile.py:166 msgid "Problem Setter" msgstr "" -#: judge/models/profile.py:166 templates/base.html:211 +#: judge/models/profile.py:167 templates/base.html:221 #: templates/comments/list.html:97 templates/contest/contest-list-tabs.html:25 #: templates/contest/ranking-table.html:51 #: templates/problem/problem-list-tabs.html:6 @@ -2135,200 +2142,200 @@ msgstr "" msgid "Admin" msgstr "管理員" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "comment mute" msgstr "" -#: judge/models/profile.py:167 +#: judge/models/profile.py:168 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:169 +#: judge/models/profile.py:170 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:172 +#: judge/models/profile.py:173 msgid "banned from voting on problem point values" msgstr "" -#: judge/models/profile.py:173 +#: judge/models/profile.py:174 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:177 +#: judge/models/profile.py:178 msgid "user script" msgstr "" -#: judge/models/profile.py:178 +#: judge/models/profile.py:179 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:179 +#: judge/models/profile.py:180 msgid "current contest" msgstr "目前競賽" -#: judge/models/profile.py:181 +#: judge/models/profile.py:182 msgid "math engine" msgstr "" -#: judge/models/profile.py:183 +#: judge/models/profile.py:184 msgid "The rendering engine used to render math." msgstr "" -#: judge/models/profile.py:184 +#: judge/models/profile.py:185 msgid "TOTP 2FA enabled" msgstr "" -#: judge/models/profile.py:185 +#: judge/models/profile.py:186 msgid "Check to enable TOTP-based two-factor authentication." msgstr "" -#: judge/models/profile.py:186 +#: judge/models/profile.py:187 msgid "WebAuthn 2FA enabled" msgstr "" -#: judge/models/profile.py:187 +#: judge/models/profile.py:188 msgid "Check to enable WebAuthn-based two-factor authentication." msgstr "" -#: judge/models/profile.py:188 +#: judge/models/profile.py:189 msgid "TOTP key" msgstr "" -#: judge/models/profile.py:189 +#: judge/models/profile.py:190 msgid "32-character Base32-encoded key for TOTP." msgstr "" -#: judge/models/profile.py:191 +#: judge/models/profile.py:192 msgid "TOTP key must be empty or Base32." msgstr "" -#: judge/models/profile.py:192 +#: judge/models/profile.py:193 msgid "scratch codes" msgstr "" -#: judge/models/profile.py:193 +#: judge/models/profile.py:194 msgid "JSON array of 16-character Base32-encoded codes for scratch codes." msgstr "含有16字符的32進制代碼的JSON數組。" -#: judge/models/profile.py:197 +#: judge/models/profile.py:198 msgid "Scratch codes must be empty or a JSON array of 16-character Base32 codes." msgstr "一次性代碼必須是空的或者是一個含有32進制代碼的JSON數組。" -#: judge/models/profile.py:199 +#: judge/models/profile.py:200 msgid "last TOTP timecode" msgstr "" -#: judge/models/profile.py:200 +#: judge/models/profile.py:201 msgid "API token" msgstr "API 令牌" -#: judge/models/profile.py:201 +#: judge/models/profile.py:202 msgid "64-character hex-encoded API access token." msgstr "" -#: judge/models/profile.py:203 +#: judge/models/profile.py:204 msgid "API token must be None or hexadecimal" msgstr "" -#: judge/models/profile.py:204 +#: judge/models/profile.py:205 msgid "internal notes" msgstr "" -#: judge/models/profile.py:205 +#: judge/models/profile.py:206 msgid "Notes for administrators regarding this user." msgstr "" -#: judge/models/profile.py:206 +#: judge/models/profile.py:207 msgid "last data download time" msgstr "" -#: judge/models/profile.py:207 +#: judge/models/profile.py:208 msgid "display name override" msgstr "" -#: judge/models/profile.py:208 +#: judge/models/profile.py:209 msgid "Name displayed in place of username." msgstr "" -#: judge/models/profile.py:323 +#: judge/models/profile.py:335 msgid "Shows in-progress development stuff" msgstr "" -#: judge/models/profile.py:324 +#: judge/models/profile.py:336 msgid "Edit TOTP settings" msgstr "" -#: judge/models/profile.py:326 +#: judge/models/profile.py:338 msgid "user profile" msgstr "使用者個人檔案" -#: judge/models/profile.py:327 +#: judge/models/profile.py:339 msgid "user profiles" msgstr "使用者個人檔案" -#: judge/models/profile.py:333 +#: judge/models/profile.py:351 msgid "device name" -msgstr "" +msgstr "裝置名稱" -#: judge/models/profile.py:334 +#: judge/models/profile.py:352 msgid "credential ID" msgstr "" -#: judge/models/profile.py:335 +#: judge/models/profile.py:353 msgid "public key" msgstr "" -#: judge/models/profile.py:336 +#: judge/models/profile.py:354 msgid "sign counter" msgstr "" -#: judge/models/profile.py:354 +#: judge/models/profile.py:372 #, python-format msgid "WebAuthn credential: %(name)s" msgstr "" -#: judge/models/profile.py:357 +#: judge/models/profile.py:375 msgid "WebAuthn credential" msgstr "" -#: judge/models/profile.py:358 +#: judge/models/profile.py:376 msgid "WebAuthn credentials" msgstr "" -#: judge/models/profile.py:365 +#: judge/models/profile.py:383 msgid "request time" msgstr "" -#: judge/models/profile.py:366 +#: judge/models/profile.py:384 msgid "state" msgstr "狀態" -#: judge/models/profile.py:367 templates/organization/requests/tabs.html:4 +#: judge/models/profile.py:385 templates/organization/requests/tabs.html:4 msgid "Pending" msgstr "待確認" -#: judge/models/profile.py:368 templates/organization/requests/tabs.html:10 +#: judge/models/profile.py:386 templates/organization/requests/tabs.html:10 msgid "Approved" msgstr "已批准" -#: judge/models/profile.py:369 templates/organization/requests/tabs.html:13 +#: judge/models/profile.py:387 templates/organization/requests/tabs.html:13 msgid "Rejected" msgstr "已拒絕" -#: judge/models/profile.py:372 +#: judge/models/profile.py:390 msgid "reason" msgstr "原因" -#: judge/models/profile.py:381 +#: judge/models/profile.py:399 msgid "organization join request" msgstr "" -#: judge/models/profile.py:382 +#: judge/models/profile.py:400 msgid "organization join requests" msgstr "" @@ -2571,15 +2578,15 @@ msgstr "" msgid "submission time" msgstr "提交時間" -#: judge/models/submission.py:70 judge/models/submission.py:255 +#: judge/models/submission.py:70 judge/models/submission.py:282 msgid "execution time" msgstr "執行時間" -#: judge/models/submission.py:71 judge/models/submission.py:256 +#: judge/models/submission.py:71 judge/models/submission.py:283 msgid "memory usage" msgstr "記憶體使用量" -#: judge/models/submission.py:72 judge/models/submission.py:257 +#: judge/models/submission.py:72 judge/models/submission.py:284 msgid "points granted" msgstr "獲得分數" @@ -2587,141 +2594,141 @@ msgstr "獲得分數" msgid "submission language" msgstr "提交語言" -#: judge/models/submission.py:74 +#: judge/models/submission.py:75 msgid "status" msgstr "狀態" -#: judge/models/submission.py:75 +#: judge/models/submission.py:76 msgid "result" msgstr "結果" -#: judge/models/submission.py:77 +#: judge/models/submission.py:78 msgid "compile errors" msgstr "編譯錯誤" -#: judge/models/submission.py:79 +#: judge/models/submission.py:80 msgid "batched cases" msgstr "" -#: judge/models/submission.py:80 +#: judge/models/submission.py:81 msgid "test case points" msgstr "" -#: judge/models/submission.py:81 +#: judge/models/submission.py:82 msgid "test case total points" msgstr "" -#: judge/models/submission.py:82 +#: judge/models/submission.py:83 msgid "judged on" msgstr "" -#: judge/models/submission.py:84 +#: judge/models/submission.py:85 msgid "submission judge time" -msgstr "" +msgstr "提交紀錄評測時間" -#: judge/models/submission.py:85 +#: judge/models/submission.py:86 msgid "last rejudge date by admin" msgstr "" -#: judge/models/submission.py:86 +#: judge/models/submission.py:87 msgid "was ran on pretests only" msgstr "" -#: judge/models/submission.py:89 +#: judge/models/submission.py:90 msgid "submission lock" msgstr "" -#: judge/models/submission.py:197 +#: judge/models/submission.py:198 #, python-format msgid "Submission %(id)d of %(problem)s by %(user)s" msgstr "" -#: judge/models/submission.py:222 +#: judge/models/submission.py:223 msgid "Abort any submission" msgstr "" -#: judge/models/submission.py:223 +#: judge/models/submission.py:224 msgid "Rejudge the submission" msgstr "重新評測這筆提交紀錄" -#: judge/models/submission.py:224 +#: judge/models/submission.py:225 msgid "Rejudge a lot of submissions" msgstr "" -#: judge/models/submission.py:225 +#: judge/models/submission.py:226 msgid "Submit without limit" msgstr "" -#: judge/models/submission.py:226 +#: judge/models/submission.py:227 msgid "View all submission" msgstr "檢視所有提交紀錄" -#: judge/models/submission.py:227 +#: judge/models/submission.py:228 msgid "Resubmit others' submission" msgstr "重新提交他人的提交紀錄" -#: judge/models/submission.py:228 +#: judge/models/submission.py:229 msgid "Change lock status of submission" msgstr "" -#: judge/models/submission.py:231 +#: judge/models/submission.py:232 msgid "submissions" -msgstr "" +msgstr "提交紀錄" -#: judge/models/submission.py:235 judge/models/submission.py:251 +#: judge/models/submission.py:262 judge/models/submission.py:278 msgid "associated submission" msgstr "" -#: judge/models/submission.py:237 +#: judge/models/submission.py:264 msgid "source code" msgstr "源碼" -#: judge/models/submission.py:240 +#: judge/models/submission.py:267 #, python-format msgid "Source of %(submission)s" msgstr "" -#: judge/models/submission.py:243 +#: judge/models/submission.py:270 msgid "submission source" msgstr "" -#: judge/models/submission.py:244 +#: judge/models/submission.py:271 msgid "submission sources" msgstr "" -#: judge/models/submission.py:253 +#: judge/models/submission.py:280 msgid "test case ID" msgstr "" -#: judge/models/submission.py:254 +#: judge/models/submission.py:281 msgid "status flag" msgstr "" -#: judge/models/submission.py:258 +#: judge/models/submission.py:285 msgid "points possible" msgstr "" -#: judge/models/submission.py:259 +#: judge/models/submission.py:286 msgid "batch number" msgstr "" -#: judge/models/submission.py:260 +#: judge/models/submission.py:287 msgid "judging feedback" msgstr "" -#: judge/models/submission.py:261 +#: judge/models/submission.py:288 msgid "extended judging feedback" msgstr "" -#: judge/models/submission.py:262 +#: judge/models/submission.py:289 msgid "program output" msgstr "" -#: judge/models/submission.py:276 +#: judge/models/submission.py:303 msgid "submission test case" msgstr "" -#: judge/models/submission.py:277 +#: judge/models/submission.py:304 msgid "submission test cases" msgstr "" @@ -2785,16 +2792,6 @@ msgstr "" msgid "ticket messages" msgstr "" -#: judge/pdf_problems.py:148 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:266 -msgid "Page [page] of [topage]" -msgstr "" - -#: judge/pdf_problems.py:288 -#, python-format -msgid "Page %s of %s" -msgstr "" - #: judge/ratings.py:194 msgid "Newbie" msgstr "" @@ -2851,40 +2848,64 @@ msgstr "" msgid "Preparing your comment data" msgstr "" -#: judge/utils/problem_data.py:63 +#: judge/utils/mail.py:18 +msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." +msgstr "由於濫用歷史,我們不允許您的電子郵件提供商。請使用有信譽的電子郵件提供商。" + +#: judge/utils/pdfoid.py:22 +#, python-brace-format +msgid "Page {page_number} of {total_pages}" +msgstr "" + +#: judge/utils/problem_data.py:64 msgid "Empty batches not allowed." msgstr "" -#: judge/utils/problem_data.py:82 +#: judge/utils/problem_data.py:83 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "" -#: judge/utils/problem_data.py:87 +#: judge/utils/problem_data.py:88 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:90 +#: judge/utils/problem_data.py:91 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "" -#: judge/utils/problem_data.py:115 +#: judge/utils/problem_data.py:117 #, python-format msgid "Batch start case #%d requires points." msgstr "" -#: judge/utils/problem_data.py:136 +#: judge/utils/problem_data.py:124 #, python-format -msgid "Attempt to end batch outside of one in case #%d." +msgid "Dependencies must be a comma-separated list of integers for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:129 +#, python-format +msgid "Dependencies must depend on previous batches for batch start case #%d." +msgstr "" + +#: judge/utils/problem_data.py:132 +#, python-format +msgid "Dependencies must be positive for batch start case #%d." msgstr "" #: judge/utils/problem_data.py:154 +#, python-format +msgid "Attempt to end batch outside of one in case #%d." +msgstr "" + +#: judge/utils/problem_data.py:172 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:160 +#: judge/utils/problem_data.py:178 msgid "How did you corrupt the generator path?" msgstr "" @@ -2936,45 +2957,45 @@ msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: 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:28 msgid "Messing around, are we?" msgstr "" -#: judge/views/comment.py:36 +#: judge/views/comment.py:37 msgid "You must solve at least one problem before you can vote." msgstr "您必須解開至少一道問題才可以投票。" -#: judge/views/comment.py:50 +#: judge/views/comment.py:51 msgid "Comment not found." msgstr "" -#: judge/views/comment.py:53 +#: judge/views/comment.py:54 msgid "You cannot vote on your own comments." msgstr "" -#: judge/views/comment.py:71 +#: judge/views/comment.py:72 msgid "You already voted." msgstr "你已經投過票了。" -#: judge/views/comment.py:134 judge/views/organization.py:359 +#: judge/views/comment.py:135 judge/views/organization.py:386 msgid "Edited from site" msgstr "" -#: judge/views/comment.py:155 +#: judge/views/comment.py:160 msgid "Editing comment" msgstr "" -#: judge/views/contests.py:58 judge/views/contests.py:231 -#: judge/views/contests.py:234 judge/views/contests.py:439 +#: judge/views/contests.py:58 judge/views/contests.py:248 +#: judge/views/contests.py:251 judge/views/contests.py:456 msgid "No such contest" msgstr "" -#: judge/views/contests.py:59 judge/views/contests.py:232 +#: judge/views/contests.py:59 judge/views/contests.py:249 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "" @@ -2983,118 +3004,118 @@ msgstr "" msgid "Contests" msgstr "競賽" -#: judge/views/contests.py:235 +#: judge/views/contests.py:252 msgid "Could not find such contest." msgstr "" -#: judge/views/contests.py:238 +#: judge/views/contests.py:255 #, python-format msgid "Access to contest \"%s\" denied" msgstr "" -#: judge/views/contests.py:283 +#: judge/views/contests.py:300 msgid "Clone Contest" msgstr "複製競賽" -#: judge/views/contests.py:317 +#: judge/views/contests.py:334 #, python-format msgid "Cloned contest from %s" msgstr "" -#: judge/views/contests.py:353 +#: judge/views/contests.py:370 msgid "Contest not ongoing" msgstr "" -#: judge/views/contests.py:354 +#: judge/views/contests.py:371 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "" -#: judge/views/contests.py:359 +#: judge/views/contests.py:376 msgid "Banned from joining" msgstr "" -#: judge/views/contests.py:360 +#: judge/views/contests.py:377 msgid "You have been declared persona non grata for this contest. You are permanently barred from joining this contest." msgstr "您在該競賽不受歡迎。您被永久禁止參加該競賽。" -#: judge/views/contests.py:390 +#: judge/views/contests.py:407 msgid "Cannot enter" msgstr "" -#: judge/views/contests.py:391 +#: judge/views/contests.py:408 msgid "You are not able to join this contest." msgstr "" -#: judge/views/contests.py:429 +#: judge/views/contests.py:446 #, python-format msgid "Enter access code for \"%s\"" msgstr "" -#: judge/views/contests.py:440 +#: judge/views/contests.py:457 #, python-format msgid "You are not in contest \"%s\"." msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 #, python-format msgid "Contests in %(month)s" msgstr "" -#: judge/views/contests.py:498 +#: judge/views/contests.py:515 msgid "F Y" msgstr "Y年n月" -#: judge/views/contests.py:556 +#: judge/views/contests.py:573 #, python-format msgid "%s Statistics" msgstr "" -#: judge/views/contests.py:730 +#: judge/views/contests.py:748 #, python-format msgid "%s Rankings" msgstr "" -#: judge/views/contests.py:738 +#: judge/views/contests.py:756 msgid "???" msgstr "???" -#: judge/views/contests.py:754 +#: judge/views/contests.py:772 #, python-format msgid "Your participation in %(contest)s" msgstr "" -#: judge/views/contests.py:755 +#: judge/views/contests.py:773 #, python-format msgid "%(user)s's participation in %(contest)s" msgstr "" -#: judge/views/contests.py:764 +#: judge/views/contests.py:782 msgid "Live" msgstr "實時" -#: judge/views/contests.py:776 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:794 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "" -#: judge/views/contests.py:820 +#: judge/views/contests.py:838 #, python-format msgid "%s MOSS Results" msgstr "" -#: judge/views/contests.py:847 +#: judge/views/contests.py:865 #, python-format msgid "Running MOSS for %s..." msgstr "" -#: judge/views/contests.py:870 +#: judge/views/contests.py:888 #, python-format msgid "Contest tag: %s" msgstr "" #: judge/views/error.py:14 msgid "404 error" -msgstr "" +msgstr "404 錯誤" #: judge/views/error.py:15 #, python-format @@ -3116,245 +3137,253 @@ msgstr "" msgid "Runtimes" msgstr "語言" -#: judge/views/organization.py:52 judge/views/organization.py:55 +#: judge/views/organization.py:53 judge/views/organization.py:56 msgid "No such organization" msgstr "" -#: judge/views/organization.py:53 +#: judge/views/organization.py:54 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "" -#: judge/views/organization.py:56 +#: judge/views/organization.py:57 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:81 judge/views/register.py:33 +#: judge/views/organization.py:98 judge/views/register.py:30 #: templates/user/user-list-tabs.html:5 msgid "Organizations" msgstr "組織" -#: judge/views/organization.py:118 +#: judge/views/organization.py:141 #, python-format msgid "%s Members" msgstr "" -#: judge/views/organization.py:142 judge/views/organization.py:145 -#: judge/views/organization.py:150 +#: judge/views/organization.py:167 judge/views/organization.py:170 +#: judge/views/organization.py:175 msgid "Joining organization" msgstr "" -#: judge/views/organization.py:142 +#: judge/views/organization.py:167 msgid "You are already in the organization." msgstr "您已經在此組織中。" -#: judge/views/organization.py:145 +#: judge/views/organization.py:170 msgid "This organization is not open." msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 msgid "Leaving organization" msgstr "" -#: judge/views/organization.py:164 +#: judge/views/organization.py:189 #, python-format msgid "You are not in \"%s\"." msgstr "" -#: judge/views/organization.py:191 judge/views/organization.py:451 +#: judge/views/organization.py:216 judge/views/organization.py:478 #, python-format msgid "Can't request to join %s" msgstr "" -#: judge/views/organization.py:192 judge/views/organization.py:452 +#: judge/views/organization.py:217 judge/views/organization.py:479 #, python-format msgid "You already have a pending request to join %s." msgstr "您已有一個待處理加入 %s 的請求。" -#: judge/views/organization.py:205 +#: judge/views/organization.py:230 #, python-format msgid "Request to join %s" msgstr "" -#: judge/views/organization.py:224 +#: judge/views/organization.py:249 msgid "Join request detail" msgstr "" -#: judge/views/organization.py:263 +#: judge/views/organization.py:290 #, python-format msgid "Managing join requests for %s" msgstr "" -#: judge/views/organization.py:295 +#: judge/views/organization.py:322 #, python-format msgid "Your organization can only receive %d more member." msgid_plural "Your organization can only receive %d more members." msgstr[0] "你的組織只能再接受%d個用戶。" -#: judge/views/organization.py:297 +#: judge/views/organization.py:324 #, python-format msgid "You cannot approve %d user." msgid_plural "You cannot approve %d users." msgstr[0] "無法接受%d個用戶。" -#: judge/views/organization.py:312 +#: judge/views/organization.py:339 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "" -#: judge/views/organization.py:313 +#: judge/views/organization.py:340 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "" -#: judge/views/organization.py:343 +#: judge/views/organization.py:370 #, python-format msgid "Editing %s" msgstr "" -#: judge/views/organization.py:367 judge/views/organization.py:375 +#: judge/views/organization.py:394 judge/views/organization.py:402 msgid "Can't edit organization" msgstr "" -#: judge/views/organization.py:368 +#: judge/views/organization.py:395 msgid "You are not allowed to edit this organization." msgstr "" -#: judge/views/organization.py:376 +#: judge/views/organization.py:403 msgid "You are not allowed to kick people from this organization." msgstr "" -#: judge/views/organization.py:381 judge/views/organization.py:385 +#: judge/views/organization.py:408 judge/views/organization.py:412 msgid "Can't kick user" msgstr "" -#: judge/views/organization.py:382 +#: judge/views/organization.py:409 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:386 +#: judge/views/organization.py:413 #, python-format msgid "The user you are trying to kick is not in organization: %s" msgstr "" -#: judge/views/organization.py:423 +#: judge/views/organization.py:450 #, python-brace-format msgid "Class {name} in {organization}" msgstr "" -#: judge/views/organization.py:429 +#: judge/views/organization.py:456 #, python-brace-format msgid "Class {name} - {organization}" msgstr "" -#: judge/views/organization.py:457 +#: judge/views/organization.py:484 #, python-brace-format msgid "Request to join {name} in {organization}" msgstr "" -#: judge/views/problem.py:72 +#: judge/views/problem.py:71 msgid "No such problem" msgstr "沒有這個題目" -#: judge/views/problem.py:73 +#: judge/views/problem.py:72 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "" -#: judge/views/problem.py:115 judge/views/problem.py:118 +#: judge/views/problem.py:114 judge/views/problem.py:117 #, python-brace-format msgid "Editorial for {0}" msgstr "" -#: judge/views/problem.py:138 +#: judge/views/problem.py:137 msgid "No such editorial" msgstr "" -#: judge/views/problem.py:139 +#: judge/views/problem.py:138 #, python-format msgid "Could not find an editorial with the code \"%s\"." msgstr "" -#: judge/views/problem.py:240 +#: judge/views/problem.py:239 msgid "Not allowed to vote on this problem." msgstr "" -#: judge/views/problem.py:263 +#: judge/views/problem.py:262 msgid "Not allowed to delete votes on this problem." msgstr "" -#: judge/views/problem.py:266 +#: judge/views/problem.py:265 msgid "success" msgstr "成功" -#: judge/views/problem.py:654 judge/views/problem.py:662 +#: judge/views/problem.py:648 judge/views/problem.py:656 #, python-format msgid "Submit to %s" msgstr "" -#: judge/views/problem.py:707 +#: judge/views/problem.py:701 msgid "You submitted too many submissions." msgstr "" -#: judge/views/problem.py:711 +#: judge/views/problem.py:705 msgid "Banned from submitting" msgstr "" -#: judge/views/problem.py:712 +#: judge/views/problem.py:706 msgid "You have been declared persona non grata for this problem. You are permanently barred from submitting to this problem." msgstr "您在該題目不受歡迎。您被永久禁止為該題目提交解決程序。" -#: judge/views/problem.py:716 +#: judge/views/problem.py:710 msgid "Too many submissions" msgstr "" -#: judge/views/problem.py:717 +#: judge/views/problem.py:711 msgid "You have exceeded the submission limit for this problem." msgstr "" -#: judge/views/problem.py:767 +#: judge/views/problem.py:761 msgid "Do you want me to ban you?" msgstr "" -#: judge/views/problem.py:785 +#: judge/views/problem.py:779 msgid "Clone Problem" -msgstr "" +msgstr "複製題目" -#: judge/views/problem.py:812 +#: judge/views/problem.py:806 #, python-format msgid "Cloned problem from %s" -msgstr "" +msgstr "從%s複製的題目" -#: judge/views/problem_data.py:37 +#: judge/views/problem_data.py:38 msgid "Checker arguments must be a JSON object." msgstr "" -#: judge/views/problem_data.py:39 +#: judge/views/problem_data.py:40 msgid "Checker arguments is invalid JSON." msgstr "" -#: judge/views/problem_data.py:46 +#: judge/views/problem_data.py:47 msgid "Your zip file is invalid!" msgstr "" -#: judge/views/problem_data.py:105 judge/views/problem_data.py:108 +#: judge/views/problem_data.py:51 +msgid "Zip files must end in '.zip'" +msgstr "" + +#: judge/views/problem_data.py:58 +msgid "Generators must not be named init.yml." +msgstr "" + +#: judge/views/problem_data.py:119 judge/views/problem_data.py:122 #, python-brace-format msgid "Comparing submissions for {0}" msgstr "" -#: judge/views/problem_data.py:144 +#: judge/views/problem_data.py:158 #, python-brace-format msgid "Editing data for {0}" msgstr "" -#: judge/views/problem_data.py:147 +#: judge/views/problem_data.py:161 #, python-format msgid "Editing data for %s" msgstr "" -#: judge/views/problem_data.py:245 judge/views/problem_data.py:246 +#: judge/views/problem_data.py:268 judge/views/problem_data.py:269 #, python-format msgid "Generated init.yml for %s" msgstr "" @@ -3372,7 +3401,7 @@ msgstr "" #: judge/views/problem_manage.py:111 #, python-format msgid "Rescoring all submissions for %s..." -msgstr "" +msgstr "正在重新評分%s的所有提交紀錄..." #: judge/views/problem_manage.py:120 #, python-format @@ -3380,51 +3409,51 @@ msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "" -#: judge/views/ranked_submission.py:68 judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:67 judge/views/ranked_submission.py:70 #, python-format msgid "Best solutions for %s" msgstr "" -#: judge/views/ranked_submission.py:85 judge/views/ranked_submission.py:94 +#: judge/views/ranked_submission.py:84 judge/views/ranked_submission.py:93 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "" -#: judge/views/ranked_submission.py:88 judge/views/ranked_submission.py:100 +#: judge/views/ranked_submission.py:87 judge/views/ranked_submission.py:99 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "" -#: judge/views/register.py:26 +#: judge/views/register.py:23 msgid "A username must contain letters, numbers, or underscores." msgstr "" -#: judge/views/register.py:30 +#: judge/views/register.py:25 templates/registration/registration_form.html:173 +msgid "Timezone" +msgstr "時區" + +#: judge/views/register.py:27 msgid "Preferred language" msgstr "" -#: judge/views/register.py:37 +#: judge/views/register.py:34 msgid "Subscribe to newsletter?" msgstr "" -#: judge/views/register.py:44 +#: judge/views/register.py:41 #, python-format msgid "The email address \"%s\" is already taken. Only one registration is allowed per address." -msgstr "電子郵件地址“%s”已被使用。每個電子郵件地址只允許一個賬戶。" - -#: judge/views/register.py:50 -msgid "Your email provider is not allowed due to history of abuse. Please use a reputable email provider." -msgstr "由於濫用歷史,我們不允許您的電子郵件提供商。請使用有信譽的電子郵件提供商。" +msgstr "電子郵件地址“%s”已被使用。每個電子郵件地址只允許一個帳號。" -#: judge/views/register.py:65 +#: judge/views/register.py:57 msgid "Register" msgstr "註冊" -#: judge/views/register.py:103 +#: judge/views/register.py:93 msgid "Activation Key Invalid" msgstr "" -#: judge/views/register.py:114 +#: judge/views/register.py:104 msgid "Authentication failure" msgstr "" @@ -3436,77 +3465,77 @@ msgstr "" msgid "Language statistics" msgstr "" -#: judge/views/status.py:23 templates/submission/list.html:308 +#: judge/views/status.py:23 templates/submission/list.html:310 msgid "Status" msgstr "狀態" #: judge/views/status.py:108 -msgid "Version matrix" -msgstr "" +msgid "Version" +msgstr "版本" -#: judge/views/submission.py:70 +#: judge/views/submission.py:71 #, python-format msgid "Permission denied. Solve %(problem)s in order to view it." msgstr "" -#: judge/views/submission.py:75 judge/views/submission.py:77 +#: judge/views/submission.py:76 judge/views/submission.py:78 msgid "Can't access submission" -msgstr "" +msgstr "無法存取提交紀錄" -#: judge/views/submission.py:77 +#: judge/views/submission.py:78 msgid "Permission denied." msgstr "" -#: judge/views/submission.py:81 judge/views/submission.py:88 +#: judge/views/submission.py:82 judge/views/submission.py:89 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "" -#: judge/views/submission.py:232 judge/views/submission.py:233 +#: judge/views/submission.py:233 judge/views/submission.py:234 #: templates/problem/problem.html:132 msgid "All submissions" msgstr "全部的提交紀錄" -#: judge/views/submission.py:392 judge/views/submission.py:397 +#: judge/views/submission.py:400 judge/views/submission.py:405 msgid "All my submissions" msgstr "我的提交紀錄" -#: judge/views/submission.py:393 judge/views/submission.py:398 +#: judge/views/submission.py:401 judge/views/submission.py:406 #, python-format msgid "All submissions by %s" msgstr "%s 的提交" -#: judge/views/submission.py:426 judge/views/submission.py:429 +#: judge/views/submission.py:434 judge/views/submission.py:437 #, python-format msgid "All submissions for %s" -msgstr "" +msgstr "%s的所有提交紀錄" -#: judge/views/submission.py:490 judge/views/submission.py:497 +#: judge/views/submission.py:498 judge/views/submission.py:505 #, python-format msgid "My submissions for %(problem)s" -msgstr "" +msgstr "我在%(problem)s的提交紀錄" -#: judge/views/submission.py:491 judge/views/submission.py:501 +#: judge/views/submission.py:499 judge/views/submission.py:509 #, python-format msgid "%(user)s's submissions for %(problem)s" -msgstr "" +msgstr "%(user)s在%(problem)s的提交紀錄" -#: judge/views/submission.py:601 judge/views/submission.py:616 +#: judge/views/submission.py:609 judge/views/submission.py:624 #, python-format msgid "My submissions in %(contest)s" -msgstr "" +msgstr "我在%(contest)s的提交紀錄" -#: judge/views/submission.py:602 judge/views/submission.py:620 +#: judge/views/submission.py:610 judge/views/submission.py:628 #, python-format msgid "%(user)s's submissions in %(contest)s" -msgstr "" +msgstr "%(user)s在%(contest)s的提交紀錄" -#: judge/views/submission.py:638 judge/views/submission.py:656 +#: judge/views/submission.py:646 judge/views/submission.py:664 #, python-brace-format msgid "{user}'s submissions for {problem} in {contest}" msgstr "{contest} 中 {user} 在 {problem} 的提交歷史" -#: judge/views/submission.py:643 judge/views/submission.py:664 +#: judge/views/submission.py:651 judge/views/submission.py:672 #, python-brace-format msgid "{user}'s submissions for problem {number} in {contest}" msgstr "{user} 對 {contest} 第 {number} 題提交的程序" @@ -3561,102 +3590,157 @@ msgstr "沒人" msgid "New Ticket Message For: %s" msgstr "" -#: judge/views/two_factor.py:49 +#: judge/views/two_factor.py:50 msgid "Enable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:109 -msgid "Refresh Two-factor Authentication" +#: judge/views/two_factor.py:110 +msgid "Edit Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:117 +#: judge/views/two_factor.py:118 msgid "Disable Two-factor Authentication" msgstr "" -#: judge/views/two_factor.py:166 +#: judge/views/two_factor.py:167 msgid "Invalid WebAuthn response" msgstr "" -#: judge/views/two_factor.py:169 +#: judge/views/two_factor.py:170 msgid "Invalid name" msgstr "" -#: judge/views/two_factor.py:222 +#: judge/views/two_factor.py:223 msgid "Staff may not disable 2FA" msgstr "" -#: judge/views/two_factor.py:230 +#: judge/views/two_factor.py:231 msgid "Perform Two-factor Authentication" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 msgid "No such user" msgstr "" -#: judge/views/user.py:77 +#: judge/views/user.py:83 #, python-format msgid "No user handle \"%s\"." msgstr "" -#: judge/views/user.py:81 +#: judge/views/user.py:87 msgid "My account" -msgstr "我的帳戶" +msgstr "我的帳號" -#: judge/views/user.py:82 +#: judge/views/user.py:88 #, python-format msgid "User %s" msgstr "用戶 %s" -#: judge/views/user.py:129 +#: judge/views/user.py:135 msgid "Login" msgstr "登入" -#: judge/views/user.py:170 +#: judge/views/user.py:176 msgid "M j, Y, G:i" msgstr "" -#: judge/views/user.py:294 +#: judge/views/user.py:300 msgid "Preparing your data..." msgstr "" -#: judge/views/user.py:298 templates/user/edit-profile.html:345 +#: judge/views/user.py:304 templates/user/edit-profile.html:349 msgid "Download your data" msgstr "" -#: judge/views/user.py:354 +#: judge/views/user.py:353 +msgid "Can't edit profile" +msgstr "" + +#: judge/views/user.py:360 msgid "Updated on site" msgstr "" -#: judge/views/user.py:387 templates/admin/auth/user/change_form.html:14 -#: templates/admin/auth/user/change_form.html:17 templates/base.html:213 +#: judge/views/user.py:392 templates/admin/auth/user/change_form.html:14 +#: templates/admin/auth/user/change_form.html:17 templates/base.html:223 #: templates/user/user-tabs.html:16 msgid "Edit profile" msgstr "" -#: judge/views/user.py:402 +#: judge/views/user.py:406 msgid "Generated API token for user" msgstr "" -#: judge/views/user.py:414 +#: judge/views/user.py:418 msgid "Removed API token for user" msgstr "" -#: judge/views/user.py:424 +#: judge/views/user.py:428 msgid "Generated scratch codes for user" msgstr "" -#: judge/views/user.py:430 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:434 templates/user/user-list-tabs.html:4 msgid "Leaderboard" -msgstr "" +msgstr "排行榜" -#: judge/views/user.py:491 +#: judge/views/user.py:495 msgid "You have been successfully logged out." msgstr "您已成功登出。" -#: judge/views/user.py:508 +#: judge/views/user.py:515 msgid "You have sent too many password reset requests. Please try again later." msgstr "" +#: judge/views/user.py:521 templates/user/edit-profile.html:343 +msgid "Change your email" +msgstr "" + +#: judge/views/user.py:568 +msgid "Email change requested" +msgstr "" + +#: judge/views/user.py:569 +#, python-format +msgid "Please click on the link sent to %s." +msgstr "" + +#: judge/views/user.py:581 +msgid "You have sent too many email change requests. Please try again later." +msgstr "" + +#: judge/views/user.py:598 +msgid "Invalid activation key. Please try again." +msgstr "" + +#: judge/views/user.py:600 +msgid "This request has expired. Please try again." +msgstr "" + +#: judge/views/user.py:603 +msgid "Please try again while logged in to the account this email change was originally requested from." +msgstr "" + +#: judge/views/user.py:610 +msgid "The email you originally requested has since been registered by another user. Please try again with a new email." +msgstr "" + +#: judge/views/user.py:616 +#, python-format +msgid "Changed email address from %s to %s" +msgstr "" + +#: judge/views/user.py:623 +msgid "Email change failed" +msgstr "" + +#: judge/views/user.py:627 +msgid "Email successfully changed" +msgstr "" + +#: judge/views/user.py:628 +#, python-format +msgid "The email attached to your account has been changed to %s." +msgstr "" + #: templates/admin/judge/contest/change_form.html:9 msgid "Are you sure you want to rejudge ALL the submissions?" msgstr "" @@ -3682,13 +3766,13 @@ msgstr "終止" #: templates/admin/judge/judge/change_form.html:27 #: templates/admin/judge/judge/change_form.html:30 -#: templates/user/edit-profile.html:355 templates/user/edit-profile.html:358 +#: templates/user/edit-profile.html:377 templates/user/edit-profile.html:380 msgid "Disable" msgstr "禁用" #: templates/admin/judge/judge/change_form.html:33 #: templates/admin/judge/judge/change_form.html:36 -#: templates/user/edit-profile.html:386 +#: templates/user/edit-profile.html:408 msgid "Enable" msgstr "啟用" @@ -3708,49 +3792,50 @@ msgstr "" msgid "Edit user" msgstr "" -#: templates/base.html:206 +#: templates/base.html:216 #, python-format msgid "Hello, %(username)s." msgstr "" -#: templates/base.html:215 +#: templates/base.html:225 msgid "Stop impersonating" msgstr "" -#: templates/base.html:220 +#: templates/base.html:230 msgid "Log out" msgstr "登出" -#: templates/base.html:229 +#: templates/base.html:239 #: templates/registration/password_reset_complete.html:4 msgid "Log in" -msgstr "登錄" +msgstr "登入" -#: templates/base.html:230 templates/registration/registration_form.html:181 +#: templates/base.html:240 templates/registration/registration_form.html:177 msgid "or" msgstr "或" -#: templates/base.html:231 +#: templates/base.html:241 msgid "Sign up" msgstr "註冊" -#: templates/base.html:243 +#: templates/base.html:253 msgid "spectating" msgstr "" -#: templates/base.html:256 +#: templates/base.html:266 msgid "This site works best with JavaScript enabled." msgstr "" -#: templates/base.html:283 +#: templates/base.html:293 msgid "proudly powered by **DMOJ**" msgstr "" #: templates/blog/content.html:13 templates/comments/list.html:89 #: templates/comments/list.html:105 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:423 -#: templates/problem/editorial.html:14 +#: templates/license.html:10 templates/problem/data.html:434 +#: templates/problem/data.html:440 templates/problem/editorial.html:14 +#: templates/user/edit-profile.html:382 msgid "Edit" msgstr "編輯" @@ -3761,7 +3846,7 @@ msgstr "" #: templates/blog/list.html:45 msgid "Blog" -msgstr "博客" +msgstr "部落格" #: templates/blog/list.html:47 msgid "Events" @@ -3804,12 +3889,12 @@ msgstr "" #: templates/blog/list.html:137 templates/contest/list.html:226 msgid "Upcoming contests" -msgstr "" +msgstr "即將到來的競賽" #: templates/blog/list.html:145 templates/contest/contest.html:41 #, python-format msgid "Starting in %(countdown)s." -msgstr "" +msgstr "%(countdown)s後開始" #: templates/blog/list.html:154 msgid "Comment stream" @@ -3869,7 +3954,7 @@ msgstr "已編輯" #: templates/comments/list.html:82 msgid "Link" -msgstr "链接" +msgstr "連結" #: templates/comments/list.html:87 templates/comments/list.html:101 msgid "Reply" @@ -3950,15 +4035,15 @@ msgstr "得分" msgid "No votes" msgstr "" -#: templates/common-content.html:32 templates/user/edit-profile.html:219 +#: templates/common-content.html:32 templates/user/edit-profile.html:214 msgid "Click to copy" -msgstr "" +msgstr "點擊以複製" -#: templates/common-content.html:33 templates/user/edit-profile.html:220 +#: templates/common-content.html:33 templates/user/edit-profile.html:215 msgid "Copy" msgstr "" -#: templates/common-content.html:44 templates/user/edit-profile.html:231 +#: templates/common-content.html:44 templates/user/edit-profile.html:226 msgid "Copied!" msgstr "" @@ -4039,7 +4124,7 @@ msgstr "" msgid "Info" msgstr "資訊" -#: templates/contest/contest-tabs.html:6 templates/submission/list.html:334 +#: templates/contest/contest-tabs.html:6 templates/submission/list.html:336 msgid "Statistics" msgstr "統計資料" @@ -4062,24 +4147,24 @@ msgstr "複製" #: templates/contest/contest-tabs.html:38 #: templates/contest/contest-tabs.html:58 msgid "Leave contest" -msgstr "" +msgstr "離開競賽" #: templates/contest/contest-tabs.html:45 templates/contest/list.html:294 msgid "Virtual join" -msgstr "" +msgstr "參加虛擬競賽" #: templates/contest/contest-tabs.html:56 msgid "Stop spectating" -msgstr "" +msgstr "停止旁觀" #: templates/contest/contest-tabs.html:67 #: templates/contest/contest-tabs.html:81 msgid "Join contest" -msgstr "" +msgstr "參加競賽" #: templates/contest/contest-tabs.html:73 msgid "Spectate contest" -msgstr "" +msgstr "旁觀競賽" #: templates/contest/contest-tabs.html:80 templates/contest/list.html:137 msgid "You cannot join this contest." @@ -4251,26 +4336,26 @@ msgstr "AC率" #: templates/contest/contest.html:198 templates/contest/list.html:152 #: templates/contest/list.html:194 templates/contest/list.html:271 -#: templates/problem/list.html:203 templates/problem/list.html:235 +#: templates/problem/list.html:194 templates/problem/list.html:226 msgid "Users" -msgstr "用戶" +msgstr "使用者" #: templates/contest/contest.html:200 msgid "Editorials" -msgstr "" +msgstr "題解" -#: templates/contest/contest.html:226 templates/problem/list.html:229 +#: templates/contest/contest.html:226 templates/problem/list.html:220 msgid "Editorial" -msgstr "" +msgstr "題解" #: templates/contest/list.html:17 templates/contest/media-js.html:9 #: templates/contest/media-js.html:15 msgid "Are you sure you want to join?" -msgstr "" +msgstr "您確定要參加嗎?" #: templates/contest/list.html:18 msgid "Joining a contest for the first time starts your timer, after which it becomes unstoppable." -msgstr "計時器在你第一次參加競賽的時候就會啟動,競賽開始後將不會停止。" +msgstr "計時器將在您第一次參加競賽時啟動,且競賽開始後就不會停止。" #: templates/contest/list.html:70 msgid "private" @@ -4288,7 +4373,7 @@ msgstr "" #: templates/contest/list.html:105 #, python-format msgid "%(duration)s long" -msgstr "" +msgstr "時長%(duration)s" #: templates/contest/list.html:125 templates/contest/list.html:137 msgid "Join" @@ -4296,11 +4381,11 @@ msgstr "加入" #: templates/contest/list.html:131 msgid "Spectate" -msgstr "" +msgstr "旁觀" #: templates/contest/list.html:147 msgid "Active contests" -msgstr "" +msgstr "正在進行的競賽" #: templates/contest/list.html:151 templates/contest/list.html:193 #: templates/contest/list.html:231 templates/contest/list.html:268 @@ -4315,28 +4400,28 @@ msgstr "" #: templates/contest/list.html:170 templates/contest/list.html:209 #, python-format msgid "Ends in %(countdown)s" -msgstr "" +msgstr "%(countdown)s後結束" #: templates/contest/list.html:243 #, python-format msgid "Starting in %(countdown)s" -msgstr "" +msgstr "%(countdown)s後開始" #: templates/contest/list.html:254 msgid "There are no scheduled contests at this time." -msgstr "" +msgstr "目前沒有排定的競賽" #: templates/contest/list.html:260 msgid "Past contests" -msgstr "" +msgstr "過去的競賽" #: templates/contest/media-js.html:4 msgid "Are you sure you want to leave?" -msgstr "" +msgstr "您確定要離開嗎?" #: templates/contest/media-js.html:5 msgid "You cannot come back to a virtual participation. You will have to start a new one." -msgstr "離開虛擬競賽后將無法再次返回,必須重新開始虛擬競賽。" +msgstr "離開虛擬競賽后將無法再次返回,您必須重新開始虛擬競賽。" #: templates/contest/media-js.html:10 msgid "Joining a contest starts your timer, after which it becomes unstoppable." @@ -4349,7 +4434,7 @@ msgstr "" #: templates/contest/moss.html:28 msgid "Are you sure you want to MOSS the contest?" -msgstr "" +msgstr "您確定要MOSS這場競賽?" #: templates/contest/moss.html:31 msgid "Are you sure you want to delete the MOSS results?" @@ -4363,7 +4448,7 @@ msgstr[0] "" #: templates/contest/moss.html:62 msgid "No submissions" -msgstr "" +msgstr "沒有提交紀錄" #: templates/contest/moss.html:76 msgid "Re-MOSS contest" @@ -4417,25 +4502,25 @@ msgstr "" #: templates/contest/ranking-table.html:42 msgid "Un-Disqualify" -msgstr "" +msgstr "恢復資格" #: templates/contest/ranking-table.html:45 msgid "Disqualify" -msgstr "" +msgstr "取消資格" -#: templates/contest/ranking.html:151 +#: templates/contest/ranking.html:46 msgid "Are you sure you want to disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:156 +#: templates/contest/ranking.html:51 msgid "Are you sure you want to un-disqualify this participation?" msgstr "" -#: templates/contest/ranking.html:228 +#: templates/contest/ranking.html:124 msgid "View user participation" msgstr "" -#: templates/contest/ranking.html:232 +#: templates/contest/ranking.html:128 msgid "Show organizations" msgstr "" @@ -4472,7 +4557,7 @@ msgstr "" #: templates/newsletter/subscription_update_activated.html:3 #: templates/newsletter/subscription_update_activated.html:6 msgid "activate" -msgstr "激活" +msgstr "啟用" #: templates/newsletter/subscription_unsubscribe_activated.html:8 msgid "You have successfully been unsubscribed." @@ -4487,7 +4572,7 @@ msgstr "" #: templates/newsletter/subscription_unsubscribe_email_sent.html:8 msgid "Your unsubscription request has successfully been received. An email has been sent to you with a link you need to follow in order to confirm your unsubscription." -msgstr "您的退訂請求已被收到。一份包含確認鏈接的郵件已被發送。" +msgstr "已收到您的退訂請求。已發送一封包含確認連結的郵件,您需要按照指示來確認退訂。" #: templates/newsletter/subscription_unsubscribe_user.html:17 msgid "Do you want to unsubscribe from this newsletter?" @@ -4518,7 +4603,7 @@ msgstr "" #: templates/newsletter/subscription_update_email_sent.html:8 msgid "Your update request was successfully received and an activation email has been sent to you. In that email you will find a link which you need to follow in order to update your subscription." -msgstr "您的更新請求成功已被成功接收。我們已經發送了激活電子郵件。該電子郵件中包含了更新您的訂閱的鏈接。" +msgstr "已成功收到您的更新請求。我們已發送一封啟用電子郵件。您將會在該電子郵件中找到一個連結,您需要按照這個連結來更新您的訂閱。" #: templates/organization/edit.html:11 #: templates/organization/requests/pending.html:34 @@ -4592,7 +4677,7 @@ msgstr "創建" #: templates/organization/requests/detail.html:13 msgid "User:" -msgstr "用戶:" +msgstr "使用者:" #: templates/organization/requests/detail.html:17 msgid "Organization:" @@ -4606,6 +4691,17 @@ msgstr "時間:" msgid "Reason:" msgstr "理由:" +#: templates/organization/requests/log.html:9 +#: templates/organization/requests/pending.html:12 +#: templates/ticket/list.html:202 +msgid "User" +msgstr "使用者" + +#: templates/organization/requests/log.html:10 +#: templates/organization/requests/pending.html:13 +msgid "Time" +msgstr "時間" + #: templates/organization/requests/log.html:11 #: templates/organization/requests/pending.html:14 msgid "State" @@ -4622,7 +4718,7 @@ msgid "There are no requests to approve." msgstr "" #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:387 +#: templates/problem/data.html:398 msgid "Delete?" msgstr "刪除?" @@ -4636,7 +4732,7 @@ msgstr "" #: templates/organization/requests/request.html:29 msgid "Request!" -msgstr "请求!" +msgstr "請求!" #: templates/organization/requests/tabs.html:7 msgid "Log" @@ -4658,167 +4754,175 @@ msgstr "" msgid "Enter a new code for the cloned problem:" msgstr "" -#: templates/problem/data.html:70 +#: templates/problem/data.html:71 msgid "precision (decimal digits)" msgstr "" -#: templates/problem/data.html:339 +#: templates/problem/data.html:345 msgid "View YAML" msgstr "" -#: templates/problem/data.html:355 +#: templates/problem/data.html:361 msgid "Show columns:" msgstr "" -#: templates/problem/data.html:358 templates/problem/data.html:382 +#: templates/problem/data.html:364 templates/problem/data.html:392 msgid "Output prefix" msgstr "" -#: templates/problem/data.html:362 templates/problem/data.html:383 +#: templates/problem/data.html:368 templates/problem/data.html:393 msgid "Output limit" msgstr "" -#: templates/problem/data.html:366 templates/problem/data.html:384 +#: templates/problem/data.html:372 templates/problem/data.html:394 msgid "Checker" msgstr "檢查器" -#: templates/problem/data.html:370 templates/problem/data.html:385 +#: templates/problem/data.html:376 templates/problem/data.html:395 msgid "Generator args" msgstr "" -#: templates/problem/data.html:377 +#: templates/problem/data.html:380 +msgid "Batch dependencies" +msgstr "" + +#: templates/problem/data.html:387 msgid "Type" msgstr "類型" -#: templates/problem/data.html:378 +#: templates/problem/data.html:388 msgid "Input file" msgstr "" -#: templates/problem/data.html:379 +#: templates/problem/data.html:389 msgid "Output file" msgstr "" -#: templates/problem/data.html:381 +#: templates/problem/data.html:391 msgid "Pretest?" msgstr "" -#: templates/problem/data.html:433 templates/problem/submit.html:256 +#: templates/problem/data.html:396 +msgid "Batch Dependencies" +msgstr "" + +#: templates/problem/data.html:450 templates/problem/submit.html:190 msgid "Submit!" msgstr "提交!" -#: templates/problem/data.html:434 +#: templates/problem/data.html:451 msgid "Add new case" msgstr "" -#: templates/problem/data.html:436 +#: templates/problem/data.html:453 templates/problem/data.html:454 msgid "Save" msgstr "" #: templates/problem/editorial.html:23 msgid "Remember to use this editorial **only** when stuck, and **not to copy-paste code from it**. Please be respectful to the problem author and editorialist." -msgstr "記住 **只** 在沒有思路時使用題解,**不要從它複製粘貼代碼**。請尊重題目和題解的作者。" +msgstr "記住 **只** 在沒有思路時使用題解,**不要複製貼上代碼**。請尊重題目和題解的作者。" #: templates/problem/editorial.html:24 msgid "Submitting an official solution before solving the problem yourself is a bannable offence." -msgstr "在真正解決題目之前提交題解的代碼是可以封禁的罪行。" +msgstr "在真正親自解開題目前提交官方題解的代碼是可以封禁的罪行。" #: templates/problem/editorial.html:30 templates/problem/problem.html:230 msgid "Author:" msgid_plural "Authors:" msgstr[0] "作者:" -#: templates/problem/list.html:58 +#: templates/problem/list.html:49 msgid "Filter by type..." msgstr "" -#: templates/problem/list.html:176 +#: templates/problem/list.html:167 msgid "Hot problems" msgstr "" -#: templates/problem/list.html:198 templates/problem/list.html:216 +#: templates/problem/list.html:189 templates/problem/list.html:207 #: templates/problem/search-form.html:35 templates/user/user-problems.html:59 msgid "Category" msgstr "分類" -#: templates/problem/list.html:200 templates/problem/list.html:220 +#: templates/problem/list.html:191 templates/problem/list.html:211 msgid "Types" msgstr "類型" -#: templates/problem/list.html:227 +#: templates/problem/list.html:218 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/manage_submission.html:55 +#: templates/problem/manage_submission.html:56 msgid "Leave empty to not filter by language" msgstr "" -#: templates/problem/manage_submission.html:60 +#: templates/problem/manage_submission.html:62 msgid "Leave empty to not filter by result" msgstr "" -#: templates/problem/manage_submission.html:79 +#: templates/problem/manage_submission.html:81 msgid "Need valid values for both start and end IDs." msgstr "" -#: templates/problem/manage_submission.html:82 +#: templates/problem/manage_submission.html:84 msgid "End ID must be after start ID." msgstr "" -#: templates/problem/manage_submission.html:90 +#: templates/problem/manage_submission.html:92 #, python-brace-format msgid "You are about to rejudge {count} submissions. Are you sure you want to do this?" -msgstr "您將重新評分{count}提交,是否確認?" +msgstr "您將重新評分{count}筆提交紀錄,您確定要進行此操作嗎?" -#: templates/problem/manage_submission.html:96 +#: templates/problem/manage_submission.html:98 msgid "You are about to rejudge a few submissions. Are you sure you want to do this?" -msgstr "您將重新評分一些提交,是否確認?" +msgstr "您將重新評分一些提交紀錄,您確定要進行此操作嗎?" -#: templates/problem/manage_submission.html:115 +#: templates/problem/manage_submission.html:117 msgid "Rejudge Submissions" msgstr "重新評測提交紀錄" -#: templates/problem/manage_submission.html:120 +#: templates/problem/manage_submission.html:122 msgid "Filter by ID:" msgstr "" -#: templates/problem/manage_submission.html:123 +#: templates/problem/manage_submission.html:125 msgid "Starting ID:" msgstr "" -#: templates/problem/manage_submission.html:127 +#: templates/problem/manage_submission.html:129 msgid "Ending ID:" msgstr "" -#: templates/problem/manage_submission.html:131 +#: templates/problem/manage_submission.html:133 msgid "This range includes both endpoints." msgstr "" -#: templates/problem/manage_submission.html:134 +#: templates/problem/manage_submission.html:136 msgid "Filter by language:" msgstr "" -#: templates/problem/manage_submission.html:150 +#: templates/problem/manage_submission.html:152 msgid "Rejudge selected submissions" msgstr "重新評測選取的提交紀錄" -#: templates/problem/manage_submission.html:157 +#: templates/problem/manage_submission.html:159 msgid "Rescore Everything" msgstr "" -#: templates/problem/manage_submission.html:158 +#: templates/problem/manage_submission.html:160 #, python-format msgid "This will rescore %(count)s submission." msgid_plural "This will rescore %(count)s submissions." msgstr[0] "" -#: templates/problem/manage_submission.html:166 +#: templates/problem/manage_submission.html:168 #, python-format msgid "Are you sure you want to rescore %(count)s submission?" msgid_plural "Are you sure you want to rescore %(count)s submissions?" msgstr[0] "" -#: templates/problem/manage_submission.html:171 +#: templates/problem/manage_submission.html:173 msgid "Rescore all submissions" msgstr "" @@ -4839,11 +4943,11 @@ msgstr[0] "" #: templates/problem/problem.html:117 msgid "0 submissions left" -msgstr "" +msgstr "剩下0次提交機會" #: templates/problem/problem.html:129 msgid "My submissions" -msgstr "" +msgstr "我的提交紀錄" #: templates/problem/problem.html:133 msgid "Best submissions" @@ -4864,7 +4968,7 @@ msgstr "" #: templates/problem/problem.html:151 msgid "Read editorial" -msgstr "" +msgstr "閱讀題解" #: templates/problem/problem.html:156 msgid "Manage tickets" @@ -4872,11 +4976,11 @@ msgstr "" #: templates/problem/problem.html:160 msgid "Edit problem" -msgstr "" +msgstr "編輯題目" #: templates/problem/problem.html:162 msgid "Edit test data" -msgstr "" +msgstr "編輯測試資料" #: templates/problem/problem.html:167 msgid "My tickets" @@ -4894,11 +4998,11 @@ msgstr "分數:" msgid "(partial)" msgstr "" -#: templates/problem/problem.html:198 +#: templates/problem/problem.html:198 templates/problem/raw.html:61 msgid "Time limit:" msgstr "時間限制:" -#: templates/problem/problem.html:210 +#: templates/problem/problem.html:210 templates/problem/raw.html:70 msgid "Memory limit:" msgstr "記憶體限制:" @@ -4919,7 +5023,7 @@ msgstr "" #: templates/problem/problem.html:278 msgid "Judge:" msgid_plural "Judges:" -msgstr[0] "裁判服務器:" +msgstr[0] "評測伺服器:" #: templates/problem/problem.html:295 msgid "none available" @@ -4933,14 +5037,6 @@ msgstr "" msgid "Report an issue" msgstr "" -#: templates/problem/raw.html:61 -msgid "Time Limit:" -msgstr "時間限制:" - -#: templates/problem/raw.html:70 -msgid "Memory Limit:" -msgstr "記憶體限制:" - #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "" @@ -4951,19 +5047,19 @@ msgstr "" #: templates/problem/search-form.html:14 msgid "Full text search" -msgstr "" +msgstr "全文搜尋" #: templates/problem/search-form.html:21 msgid "Hide solved problems" -msgstr "" +msgstr "隱藏已解開的題目" #: templates/problem/search-form.html:27 msgid "Has editorial" -msgstr "" +msgstr "已有題解" #: templates/problem/search-form.html:32 msgid "Show problem types" -msgstr "" +msgstr "顯示題目類型" #: templates/problem/search-form.html:38 templates/problem/search-form.html:40 #: templates/submission/submission-list-tabs.html:4 @@ -4978,8 +5074,8 @@ msgstr "題目類型" msgid "Point range" msgstr "" -#: templates/problem/search-form.html:68 templates/submission/list.html:326 -#: templates/ticket/list.html:188 +#: templates/problem/search-form.html:68 templates/submission/list.html:328 +#: templates/ticket/list.html:189 msgid "Go" msgstr "搜索" @@ -4988,7 +5084,7 @@ msgid "Random" msgstr "隨機" #: templates/problem/submission-diff.html:62 -#: templates/status/language-list.html:34 templates/ticket/list.html:199 +#: templates/status/language-list.html:34 templates/ticket/list.html:200 msgid "ID" msgstr "ID" @@ -5000,30 +5096,30 @@ msgstr "結果" msgid "Date" msgstr "日期" -#: templates/problem/submit.html:117 +#: templates/problem/submit.html:118 msgid "Your source code must contain at most 65536 characters." msgstr "" -#: templates/problem/submit.html:204 +#: templates/problem/submit.html:138 msgid "Warning!" msgstr "警告!" -#: templates/problem/submit.html:205 +#: templates/problem/submit.html:139 #, python-format msgid "Your default language, %(language)s, is unavailable for this problem and has been deselected." msgstr "您的默認編程語言,%(language)s,在此題目不可用,且已取消選擇。" -#: templates/problem/submit.html:213 +#: templates/problem/submit.html:147 #, python-format msgid "You have %(left)s submission left" msgid_plural "You have %(left)s submissions left" -msgstr[0] "" +msgstr[0] "你還有%(left)s次提交機會" -#: templates/problem/submit.html:218 +#: templates/problem/submit.html:152 msgid "You have 0 submissions left" -msgstr "" +msgstr "你還有0次提交機會" -#: templates/problem/submit.html:252 +#: templates/problem/submit.html:186 msgid "No judge is available for this problem." msgstr "此題目目前沒有可用的評測伺服器。" @@ -5126,6 +5222,66 @@ msgstr[0] "" msgid "Activate your %(site_name)s account" msgstr "" +#: templates/registration/email_change.html:20 +msgid "Request email change" +msgstr "" + +#: templates/registration/email_change_activate_email.html:9 +#: templates/registration/email_change_activate_email.txt:3 +#, python-format +msgid "You have requested to change your email address to this email for your user account at %(site_name)s." +msgstr "" + +#: templates/registration/email_change_activate_email.html:11 +#, python-format +msgid "Please click the link to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please click the link to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_email.html:21 +#: templates/registration/email_change_activate_email.txt:14 +#, python-format +msgid "If you have encountered any problems, feel free to shoot us an email at %(email)s." +msgstr "" + +#: templates/registration/email_change_activate_email.txt:5 +#, python-format +msgid "Please go to this page to confirm this email change. The link will expire in %(count)s minute." +msgid_plural "Please go to this page to confirm this email change. The link will expire in %(count)s minutes." +msgstr[0] "" + +#: templates/registration/email_change_activate_subject.txt:1 +#, python-format +msgid "Email change request on %(site_name)s" +msgstr "" + +#: templates/registration/email_change_notify_email.html:9 +#: templates/registration/email_change_notify_email.txt:2 +#, python-format +msgid "Someone (hopefully you!) has requested to change the email address associated with your user account at %(site_name)s to %(new_email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:11 +#: templates/registration/email_change_notify_email.txt:4 +msgid "If this was you, no further action is required." +msgstr "" + +#: templates/registration/email_change_notify_email.html:17 +#: templates/registration/email_change_notify_email.txt:6 +#, python-format +msgid "If this was not you, please change your password and email us immediately at %(email)s." +msgstr "" + +#: templates/registration/email_change_notify_email.html:20 +#: templates/registration/email_change_notify_email.txt:8 +msgid "If this was not you, please change your password and reply to this email immediately." +msgstr "" + +#: templates/registration/email_change_notify_subject.txt:1 +#, python-format +msgid "Alert: Email change request on %(site_name)s" +msgstr "" + #: templates/registration/login.html:35 msgid "Invalid username or password." msgstr "" @@ -5145,7 +5301,7 @@ msgstr "" #: templates/registration/logout.html:3 msgid "See you later!" -msgstr "" +msgstr "等會兒見!" #: templates/registration/password_change_done.html:3 msgid "Your password was successfully changed." @@ -5161,7 +5317,7 @@ msgstr "" #: templates/registration/password_change_form.html:13 msgid "Change Password" -msgstr "" +msgstr "更改密碼" #: templates/registration/password_reset.html:7 msgid "Send Reset Email" @@ -5181,11 +5337,11 @@ msgstr "" #: templates/registration/password_reset_done.html:4 msgid "We've emailed you instructions for setting your password. You should be receiving them shortly." -msgstr "我們已經通過電子郵件向您發送設置密碼的說明。你應該很快就會收到。" +msgstr "我們已通過電子郵件向您發送設置密碼的說明。您應該很快就會收到。" #: templates/registration/password_reset_done.html:5 msgid "If you don't receive an email, please make sure you've entered the address you registered with, and check your spam folder." -msgstr "如果您沒有收到電子郵件,請確保您打開的是您註冊時所用的郵箱,並檢查您的垃圾郵件文件夾。" +msgstr "如果您沒有收到電子郵件,請確保您打開的是您註冊時所用的郵箱,並檢查您的垃圾郵件。" #: templates/registration/password_reset_email.html:6 #, python-format @@ -5205,7 +5361,7 @@ msgstr "" #: templates/registration/password_reset_email.txt:1 #, python-format msgid "You're receiving this email because you requested a password reset for your user account at %(site_name)s." -msgstr "因為您要求您的用戶帳戶在 %(site_name)s 重置密碼,所以您收到這封電子郵件。" +msgstr "您會收到此信件是因為您在%(site_name)s要求重置密碼。" #: templates/registration/password_reset_email.txt:3 msgid "Please go to the following page and choose a new password:" @@ -5229,10 +5385,10 @@ msgstr "" msgid "Password reset on %(site_name)s" msgstr "" -#: templates/registration/profile_creation.html:44 +#: templates/registration/profile_creation.html:38 #: templates/registration/username_select.html:7 msgid "Continue >" -msgstr "繼續 》" +msgstr "繼續 >" #: templates/registration/registration_closed.html:3 msgid "Registration is currently closed. Please contact an administrator." @@ -5240,49 +5396,53 @@ 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 "您已成功註冊。一封電子郵件已被發送到的您的電子郵件地址以確認您的註冊。" +msgstr "您已成功註冊。已發送一封電子郵件到您的電子郵件地址以確認您的註冊。" + +#: templates/registration/registration_form.html:145 +msgid "Email" +msgstr "電子郵件" -#: templates/registration/registration_form.html:170 +#: templates/registration/registration_form.html:166 msgid "(again, for confirmation)" msgstr "" -#: templates/registration/registration_form.html:177 +#: templates/registration/registration_form.html:173 msgid "(select your closest major city)" msgstr "" -#: templates/registration/registration_form.html:182 +#: templates/registration/registration_form.html:178 msgid "pick from map" msgstr "" -#: templates/registration/registration_form.html:187 +#: templates/registration/registration_form.html:183 msgid "Default language" msgstr "" -#: templates/registration/registration_form.html:190 +#: templates/registration/registration_form.html:186 msgid "Affiliated organizations" msgstr "" -#: templates/registration/registration_form.html:199 -#: templates/user/edit-profile.html:322 +#: templates/registration/registration_form.html:195 +#: templates/user/edit-profile.html:321 msgid "Notify me about upcoming contests" msgstr "" -#: templates/registration/registration_form.html:213 +#: templates/registration/registration_form.html:209 msgid "By registering, you agree to our [Terms & Conditions][0]." msgstr "" -#: templates/registration/registration_form.html:216 +#: templates/registration/registration_form.html:212 msgid "Register!" -msgstr "" +msgstr "註冊!" #: templates/registration/totp_disable.html:31 msgid "To protect your account, you must first authenticate before you can disable Two Factor Authentication." -msgstr "為了保護您的帳戶,您必須先進行身份驗證才能禁用兩因素認證。" +msgstr "為了保護您的帳戶,您必須先進行身份驗證才能停用雙重要素驗證。" #: templates/registration/totp_disable.html:38 #: 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位一次性代碼:" +msgstr "輸入您的應用程式所生成的6位數代碼或者一個16位一次性代碼:" #: templates/registration/totp_disable.html:41 msgid "Disable Two Factor Authentication" @@ -5298,14 +5458,14 @@ msgstr "二維碼" #: templates/registration/totp_enable.html:74 msgid "Or enter this code manually:" -msgstr "" +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" +msgid "Edit Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:92 @@ -5313,17 +5473,17 @@ msgid "Enable Two Factor Authentication" msgstr "" #: templates/registration/totp_enable.html:98 -#: templates/user/edit-profile.html:374 +#: templates/user/edit-profile.html:396 msgid "Below is a list of one-time use scratch codes." msgstr "" #: templates/registration/totp_enable.html:99 -#: templates/user/edit-profile.html:375 +#: templates/user/edit-profile.html:397 msgid "These codes can only be used once and are for emergency use." msgstr "" #: templates/registration/totp_enable.html:100 -#: templates/user/edit-profile.html:376 +#: templates/user/edit-profile.html:398 msgid "You can use these codes to login to your account or disable two-factor authentication." msgstr "" @@ -5332,7 +5492,7 @@ msgid "If you ever need more scratch codes, you can regenerate them on the edit msgstr "" #: templates/registration/totp_enable.html:102 -#: templates/user/edit-profile.html:378 +#: templates/user/edit-profile.html:400 msgid "Please write these down and keep them in a secure location." msgstr "" @@ -5350,12 +5510,12 @@ msgid "If you lose your authentication device and are unable to use your scratch msgstr "" #: templates/registration/two_factor_auth.html:33 -#: templates/user/edit-profile.html:164 +#: templates/user/edit-profile.html:159 msgid "WebAuthn is not supported by your browser." msgstr "" #: templates/registration/two_factor_auth.html:54 -#: templates/user/edit-profile.html:188 +#: templates/user/edit-profile.html:183 msgid "Failed to contact server." msgstr "" @@ -5374,7 +5534,7 @@ msgstr "" #: templates/registration/two_factor_auth.html:98 #, python-format msgid "If you lost your authentication device and are unable to use your scratch codes, please contact us at %(email)s." -msgstr "如果您丟失了您的身份驗證設備且無法使用您的驗證碼,請聯繫我們 %(email)s。" +msgstr "如果您遺失了您的身份驗證裝置且無法使用您的一次性代碼,請聯繫我們 %(email)s。" #: templates/stats/language.html:11 msgid "Submission Statistics" @@ -5386,7 +5546,7 @@ msgstr "" #: templates/status/judge-status-table.html:3 msgid "Judge" -msgstr "裁判服務器" +msgstr "評測伺服器" #: templates/status/judge-status-table.html:5 msgid "Online" @@ -5394,7 +5554,7 @@ msgstr "在線" #: templates/status/judge-status-table.html:7 msgid "Uptime" -msgstr "啟動時間" +msgstr "在線時間" #: templates/status/judge-status-table.html:8 msgid "Ping" @@ -5421,11 +5581,11 @@ msgstr "" #: templates/status/status-tabs.html:4 msgid "Judges" -msgstr "裁判服務器" +msgstr "評測伺服器" #: templates/status/status-tabs.html:6 -msgid "Version Matrix" -msgstr "" +msgid "Versions" +msgstr "版本" #: templates/submission/info-base.html:8 #, python-format @@ -5447,29 +5607,29 @@ msgstr "" #: templates/submission/internal-error-message.html:14 msgid "Error information" -msgstr "" +msgstr "錯誤訊息" -#: templates/submission/list.html:35 templates/submission/status.html:80 +#: templates/submission/list.html:35 templates/submission/status.html:81 msgid "Are you sure you want to rejudge?" msgstr "" -#: templates/submission/list.html:74 +#: templates/submission/list.html:75 msgid "Filter by status..." msgstr "" -#: templates/submission/list.html:80 +#: templates/submission/list.html:82 msgid "Filter by language..." msgstr "" -#: templates/submission/list.html:304 +#: templates/submission/list.html:306 msgid "Filter submissions" msgstr "" -#: templates/submission/list.html:340 +#: templates/submission/list.html:342 msgid "Total:" msgstr "總計:" -#: templates/submission/list.html:350 +#: templates/submission/list.html:352 msgid "You were disconnected. Refresh to show latest updates." msgstr "" @@ -5484,7 +5644,7 @@ msgstr "查看" #: templates/submission/row.html:59 msgid "rejudge" -msgstr "重新評分" +msgstr "重新評測" #: templates/submission/row.html:64 msgid "This submission has been locked, and cannot be rejudged." @@ -5506,7 +5666,7 @@ msgstr "" msgid "View raw source" msgstr "" -#: templates/submission/source.html:28 templates/submission/status.html:74 +#: templates/submission/source.html:28 templates/submission/status.html:75 msgid "Resubmit" msgstr "重新提交" @@ -5592,15 +5752,15 @@ msgstr "" msgid "Submission aborted!" msgstr "" -#: templates/submission/status.html:72 +#: templates/submission/status.html:73 msgid "View source" msgstr "" -#: templates/submission/status.html:109 +#: templates/submission/status.html:110 msgid "Press Ctrl-Enter or Command-Enter to abort." msgstr "" -#: templates/submission/status.html:111 +#: templates/submission/status.html:112 msgid "Abort" msgstr "停止" @@ -5633,32 +5793,32 @@ msgstr "" msgid "Closed: " msgstr "" -#: templates/ticket/list.html:156 +#: templates/ticket/list.html:157 msgid "Use desktop notification" msgstr "" -#: templates/ticket/list.html:162 +#: templates/ticket/list.html:163 msgid "Hide closed tickets" msgstr "" -#: templates/ticket/list.html:167 +#: templates/ticket/list.html:168 msgid "Show my tickets only" msgstr "" -#: templates/ticket/list.html:171 +#: templates/ticket/list.html:172 msgid "Filing user" msgstr "" -#: templates/ticket/list.html:180 templates/ticket/ticket.html:196 +#: templates/ticket/list.html:181 templates/ticket/ticket.html:196 msgid "Assignee" msgid_plural "Assignees" msgstr[0] "" -#: templates/ticket/list.html:200 +#: templates/ticket/list.html:201 msgid "Title" msgstr "標題" -#: templates/ticket/list.html:202 +#: templates/ticket/list.html:203 msgid "Assignees" msgstr "" @@ -5709,152 +5869,152 @@ msgstr "" msgid "Nothing here." msgstr "" -#: templates/user/base-users-table.html:3 +#: templates/user/base-users-table.html:4 msgid "Rank" msgstr "排名" -#: templates/user/base-users.html:14 templates/user/base-users.html:57 +#: templates/user/base-users.html:15 templates/user/base-users.html:59 msgid "Search by handle..." msgstr "" -#: templates/user/edit-profile.html:107 +#: templates/user/edit-profile.html:102 msgid "The administrators for this site require all the staff to have Two-factor Authentication enabled, so it may not be disabled at this time." msgstr "" -#: templates/user/edit-profile.html:112 +#: templates/user/edit-profile.html:107 msgid "Are you sure you want to generate or regenerate your API token?" msgstr "" -#: templates/user/edit-profile.html:113 +#: templates/user/edit-profile.html:108 msgid "This will invalidate any previous API tokens." msgstr "" -#: templates/user/edit-profile.html:114 +#: templates/user/edit-profile.html:109 msgid "It also allows access to your account without Two-factor Authentication." msgstr "" -#: templates/user/edit-profile.html:115 +#: templates/user/edit-profile.html:110 msgid "You will not be able to view your API token after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:116 templates/user/edit-profile.html:210 +#: templates/user/edit-profile.html:111 templates/user/edit-profile.html:205 msgid "Generating..." msgstr "" -#: templates/user/edit-profile.html:130 templates/user/edit-profile.html:398 +#: templates/user/edit-profile.html:125 templates/user/edit-profile.html:360 msgid "Remove" msgstr "刪除" -#: templates/user/edit-profile.html:140 +#: templates/user/edit-profile.html:135 msgid "Are you sure you want to remove your API token?" msgstr "" -#: templates/user/edit-profile.html:147 templates/user/edit-profile.html:370 -#: templates/user/edit-profile.html:402 +#: templates/user/edit-profile.html:142 templates/user/edit-profile.html:364 +#: templates/user/edit-profile.html:392 msgid "Generate" msgstr "" -#: templates/user/edit-profile.html:193 +#: templates/user/edit-profile.html:188 msgid "Are you sure you want to delete this security key?" msgstr "" -#: templates/user/edit-profile.html:207 +#: templates/user/edit-profile.html:202 msgid "Are you sure you want to generate or regenerate a new set of scratch codes?" msgstr "" -#: templates/user/edit-profile.html:208 +#: templates/user/edit-profile.html:203 msgid "This will invalidate any previous scratch codes you have." msgstr "" -#: templates/user/edit-profile.html:209 templates/user/edit-profile.html:379 +#: templates/user/edit-profile.html:204 templates/user/edit-profile.html:401 msgid "You will not be able to view your scratch codes after you leave this page!" msgstr "" -#: templates/user/edit-profile.html:278 +#: templates/user/edit-profile.html:273 msgid "Self-description:" msgstr "" -#: templates/user/edit-profile.html:285 +#: templates/user/edit-profile.html:280 msgid "Select your closest major city" msgstr "" -#: templates/user/edit-profile.html:286 +#: templates/user/edit-profile.html:281 msgid "Time zone:" msgstr "時區:" -#: templates/user/edit-profile.html:290 +#: templates/user/edit-profile.html:285 msgid "Language:" msgstr "語言:" -#: templates/user/edit-profile.html:294 +#: templates/user/edit-profile.html:289 +msgid "Site theme:" +msgstr "" + +#: templates/user/edit-profile.html:293 msgid "Editor theme:" msgstr "編輯器主題:" -#: templates/user/edit-profile.html:299 +#: templates/user/edit-profile.html:298 msgid "Math engine:" msgstr "" -#: templates/user/edit-profile.html:308 +#: templates/user/edit-profile.html:307 msgid "Affiliated organizations:" msgstr "" -#: templates/user/edit-profile.html:334 +#: templates/user/edit-profile.html:333 msgid "Change your avatar" msgstr "" -#: templates/user/edit-profile.html:339 +#: templates/user/edit-profile.html:338 msgid "Change your password" msgstr "" -#: templates/user/edit-profile.html:352 -msgid "Two-factor Authentication is enabled:" -msgstr "" +#: templates/user/edit-profile.html:355 +msgid "API token:" +msgstr "API令牌:" -#: templates/user/edit-profile.html:360 -msgid "Refresh" +#: templates/user/edit-profile.html:361 templates/user/edit-profile.html:389 +msgid "Hidden" +msgstr "隱藏" + +#: templates/user/edit-profile.html:374 +msgid "Two-factor authentication is enabled:" msgstr "" -#: templates/user/edit-profile.html:363 +#: templates/user/edit-profile.html:385 msgid "Scratch codes:" msgstr "" -#: templates/user/edit-profile.html:367 templates/user/edit-profile.html:399 -msgid "Hidden" -msgstr "隱藏" - -#: templates/user/edit-profile.html:377 +#: templates/user/edit-profile.html:399 msgid "If you ever need more scratch codes, you can regenerate them here." msgstr "" -#: templates/user/edit-profile.html:385 +#: templates/user/edit-profile.html:407 msgid "Two-factor Authentication is disabled:" msgstr "" -#: templates/user/edit-profile.html:393 -msgid "API token:" -msgstr "API令牌:" - -#: templates/user/edit-profile.html:410 +#: templates/user/edit-profile.html:415 msgid "Security keys:" msgstr "" -#: templates/user/edit-profile.html:420 +#: templates/user/edit-profile.html:425 msgid "Delete" msgstr "刪除" -#: templates/user/edit-profile.html:427 +#: templates/user/edit-profile.html:432 msgid "Enter a name for this key" msgstr "" -#: templates/user/edit-profile.html:428 +#: templates/user/edit-profile.html:433 msgid "Add" -msgstr "添加" +msgstr "新增" -#: templates/user/edit-profile.html:436 +#: templates/user/edit-profile.html:441 msgid "User-script:" msgstr "" -#: templates/user/edit-profile.html:440 +#: templates/user/edit-profile.html:445 msgid "Update profile" msgstr "" @@ -6045,11 +6205,11 @@ msgstr "" #: templates/user/user-tabs.html:10 msgid "Admin User" -msgstr "管理用戶" +msgstr "管理使用者" #: templates/user/user-tabs.html:13 msgid "Admin Profile" -msgstr "管理資料" +msgstr "管理使用者檔案" #: templates/widgets/select_all.html:8 msgid "Check all" diff --git a/locale/zh_Hant/LC_MESSAGES/djangojs.po b/locale/zh_Hant/LC_MESSAGES/djangojs.po index 229a6274a8..780ace894e 100644 --- a/locale/zh_Hant/LC_MESSAGES/djangojs.po +++ b/locale/zh_Hant/LC_MESSAGES/djangojs.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: dmoj\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-12-20 23:43+0000\n" -"PO-Revision-Date: 2022-12-21 00:43\n" +"POT-Creation-Date: 2023-01-23 05:23+0000\n" +"PO-Revision-Date: 2023-01-24 00:51\n" "Last-Translator: \n" "Language-Team: Chinese Traditional\n" "Language: zh_TW\n" @@ -17,13 +17,13 @@ msgstr "" "X-Crowdin-File: djangojs.po\n" "X-Crowdin-File-ID: 12\n" -#: resources/common.js:195 +#: resources/common.js:194 msgctxt "time format with day" msgid "%d day %h:%m:%s" msgid_plural "%d days %h:%m:%s" msgstr[0] "%d 天 %h:%m:%s" -#: resources/common.js:198 +#: resources/common.js:197 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s"