diff --git a/judge/utils/problems.py b/judge/utils/problems.py index 73d53d0..d20e542 100644 --- a/judge/utils/problems.py +++ b/judge/utils/problems.py @@ -88,11 +88,19 @@ def user_attempted_ids(profile): result = cache.get(key) if result is None: result = { - id: {"achieved_points": points, "max_points": max_points} - for id, max_points, points in ( + id: { + "achieved_points": points, + "max_points": max_points, + "last_submission": last_submission, + "code": problem_code, + "name": problem_name, + } + for id, max_points, problem_code, problem_name, points, last_submission in ( Submission.objects.filter(user=profile) - .values_list("problem__id", "problem__points") - .annotate(points=Max("points")) + .values_list( + "problem__id", "problem__points", "problem__code", "problem__name" + ) + .annotate(points=Max("points"), last_submission=Max("id")) .filter(points__lt=F("problem__points")) ) } diff --git a/judge/views/problem.py b/judge/views/problem.py index 08bcb54..1efca66 100644 --- a/judge/views/problem.py +++ b/judge/views/problem.py @@ -52,6 +52,7 @@ from judge.models import ( TranslatedProblemForeignKeyQuerySet, Organization, VolunteerProblemVote, + Profile, ) from judge.pdf_problems import DefaultPdfMaker, HAS_PDF from judge.utils.diggpaginator import DiggPaginator @@ -130,6 +131,15 @@ class SolvedProblemMixin(object): else: return user_attempted_ids(self.profile) if self.profile is not None else () + def get_latest_attempted_problems(self, limit=None): + if self.in_contest or not self.profile: + return () + result = list(user_attempted_ids(self.profile).values()) + result = sorted(result, key=lambda d: -d["last_submission"]) + if limit: + result = result[:limit] + return result + @cached_property def in_contest(self): return ( @@ -582,6 +592,8 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView Q(organizations__in=self.org_query) | Q(contests__contest__organizations__in=self.org_query) ) + if self.author_query: + queryset = queryset.filter(authors__in=self.author_query) if self.show_types: queryset = queryset.prefetch_related("types") if self.category is not None: @@ -639,6 +651,8 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView context["have_editorial"] = 0 if self.in_contest else int(self.have_editorial) context["organizations"] = Organization.objects.all() + all_authors_ids = set(Problem.objects.values_list("authors", flat=True)) + context["all_authors"] = Profile.objects.filter(id__in=all_authors_ids) context["category"] = self.category context["categories"] = ProblemGroup.objects.all() if self.show_types: @@ -646,9 +660,11 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView context["problem_types"] = ProblemType.objects.all() context["has_fts"] = settings.ENABLE_FTS context["org_query"] = self.org_query + context["author_query"] = self.author_query context["search_query"] = self.search_query context["completed_problem_ids"] = self.get_completed_problems() context["attempted_problems"] = self.get_attempted_problems() + context["last_attempted_problems"] = self.get_latest_attempted_problems(15) context["page_type"] = "list" context.update(self.get_sort_paginate_context()) if not self.in_contest: @@ -736,6 +752,7 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView self.search_query = None self.category = None self.org_query = [] + self.author_query = [] self.selected_types = [] # This actually copies into the instance dictionary... @@ -749,12 +766,16 @@ class ProblemList(QueryStringSortMixin, TitleMixin, SolvedProblemMixin, ListView self.selected_types = list(map(int, request.GET.getlist("type"))) except ValueError: pass - if "orgs" in request.GET: try: self.org_query = list(map(int, request.GET.getlist("orgs"))) except ValueError: pass + if "authors" in request.GET: + try: + self.author_query = list(map(int, request.GET.getlist("authors"))) + except ValueError: + pass self.point_start = safe_float_or_none(request.GET.get("point_start")) self.point_end = safe_float_or_none(request.GET.get("point_end")) diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po index 1e853b8..bd1b0d1 100644 --- a/locale/vi/LC_MESSAGES/django.po +++ b/locale/vi/LC_MESSAGES/django.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: lqdoj2\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2022-05-03 09:54+0700\n" +"POT-Creation-Date: 2022-05-22 08:28+0700\n" "PO-Revision-Date: 2021-07-20 03:44\n" "Last-Translator: Icyene\n" "Language-Team: Vietnamese\n" @@ -18,326 +18,326 @@ msgstr "" "X-Crowdin-Project-ID: 466004\n" "X-Crowdin-File-ID: 5\n" -#: chat_box/models.py:23 chat_box/models.py:41 chat_box/models.py:47 -#: judge/admin/interface.py:112 judge/models/contest.py:404 -#: judge/models/contest.py:529 judge/models/profile.py:220 +#: chat_box/models.py:31 chat_box/models.py:52 chat_box/models.py:63 +#: judge/admin/interface.py:150 judge/models/contest.py:621 +#: judge/models/contest.py:809 judge/models/profile.py:338 msgid "user" msgstr "người dùng" -#: chat_box/models.py:24 judge/models/comment.py:43 judge/models/comment.py:193 +#: chat_box/models.py:32 judge/models/comment.py:46 judge/models/comment.py:242 msgid "posted time" msgstr "thời gian đăng" -#: chat_box/models.py:25 judge/models/comment.py:47 +#: chat_box/models.py:33 judge/models/comment.py:54 msgid "body of comment" msgstr "nội dung bình luận" -#: chat_box/models.py:43 +#: chat_box/models.py:56 msgid "last seen" msgstr "xem lần cuối" -#: chat_box/views.py:29 templates/chat/chat.html:4 templates/chat/chat.html:548 +#: chat_box/views.py:45 templates/chat/chat.html:4 templates/chat/chat.html:553 msgid "Chat Box" msgstr "Chat Box" -#: dmoj/settings.py:360 +#: dmoj/settings.py:365 msgid "German" msgstr "" -#: dmoj/settings.py:361 +#: dmoj/settings.py:366 msgid "English" msgstr "" -#: dmoj/settings.py:362 +#: dmoj/settings.py:367 msgid "Spanish" msgstr "" -#: dmoj/settings.py:363 +#: dmoj/settings.py:368 msgid "French" msgstr "" -#: dmoj/settings.py:364 +#: dmoj/settings.py:369 msgid "Croatian" msgstr "" -#: dmoj/settings.py:365 +#: dmoj/settings.py:370 msgid "Hungarian" msgstr "" -#: dmoj/settings.py:366 +#: dmoj/settings.py:371 msgid "Japanese" msgstr "" -#: dmoj/settings.py:367 +#: dmoj/settings.py:372 msgid "Korean" msgstr "" -#: dmoj/settings.py:368 +#: dmoj/settings.py:373 msgid "Brazilian Portuguese" msgstr "" -#: dmoj/settings.py:369 +#: dmoj/settings.py:374 msgid "Romanian" msgstr "" -#: dmoj/settings.py:370 +#: dmoj/settings.py:375 msgid "Russian" msgstr "" -#: dmoj/settings.py:371 +#: dmoj/settings.py:376 msgid "Serbian (Latin)" msgstr "" -#: dmoj/settings.py:372 +#: dmoj/settings.py:377 msgid "Turkish" msgstr "" -#: dmoj/settings.py:373 +#: dmoj/settings.py:378 msgid "Vietnamese" msgstr "Tiếng Việt" -#: dmoj/settings.py:374 +#: dmoj/settings.py:379 msgid "Simplified Chinese" msgstr "" -#: dmoj/settings.py:375 +#: dmoj/settings.py:380 msgid "Traditional Chinese" msgstr "" -#: dmoj/urls.py:58 +#: dmoj/urls.py:130 msgid "Login" msgstr "Đăng nhập" -#: dmoj/urls.py:106 templates/base.html:213 +#: dmoj/urls.py:206 templates/base.html:213 msgid "Home" msgstr "Trang chủ" -#: judge/admin/comments.py:41 +#: judge/admin/comments.py:46 #, python-format msgid "%d comment successfully hidden." msgid_plural "%d comments successfully hidden." msgstr[0] "Đã ẩn %d bình luận." -#: judge/admin/comments.py:44 +#: judge/admin/comments.py:53 msgid "Hide comments" msgstr "Ẩn bình luận" -#: judge/admin/comments.py:48 +#: judge/admin/comments.py:60 #, python-format msgid "%d comment successfully unhidden." msgid_plural "%d comments successfully unhidden." msgstr[0] "Không ẩn được %d bình luận." -#: judge/admin/comments.py:51 +#: judge/admin/comments.py:67 msgid "Unhide comments" msgstr "Hiện bình luận" -#: judge/admin/comments.py:59 +#: judge/admin/comments.py:76 msgid "Associated page" msgstr "Trang liên kết" -#: judge/admin/contest.py:31 +#: judge/admin/contest.py:37 msgid "Included contests" msgstr "" -#: judge/admin/contest.py:67 judge/admin/volunteer.py:17 +#: judge/admin/contest.py:74 judge/admin/volunteer.py:33 #: templates/contest/clarification.html:42 templates/contest/contest.html:83 #: templates/contest/moss.html:43 templates/internal/base.html:29 -#: templates/internal/base.html:37 templates/problem/list.html:278 -#: templates/problem/list.html:294 templates/problem/list.html:412 +#: templates/internal/base.html:37 templates/problem/list.html:264 +#: templates/problem/list.html:279 templates/problem/list.html:395 #: templates/user/user-problems.html:56 templates/user/user-problems.html:98 msgid "Problem" msgstr "Bài tập" -#: judge/admin/contest.py:120 +#: judge/admin/contest.py:149 msgid "Settings" msgstr "Cài đặt" -#: judge/admin/contest.py:122 +#: judge/admin/contest.py:161 msgid "Scheduling" msgstr "" -#: judge/admin/contest.py:123 templates/organization/home.html:100 +#: judge/admin/contest.py:163 templates/organization/home.html:100 msgid "Details" msgstr "Chi tiết" -#: judge/admin/contest.py:124 +#: judge/admin/contest.py:175 msgid "Format" msgstr "Thể thức" -#: judge/admin/contest.py:125 templates/contest/ranking-table.html:7 +#: judge/admin/contest.py:179 templates/contest/ranking-table.html:7 #: templates/user/user-about.html:15 templates/user/user-about.html:45 msgid "Rating" msgstr "" -#: judge/admin/contest.py:126 +#: judge/admin/contest.py:191 msgid "Access" msgstr "Truy cập" -#: judge/admin/contest.py:128 judge/admin/problem.py:135 +#: judge/admin/contest.py:203 judge/admin/problem.py:192 msgid "Justice" msgstr "Xử phạt" -#: judge/admin/contest.py:208 +#: judge/admin/contest.py:313 #, 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 hiển thị." -#: judge/admin/contest.py:211 +#: judge/admin/contest.py:320 msgid "Mark contests as visible" msgstr "Đánh dấu hiển thị các kỳ thi" -#: judge/admin/contest.py:217 +#: judge/admin/contest.py:331 #, 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 ẩn." -#: judge/admin/contest.py:220 +#: judge/admin/contest.py:338 msgid "Mark contests as hidden" msgstr "Ẩn các kỳ thi" -#: judge/admin/contest.py:234 judge/admin/submission.py:164 +#: judge/admin/contest.py:359 judge/admin/submission.py:243 #, 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 thành công để chấm lại." -#: judge/admin/contest.py:309 +#: judge/admin/contest.py:467 #, python-format msgid "%d participation recalculated." msgid_plural "%d participations recalculated." msgstr[0] "%d thí sinh đã được tính điểm lại." -#: judge/admin/contest.py:312 +#: judge/admin/contest.py:474 msgid "Recalculate results" msgstr "Tính toán lại kết quả" -#: judge/admin/contest.py:316 judge/admin/organization.py:65 +#: judge/admin/contest.py:479 judge/admin/organization.py:92 msgid "username" msgstr "tên đăng nhập" -#: judge/admin/contest.py:321 templates/base.html:304 +#: judge/admin/contest.py:485 templates/base.html:304 msgid "virtual" msgstr "ảo" -#: judge/admin/interface.py:30 judge/models/interface.py:46 +#: judge/admin/interface.py:35 judge/models/interface.py:46 msgid "link path" msgstr "đường dẫn" -#: judge/admin/interface.py:67 +#: judge/admin/interface.py:94 msgid "Content" msgstr "Nội dung" -#: judge/admin/interface.py:68 +#: judge/admin/interface.py:95 msgid "Summary" msgstr "Tổng kết" -#: judge/admin/interface.py:153 +#: judge/admin/interface.py:212 msgid "object" msgstr "" -#: judge/admin/interface.py:161 +#: judge/admin/interface.py:222 msgid "Diff" msgstr "" -#: judge/admin/interface.py:165 +#: judge/admin/interface.py:227 msgid "diff" msgstr "" -#: judge/admin/organization.py:34 judge/admin/problem.py:175 -#: judge/admin/profile.py:80 +#: judge/admin/organization.py:59 judge/admin/problem.py:254 +#: judge/admin/profile.py:116 msgid "View on site" msgstr "Xem trên trang" -#: judge/admin/problem.py:32 +#: judge/admin/problem.py:48 msgid "Describe the changes you made (optional)" msgstr "Mô tả các thay đổi (tùy chọn)" -#: judge/admin/problem.py:130 +#: judge/admin/problem.py:185 msgid "Social Media" msgstr "Mạng Xã Hội" -#: judge/admin/problem.py:131 +#: judge/admin/problem.py:188 msgid "Taxonomy" msgstr "" -#: judge/admin/problem.py:132 judge/admin/problem.py:286 -#: templates/contest/contest.html:84 templates/problem/data.html:474 -#: templates/problem/list.html:284 templates/problem/list.html:310 +#: judge/admin/problem.py:189 judge/admin/problem.py:407 +#: templates/contest/contest.html:84 templates/problem/data.html:476 +#: templates/problem/list.html:269 templates/problem/list.html:293 #: templates/user/base-users-table.html:10 templates/user/user-about.html:36 #: templates/user/user-about.html:52 templates/user/user-problems.html:58 msgid "Points" msgstr "Điểm" -#: judge/admin/problem.py:133 +#: judge/admin/problem.py:190 msgid "Limits" msgstr "Giới hạn" -#: judge/admin/problem.py:134 judge/admin/submission.py:232 +#: judge/admin/problem.py:191 judge/admin/submission.py:353 #: templates/stats/base.html:14 templates/submission/list.html:322 msgid "Language" msgstr "Ngôn ngữ" -#: judge/admin/problem.py:136 +#: judge/admin/problem.py:193 msgid "History" msgstr "Lịch sử" -#: judge/admin/problem.py:172 +#: judge/admin/problem.py:250 templates/problem/list.html:97 msgid "Authors" msgstr "Các tác giả" -#: judge/admin/problem.py:187 +#: judge/admin/problem.py:271 #, 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 đánh dấu công khai." -#: judge/admin/problem.py:191 +#: judge/admin/problem.py:278 msgid "Mark problems as public" msgstr "Công khai bài tập" -#: judge/admin/problem.py:197 +#: judge/admin/problem.py:287 #, 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 riêng tư." -#: judge/admin/problem.py:201 +#: judge/admin/problem.py:294 msgid "Mark problems as private" msgstr "Đánh dấu các bài tập là riêng tư" -#: judge/admin/problem.py:281 judge/admin/submission.py:200 -#: templates/problem/list.html:279 templates/problem/list.html:298 +#: judge/admin/problem.py:401 judge/admin/submission.py:316 +#: templates/problem/list.html:265 templates/problem/list.html:282 msgid "Problem code" msgstr "Mã bài" -#: judge/admin/problem.py:291 judge/admin/submission.py:205 +#: judge/admin/problem.py:413 judge/admin/submission.py:322 msgid "Problem name" msgstr "Tên bài" -#: judge/admin/problem.py:296 +#: judge/admin/problem.py:419 #, fuzzy #| msgid "contest rating" msgid "Voter rating" msgstr "rating kỳ thi" -#: judge/admin/problem.py:301 +#: judge/admin/problem.py:425 #, fuzzy #| msgid "Total points" msgid "Voter point" msgstr "Tổng điểm" -#: judge/admin/problem.py:306 +#: judge/admin/problem.py:431 msgid "Vote" msgstr "" -#: judge/admin/profile.py:34 +#: judge/admin/profile.py:40 msgid "timezone" msgstr "múi giờ" -#: judge/admin/profile.py:86 judge/admin/submission.py:211 +#: judge/admin/profile.py:125 judge/admin/submission.py:329 #: templates/notification/list.html:12 #: templates/organization/requests/log.html:9 #: templates/organization/requests/pending.html:12 @@ -345,28 +345,28 @@ msgstr "múi giờ" msgid "User" msgstr "Thành viên" -#: judge/admin/profile.py:91 templates/registration/registration_form.html:145 +#: judge/admin/profile.py:131 templates/registration/registration_form.html:145 #: templates/user/import/table_csv.html:8 msgid "Email" msgstr "Email" -#: judge/admin/profile.py:96 judge/views/register.py:29 +#: judge/admin/profile.py:137 judge/views/register.py:37 #: templates/registration/registration_form.html:173 #: templates/user/edit-profile.html:116 msgid "Timezone" msgstr "Múi giờ" -#: judge/admin/profile.py:101 +#: judge/admin/profile.py:143 msgid "date joined" msgstr "ngày tham gia" -#: judge/admin/profile.py:108 +#: judge/admin/profile.py:153 #, python-format msgid "%d user have scores recalculated." msgid_plural "%d users have scores recalculated." msgstr[0] "%d người dùng đã được tính điểm lại." -#: judge/admin/profile.py:111 +#: judge/admin/profile.py:160 msgid "Recalculate scores" msgstr "Tính điểm lại" @@ -378,87 +378,87 @@ msgstr "Các bài tập không được cho phép" msgid "These problems are NOT allowed to be submitted in this language" msgstr "Các bài này không cho phép sử dụng ngôn ngữ này" -#: judge/admin/runtime.py:83 templates/problem/list.html:414 +#: judge/admin/runtime.py:117 templates/problem/list.html:397 msgid "Description" msgstr "Mô tả" -#: judge/admin/runtime.py:84 +#: judge/admin/runtime.py:119 msgid "Information" msgstr "Thông tin" -#: judge/admin/runtime.py:85 +#: judge/admin/runtime.py:122 msgid "Capabilities" msgstr "Khả năng" -#: judge/admin/submission.py:23 judge/admin/submission.py:42 -#: judge/admin/submission.py:221 +#: judge/admin/submission.py:31 judge/admin/submission.py:53 +#: judge/admin/submission.py:340 msgid "None" msgstr "None" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:32 msgid "Not done" msgstr "Chưa xong" -#: judge/admin/submission.py:23 +#: judge/admin/submission.py:33 msgid "Exceptional" msgstr "Đặc biệt" -#: judge/admin/submission.py:42 +#: judge/admin/submission.py:53 msgid "Unaccepted" msgstr "" -#: judge/admin/submission.py:89 +#: judge/admin/submission.py:104 #, python-format msgctxt "contest problem" msgid "%(problem)s in %(contest)s" msgstr "%(problem)s trong %(contest)s" -#: judge/admin/submission.py:149 judge/admin/submission.py:171 +#: judge/admin/submission.py:215 judge/admin/submission.py:256 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:155 +#: judge/admin/submission.py:227 msgid "You do not have the permission to rejudge THAT many submissions." msgstr "Bạn không có quyền chấm lại nhiều bài nộp như vậy." -#: judge/admin/submission.py:167 +#: judge/admin/submission.py:250 msgid "Rejudge the selected submissions" msgstr "Chấm lại các bài nộp đã chọn" -#: judge/admin/submission.py:193 judge/views/problem_manage.py:159 +#: judge/admin/submission.py:304 judge/views/problem_manage.py:212 #, python-format msgid "%d submission were successfully rescored." msgid_plural "%d submissions were successfully rescored." msgstr[0] "%d bài nộp đã được tính điểm lại." -#: judge/admin/submission.py:196 +#: judge/admin/submission.py:311 msgid "Rescore the selected submissions" msgstr "Tính điểm lại cái bài nộp" -#: judge/admin/submission.py:215 templates/notification/list.html:15 +#: judge/admin/submission.py:334 templates/notification/list.html:15 #: templates/organization/requests/log.html:10 #: templates/organization/requests/pending.html:13 -#: templates/problem/list.html:413 +#: templates/problem/list.html:396 #: templates/submission/status-testcases.html:125 #: templates/submission/status-testcases.html:127 msgid "Time" msgstr "Thời gian" -#: judge/admin/submission.py:223 +#: judge/admin/submission.py:342 #, python-format msgid "%d KB" msgstr "%d KB" -#: judge/admin/submission.py:225 +#: judge/admin/submission.py:344 #, python-format msgid "%.2f MB" msgstr "" -#: judge/admin/submission.py:227 templates/submission/status-testcases.html:132 +#: judge/admin/submission.py:347 templates/submission/status-testcases.html:132 msgid "Memory" msgstr "Bộ nhớ" -#: judge/admin/taxon.py:11 judge/admin/taxon.py:34 +#: judge/admin/taxon.py:11 judge/admin/taxon.py:37 msgid "Included problems" msgstr "" @@ -466,7 +466,7 @@ msgstr "" msgid "These problems are included in this group of problems" msgstr "Các bài tập trong nhóm này" -#: judge/admin/taxon.py:37 +#: judge/admin/taxon.py:40 msgid "These problems are included in this type of problems" msgstr "Các bài tập dạng này" @@ -474,20 +474,20 @@ msgstr "Các bài tập dạng này" msgid "Online Judge" msgstr "" -#: judge/comments.py:60 +#: judge/comments.py:61 msgid "Comment body" msgstr "Nội dung bình luận" -#: judge/comments.py:66 judge/views/ticket.py:63 +#: judge/comments.py:67 judge/views/ticket.py:78 msgid "Your part is silent, little toad." msgstr "Bạn không được phép bình luận." -#: judge/comments.py:69 templates/comments/list.html:132 +#: judge/comments.py:76 templates/comments/list.html:132 msgid "" "You need to have solved at least one problem before your voice can be heard." msgstr "Bạn phải giải ít nhất một bài trước khi được phép bình luận." -#: judge/comments.py:115 +#: judge/comments.py:129 msgid "Posted comment" msgstr "Bình luận đã đăng" @@ -511,57 +511,57 @@ msgstr "" msgid "IOI" msgstr "" -#: judge/forms.py:27 +#: judge/forms.py:44 msgid "Subscribe to contest updates" msgstr "Đăng ký để nhận thông báo về các kỳ thi" -#: judge/forms.py:28 +#: judge/forms.py:47 msgid "Enable experimental features" msgstr "Sử dụng các tính năng thử nghiệm" -#: judge/forms.py:57 judge/views/organization.py:168 judge/views/register.py:49 +#: judge/forms.py:85 judge/views/organization.py:247 judge/views/register.py:69 #, python-brace-format msgid "You may not be part of more than {count} public organizations." msgstr "Bạn không thể tham gia nhiều hơn {count} tổ chức công khai." -#: judge/forms.py:82 +#: judge/forms.py:116 msgid "Any judge" msgstr "" -#: judge/forms.py:112 judge/views/register.py:26 +#: judge/forms.py:148 judge/views/register.py:31 #: templates/registration/registration_form.html:139 #: templates/user/base-users-table.html:5 #: templates/user/import/table_csv.html:4 msgid "Username" msgstr "Tên đăng nhập" -#: judge/forms.py:113 templates/registration/registration_form.html:151 +#: judge/forms.py:149 templates/registration/registration_form.html:151 #: templates/registration/registration_form.html:165 #: templates/user/import/table_csv.html:5 msgid "Password" msgstr "Mật khẩu" -#: judge/forms.py:135 +#: judge/forms.py:175 msgid "Two Factor Authentication tokens must be 6 decimal digits." msgstr "Two Factor Authentication phải chứa 6 chữ số." -#: judge/forms.py:144 templates/registration/totp_auth.html:32 +#: judge/forms.py:188 templates/registration/totp_auth.html:32 msgid "Invalid Two Factor Authentication token." msgstr "Token Two Factor Authentication không hợp lệ." -#: judge/forms.py:148 judge/models/problem.py:98 +#: judge/forms.py:195 judge/models/problem.py:151 msgid "Problem code must be ^[a-z0-9]+$" msgstr "Mã bài phải có dạng ^[a-z0-9]+$" -#: judge/forms.py:153 +#: judge/forms.py:202 msgid "Problem with code already exists." msgstr "Mã bài đã tồn tại." -#: judge/forms.py:158 judge/models/contest.py:61 +#: judge/forms.py:209 judge/models/contest.py:89 msgid "Contest id must be ^[a-z0-9]+$" msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$" -#: judge/forms.py:163 +#: judge/forms.py:215 msgid "Contest with key already exists." msgstr "Mã kỳ thi đã tồn tại." @@ -604,52 +604,52 @@ msgstr "" msgid "Page code must be ^[pcs]:[a-z0-9]+$|^b:\\d+$" msgstr "Mã trang phải có dạng ^[pcs]:[a-z0-9]+$|^b:\\d+$" -#: judge/models/comment.py:42 +#: judge/models/comment.py:45 msgid "commenter" msgstr "người bình luận" -#: judge/models/comment.py:44 judge/models/comment.py:179 +#: judge/models/comment.py:49 judge/models/comment.py:223 msgid "associated page" msgstr "trang tương ứng" -#: judge/models/comment.py:46 judge/models/problem.py:496 +#: judge/models/comment.py:53 judge/models/problem.py:719 msgid "votes" msgstr "bình chọn" -#: judge/models/comment.py:48 +#: judge/models/comment.py:55 msgid "hide the comment" msgstr "ẩn bình luận" -#: judge/models/comment.py:49 +#: judge/models/comment.py:58 msgid "parent" msgstr "" -#: judge/models/comment.py:54 judge/models/comment.py:194 +#: judge/models/comment.py:67 judge/models/comment.py:244 msgid "comment" msgstr "bình luận" -#: judge/models/comment.py:55 +#: judge/models/comment.py:68 msgid "comments" msgstr "" -#: judge/models/comment.py:139 judge/models/problem.py:466 +#: judge/models/comment.py:160 judge/models/problem.py:687 #, python-format msgid "Editorial for %s" msgstr "" -#: judge/models/comment.py:174 +#: judge/models/comment.py:216 msgid "comment vote" msgstr "" -#: judge/models/comment.py:175 +#: judge/models/comment.py:217 msgid "comment votes" msgstr "" -#: judge/models/comment.py:184 +#: judge/models/comment.py:229 msgid "Override comment lock" msgstr "" -#: judge/models/comment.py:192 +#: judge/models/comment.py:238 #: src/dmoj-wpadmin/test_project/apps/books/admin.py:24 #: src/dmoj-wpadmin/test_project/apps/books/models.py:30 #: src/dmoj-wpadmin/test_project/apps/cds/models.py:30 @@ -657,89 +657,89 @@ msgstr "" msgid "owner" msgstr "" -#: judge/models/comment.py:195 judge/models/message.py:16 +#: judge/models/comment.py:246 judge/models/message.py:28 msgid "read" msgstr "" -#: judge/models/comment.py:196 +#: judge/models/comment.py:247 #: src/dmoj-wpadmin/test_project/apps/books/models.py:28 #: src/dmoj-wpadmin/test_project/apps/cds/models.py:28 #: src/dmoj-wpadmin/test_project/apps/dvds/models.py:28 msgid "category" msgstr "" -#: judge/models/comment.py:197 +#: judge/models/comment.py:250 msgid "html link to comments, used for non-comments" msgstr "" -#: judge/models/comment.py:198 +#: judge/models/comment.py:256 msgid "who trigger, used for non-comment" msgstr "" -#: judge/models/contest.py:23 +#: judge/models/contest.py:36 msgid "Invalid colour." msgstr "" -#: judge/models/contest.py:25 +#: judge/models/contest.py:40 msgid "tag name" msgstr "" -#: judge/models/contest.py:26 +#: judge/models/contest.py:44 msgid "Lowercase letters and hyphens only." msgstr "" -#: judge/models/contest.py:27 +#: judge/models/contest.py:49 msgid "tag colour" msgstr "" -#: judge/models/contest.py:28 +#: judge/models/contest.py:51 msgid "tag description" msgstr "" -#: judge/models/contest.py:47 +#: judge/models/contest.py:72 msgid "contest tag" msgstr "" -#: judge/models/contest.py:48 judge/models/contest.py:119 +#: judge/models/contest.py:73 judge/models/contest.py:233 msgid "contest tags" msgstr "nhãn kỳ thi" -#: judge/models/contest.py:56 +#: judge/models/contest.py:81 msgid "Visible" msgstr "Hiển thị" -#: judge/models/contest.py:57 +#: judge/models/contest.py:82 msgid "Hidden for duration of contest" msgstr "Ẩn trong thời gian kỳ thi" -#: judge/models/contest.py:58 +#: judge/models/contest.py:83 msgid "Hidden for duration of participation" msgstr "Ẩn trong thời gian tham gia" -#: judge/models/contest.py:60 +#: judge/models/contest.py:87 msgid "contest id" msgstr "ID kỳ thi" -#: judge/models/contest.py:62 +#: judge/models/contest.py:92 msgid "contest name" msgstr "tên kỳ thi" -#: judge/models/contest.py:63 +#: judge/models/contest.py:96 msgid "These users will be able to edit the contest." msgstr "Những người dùng này có quyền chỉnh sửa kỳ thi." -#: judge/models/contest.py:65 +#: judge/models/contest.py:102 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 là tác giả và có quyền chỉnh sửa kỳ thi." -#: judge/models/contest.py:68 +#: judge/models/contest.py:111 msgid "These users will be able to view the contest, but not edit it." msgstr "" "Những người dùng này có thể thấy kỳ thi nhưng không có quyền chỉnh sửa." -#: judge/models/contest.py:71 judge/models/runtime.py:136 +#: judge/models/contest.py:116 judge/models/runtime.py:211 #: src/dmoj-wpadmin/test_project/apps/books/admin.py:20 #: src/dmoj-wpadmin/test_project/apps/books/models.py:13 #: src/dmoj-wpadmin/test_project/apps/books/models.py:27 @@ -750,36 +750,36 @@ msgstr "" msgid "description" msgstr "mô tả" -#: judge/models/contest.py:72 judge/models/problem.py:413 -#: judge/models/runtime.py:138 +#: judge/models/contest.py:118 judge/models/problem.py:600 +#: judge/models/runtime.py:216 msgid "problems" msgstr "bài tập" -#: judge/models/contest.py:73 judge/models/contest.py:405 +#: judge/models/contest.py:120 judge/models/contest.py:626 msgid "start time" msgstr "thời gian bắt đầu" -#: judge/models/contest.py:74 +#: judge/models/contest.py:121 msgid "end time" msgstr "thời gian kết thúc" -#: judge/models/contest.py:75 judge/models/problem.py:119 -#: judge/models/problem.py:437 +#: judge/models/contest.py:123 judge/models/problem.py:204 +#: judge/models/problem.py:645 msgid "time limit" msgstr "giới hạn thời gian" -#: judge/models/contest.py:76 +#: judge/models/contest.py:127 msgid "" "Format hh:mm:ss. For example, if you want a 2-hour contest, enter 02:00:00" msgstr "" "Định dạng hh:mm:ss (giờ:phút:giây). Ví dụ, nếu muốn tạo kỳ thi dài 2h, hãy " "nhập 02:00:00" -#: judge/models/contest.py:77 judge/models/problem.py:137 +#: judge/models/contest.py:131 judge/models/problem.py:243 msgid "publicly visible" msgstr "công khai" -#: judge/models/contest.py:78 +#: judge/models/contest.py:134 msgid "" "Should be set even for organization-private contests, where it determines " "whether the contest is visible to members of the specified organizations." @@ -787,84 +787,84 @@ msgstr "" "Đánh dấu ngay cả với các kỳ thi riêng tư của tổ chức, quyết định việc kỳ thi " "có được hiển thị với các thành viên hay không." -#: judge/models/contest.py:81 +#: judge/models/contest.py:140 msgid "contest rated" msgstr "kỳ thi được xếp hạng" -#: judge/models/contest.py:81 +#: judge/models/contest.py:141 msgid "Whether this contest can be rated." msgstr "Quyết định kỳ thi có được xếp hạng không." -#: judge/models/contest.py:83 +#: judge/models/contest.py:145 msgid "scoreboard visibility" msgstr "khả năng hiển thị của bảng điểm" -#: judge/models/contest.py:84 +#: judge/models/contest.py:148 msgid "Scoreboard visibility through the duration of the contest" msgstr "Khả năng hiển thị của bảng điểm trong thời gian kỳ thi" -#: judge/models/contest.py:86 +#: judge/models/contest.py:153 msgid "view contest scoreboard" msgstr "xem bảng điểm kỳ thi" -#: judge/models/contest.py:88 +#: judge/models/contest.py:156 msgid "These users will be able to view the scoreboard." msgstr "Những người dùng này được phép xem bảng điểm." -#: judge/models/contest.py:89 +#: judge/models/contest.py:159 msgid "no comments" msgstr "không bình luận" -#: judge/models/contest.py:90 +#: judge/models/contest.py:160 msgid "Use clarification system instead of comments." msgstr "Dùng hệ thống thông báo thay vì bình luận." -#: judge/models/contest.py:92 +#: judge/models/contest.py:165 msgid "Rating floor for contest" msgstr "Cận dưới rating được xếp hạng trong kỳ thi" -#: judge/models/contest.py:94 +#: judge/models/contest.py:171 msgid "Rating ceiling for contest" msgstr "Cận trên rating được xếp hạng trong kỳ thi" -#: judge/models/contest.py:96 +#: judge/models/contest.py:176 msgid "rate all" msgstr "xếp hạng tất cả" -#: judge/models/contest.py:96 +#: judge/models/contest.py:177 msgid "Rate all users who joined." msgstr "Xếp hạng tất cả người dùng đã tham gia (kể cả không nộp)." -#: judge/models/contest.py:97 +#: judge/models/contest.py:182 msgid "exclude from ratings" msgstr "không xếp hạng" -#: judge/models/contest.py:99 +#: judge/models/contest.py:187 msgid "private to specific users" msgstr "riêng tư với các người dùng này" -#: judge/models/contest.py:100 +#: judge/models/contest.py:192 msgid "private contestants" msgstr "thí sinh riêng tư" -#: judge/models/contest.py:101 +#: judge/models/contest.py:193 msgid "If private, only these users may see the contest" msgstr "Nếu riêng tư, chỉ những người dùng này mới thấy kỳ thi" -#: judge/models/contest.py:103 +#: judge/models/contest.py:197 msgid "hide problem tags" msgstr "ẩn nhãn kỳ thi" -#: judge/models/contest.py:104 +#: judge/models/contest.py:198 msgid "Whether problem tags should be hidden by default." msgstr "" "Quyết định việc nhãn bài tập (DP, Tham lam, ...) được ẩn trong kỳ thi không." -#: judge/models/contest.py:106 +#: judge/models/contest.py:202 msgid "run pretests only" msgstr "chỉ chạy pretests" -#: judge/models/contest.py:107 +#: judge/models/contest.py:204 msgid "" "Whether judges should grade pretests only, versus all testcases. Commonly " "set during a contest, then unset prior to rejudging user submissions when " @@ -873,50 +873,50 @@ msgstr "" "Quyết định việc các máy chấm chỉ chấm pretests thay vì tất cả các test. Sau " "kỳ thi, hãy bỏ đánh dấu ô này và chấm lại tất cả các bài." -#: judge/models/contest.py:111 judge/models/interface.py:77 -#: judge/models/problem.py:158 +#: judge/models/contest.py:211 judge/models/interface.py:92 +#: judge/models/problem.py:300 msgid "private to organizations" msgstr "riêng tư với các tổ chức" -#: judge/models/contest.py:112 judge/models/interface.py:75 -#: judge/models/problem.py:156 judge/models/profile.py:77 +#: judge/models/contest.py:216 judge/models/interface.py:88 +#: judge/models/problem.py:296 judge/models/profile.py:116 msgid "organizations" msgstr "tổ chức" -#: judge/models/contest.py:113 +#: judge/models/contest.py:217 msgid "If private, only these organizations may see the contest" msgstr "Nếu riêng tư, chỉ những tổ chức này thấy được kỳ thi" -#: judge/models/contest.py:114 judge/models/problem.py:146 +#: judge/models/contest.py:220 judge/models/problem.py:274 msgid "OpenGraph image" msgstr "Hình ảnh OpenGraph" -#: judge/models/contest.py:115 judge/models/profile.py:48 +#: judge/models/contest.py:223 judge/models/profile.py:80 msgid "Logo override image" msgstr "Hình ảnh ghi đè logo" -#: judge/models/contest.py:117 +#: judge/models/contest.py:228 msgid "" "This image will replace the default site logo for users inside the contest." msgstr "Ảnh này sẽ thay thế cho logo mặc định trong kỳ thi." -#: judge/models/contest.py:120 +#: judge/models/contest.py:236 msgid "the amount of live participants" msgstr "số lượng thí sinh thi trực tiếp" -#: judge/models/contest.py:121 +#: judge/models/contest.py:240 msgid "contest summary" msgstr "tổng kết kỳ thi" -#: judge/models/contest.py:122 judge/models/problem.py:148 +#: judge/models/contest.py:242 judge/models/problem.py:280 msgid "Plain-text, shown in meta description tag, e.g. for social media." msgstr "" -#: judge/models/contest.py:123 judge/models/profile.py:47 +#: judge/models/contest.py:246 judge/models/profile.py:75 msgid "access code" msgstr "mật khẩu truy cập" -#: judge/models/contest.py:124 +#: judge/models/contest.py:251 msgid "" "An optional code to prompt contestants before they are allowed to join the " "contest. Leave it blank to disable." @@ -924,251 +924,251 @@ msgstr "" "Mật khẩu truy cập cho các thí sinh muốn tham gia kỳ thi. Để trống nếu không " "dùng." -#: judge/models/contest.py:126 judge/models/problem.py:142 +#: judge/models/contest.py:257 judge/models/problem.py:262 msgid "personae non gratae" msgstr "" -#: judge/models/contest.py:127 +#: judge/models/contest.py:259 msgid "Bans the selected users from joining this contest." msgstr "Cấm những người dùng được chọn tham gia kỳ thi." -#: judge/models/contest.py:128 +#: judge/models/contest.py:262 msgid "contest format" msgstr "format kỳ thi" -#: judge/models/contest.py:129 +#: judge/models/contest.py:266 msgid "The contest format module to use." msgstr "" -#: judge/models/contest.py:130 +#: judge/models/contest.py:269 msgid "contest format configuration" msgstr "" -#: judge/models/contest.py:131 +#: judge/models/contest.py:273 msgid "" "A JSON object to serve as the configuration for the chosen contest format " "module. Leave empty to use None. Exact format depends on the contest format " "selected." msgstr "" -#: judge/models/contest.py:138 +#: judge/models/contest.py:286 msgid "precision points" msgstr "" -#: judge/models/contest.py:140 +#: judge/models/contest.py:289 msgid "Number of digits to round points to." msgstr "" -#: judge/models/contest.py:384 +#: judge/models/contest.py:594 msgid "See private contests" msgstr "" -#: judge/models/contest.py:385 +#: judge/models/contest.py:595 msgid "Edit own contests" msgstr "" -#: judge/models/contest.py:386 +#: judge/models/contest.py:596 msgid "Edit all contests" msgstr "" -#: judge/models/contest.py:387 +#: judge/models/contest.py:597 msgid "Clone contest" msgstr "" -#: judge/models/contest.py:388 templates/contest/moss.html:74 +#: judge/models/contest.py:598 templates/contest/moss.html:74 msgid "MOSS contest" msgstr "" -#: judge/models/contest.py:389 +#: judge/models/contest.py:599 msgid "Rate contests" msgstr "" -#: judge/models/contest.py:390 +#: judge/models/contest.py:600 msgid "Contest access codes" msgstr "" -#: judge/models/contest.py:391 +#: judge/models/contest.py:601 msgid "Create private contests" msgstr "" -#: judge/models/contest.py:392 +#: judge/models/contest.py:602 msgid "Change contest visibility" msgstr "" -#: judge/models/contest.py:393 +#: judge/models/contest.py:603 msgid "Edit contest problem label script" msgstr "" -#: judge/models/contest.py:395 judge/models/contest.py:493 -#: judge/models/contest.py:530 judge/models/contest.py:554 -#: judge/models/submission.py:84 +#: judge/models/contest.py:605 judge/models/contest.py:743 +#: judge/models/contest.py:812 judge/models/contest.py:842 +#: judge/models/submission.py:116 msgid "contest" msgstr "kỳ thi" -#: judge/models/contest.py:396 +#: judge/models/contest.py:606 msgid "contests" msgstr "kỳ thi" -#: judge/models/contest.py:403 +#: judge/models/contest.py:615 msgid "associated contest" msgstr "" -#: judge/models/contest.py:406 +#: judge/models/contest.py:628 msgid "score" msgstr "điểm" -#: judge/models/contest.py:407 +#: judge/models/contest.py:629 msgid "cumulative time" msgstr "tổng thời gian" -#: judge/models/contest.py:408 +#: judge/models/contest.py:631 msgid "is disqualified" msgstr "đã bị loại" -#: judge/models/contest.py:409 +#: judge/models/contest.py:633 msgid "Whether this participation is disqualified." msgstr "Quyết định thí sinh có bị loại không." -#: judge/models/contest.py:410 +#: judge/models/contest.py:635 msgid "tie-breaking field" msgstr "" -#: judge/models/contest.py:411 +#: judge/models/contest.py:637 msgid "virtual participation id" msgstr "id lần tham gia ảo" -#: judge/models/contest.py:412 +#: judge/models/contest.py:639 msgid "0 means non-virtual, otherwise the n-th virtual participation." msgstr "0 nghĩa là tham gia chính thức, ngược lại là lần tham gia ảo thứ n." -#: judge/models/contest.py:413 +#: judge/models/contest.py:642 msgid "contest format specific data" msgstr "" -#: judge/models/contest.py:479 +#: judge/models/contest.py:718 #, python-format msgid "%s spectating in %s" msgstr "%s đang theo dõi trong %s" -#: judge/models/contest.py:481 +#: judge/models/contest.py:723 #, python-format msgid "%s in %s, v%d" msgstr "%s trong %s, v%d" -#: judge/models/contest.py:482 +#: judge/models/contest.py:728 #, python-format msgid "%s in %s" msgstr "%s trong %s" -#: judge/models/contest.py:485 +#: judge/models/contest.py:731 msgid "contest participation" msgstr "lần tham gia kỳ thi" -#: judge/models/contest.py:486 +#: judge/models/contest.py:732 msgid "contest participations" msgstr "lần tham gia kỳ thi" -#: judge/models/contest.py:492 judge/models/contest.py:514 -#: judge/models/contest.py:555 judge/models/problem.py:412 -#: judge/models/problem.py:417 judge/models/problem.py:435 -#: judge/models/problem_data.py:41 +#: judge/models/contest.py:739 judge/models/contest.py:783 +#: judge/models/contest.py:845 judge/models/problem.py:599 +#: judge/models/problem.py:606 judge/models/problem.py:637 +#: judge/models/problem_data.py:49 msgid "problem" msgstr "bài tập" -#: judge/models/contest.py:494 judge/models/contest.py:518 -#: judge/models/problem.py:130 +#: judge/models/contest.py:747 judge/models/contest.py:795 +#: judge/models/problem.py:227 msgid "points" msgstr "điểm" -#: judge/models/contest.py:495 +#: judge/models/contest.py:748 msgid "partial" msgstr "thành phần" -#: judge/models/contest.py:496 judge/models/contest.py:519 +#: judge/models/contest.py:749 judge/models/contest.py:797 msgid "is pretested" msgstr "dùng pretest" -#: judge/models/contest.py:497 judge/models/interface.py:43 +#: judge/models/contest.py:750 judge/models/interface.py:43 msgid "order" msgstr "thứ tự" -#: judge/models/contest.py:498 +#: judge/models/contest.py:752 msgid "0 to not show testcases, 1 to show" msgstr "0 để ẩn test, 1 để hiện" -#: judge/models/contest.py:499 +#: judge/models/contest.py:753 msgid "visible testcases" msgstr "hiển thị test" -#: judge/models/contest.py:500 +#: judge/models/contest.py:760 msgid "Maximum number of submissions for this problem, or 0 for no limit." msgstr "Số lần nộp tối đa, đặt là 0 nếu không có giới hạn." -#: judge/models/contest.py:502 +#: judge/models/contest.py:764 msgid "Why include a problem you can't submit to?" msgstr "" -#: judge/models/contest.py:507 +#: judge/models/contest.py:770 msgid "contest problem" msgstr "bài trong kỳ thi" -#: judge/models/contest.py:508 +#: judge/models/contest.py:771 msgid "contest problems" msgstr "bài trong kỳ thi" -#: judge/models/contest.py:512 judge/models/submission.py:183 +#: judge/models/contest.py:777 judge/models/submission.py:234 msgid "submission" msgstr "bài nộp" -#: judge/models/contest.py:516 judge/models/contest.py:531 +#: judge/models/contest.py:790 judge/models/contest.py:816 msgid "participation" msgstr "lần tham gia" -#: judge/models/contest.py:520 +#: judge/models/contest.py:798 msgid "Whether this submission was ran only on pretests." msgstr "Quyết định bài nộp chỉ được chạy trên pretest không." -#: judge/models/contest.py:524 +#: judge/models/contest.py:803 msgid "contest submission" msgstr "bài nộp kỳ thi" -#: judge/models/contest.py:525 +#: judge/models/contest.py:804 msgid "contest submissions" msgstr "bài nộp kỳ thi" -#: judge/models/contest.py:533 +#: judge/models/contest.py:820 msgid "rank" msgstr "rank" -#: judge/models/contest.py:534 +#: judge/models/contest.py:821 msgid "rating" msgstr "rating" -#: judge/models/contest.py:535 +#: judge/models/contest.py:822 msgid "raw rating" msgstr "rating thật" -#: judge/models/contest.py:536 +#: judge/models/contest.py:823 msgid "contest performance" msgstr "" -#: judge/models/contest.py:537 +#: judge/models/contest.py:824 msgid "last rated" msgstr "lần cuối được xếp hạng" -#: judge/models/contest.py:541 +#: judge/models/contest.py:828 msgid "contest rating" msgstr "rating kỳ thi" -#: judge/models/contest.py:542 +#: judge/models/contest.py:829 msgid "contest ratings" msgstr "rating kỳ thi" -#: judge/models/contest.py:562 +#: judge/models/contest.py:853 msgid "contest moss result" msgstr "kết quả MOSS kỳ thi" -#: judge/models/contest.py:563 +#: judge/models/contest.py:854 msgid "contest moss results" msgstr "kết quả MOSS kỳ thi" @@ -1196,63 +1196,63 @@ msgstr "" msgid "label" msgstr "nhãn" -#: judge/models/interface.py:47 +#: judge/models/interface.py:48 msgid "highlight regex" msgstr "" -#: judge/models/interface.py:48 +#: judge/models/interface.py:52 msgid "parent item" msgstr "mục cha" -#: judge/models/interface.py:66 +#: judge/models/interface.py:74 msgid "post title" msgstr "tiêu đề bài đăng" -#: judge/models/interface.py:67 judge/models/problem.py:455 +#: judge/models/interface.py:75 judge/models/problem.py:676 msgid "authors" msgstr "tác giả" -#: judge/models/interface.py:68 +#: judge/models/interface.py:76 msgid "slug" msgstr "slug" -#: judge/models/interface.py:69 judge/models/problem.py:453 +#: judge/models/interface.py:77 judge/models/problem.py:674 msgid "public visibility" msgstr "khả năng hiển thị công khai" -#: judge/models/interface.py:70 +#: judge/models/interface.py:78 msgid "sticky" msgstr "nổi lên đầu" -#: judge/models/interface.py:71 +#: judge/models/interface.py:79 msgid "publish after" msgstr "đăng sau khi" -#: judge/models/interface.py:72 +#: judge/models/interface.py:80 msgid "post content" msgstr "đăng nội dung" -#: judge/models/interface.py:73 +#: judge/models/interface.py:81 msgid "post summary" msgstr "đăng tổng kết" -#: judge/models/interface.py:74 +#: judge/models/interface.py:83 msgid "openGraph image" msgstr "hình ảnh openGraph" -#: judge/models/interface.py:76 +#: judge/models/interface.py:89 msgid "If private, only these organizations may see the blog post." msgstr "Nếu riêng tư, chỉ những tổ chức này thấy được bài đăng." -#: judge/models/interface.py:105 +#: judge/models/interface.py:129 msgid "Edit all posts" msgstr "Chỉnh sửa tất cả bài đăng" -#: judge/models/interface.py:107 +#: judge/models/interface.py:130 msgid "blog post" msgstr "bài đăng" -#: judge/models/interface.py:108 +#: judge/models/interface.py:131 msgid "blog posts" msgstr "bài đăng" @@ -1260,440 +1260,440 @@ msgstr "bài đăng" msgid "message title" msgstr "tiêu đề tin nhắn" -#: judge/models/message.py:12 judge/models/ticket.py:29 +#: judge/models/message.py:12 judge/models/ticket.py:48 msgid "message body" msgstr "nội dung tin nhắn" -#: judge/models/message.py:13 +#: judge/models/message.py:15 msgid "sender" msgstr "người gửi" -#: judge/models/message.py:14 +#: judge/models/message.py:21 msgid "target" msgstr "người nhận" -#: judge/models/message.py:15 +#: judge/models/message.py:26 msgid "message timestamp" msgstr "thời gian gửi" -#: judge/models/message.py:20 +#: judge/models/message.py:33 msgid "messages in the thread" msgstr "tin nhắn trong chuỗi" -#: judge/models/problem.py:27 +#: judge/models/problem.py:37 msgid "problem category ID" msgstr "mã của nhóm bài" -#: judge/models/problem.py:28 +#: judge/models/problem.py:40 msgid "problem category name" msgstr "tên nhóm bài" -#: judge/models/problem.py:35 +#: judge/models/problem.py:48 msgid "problem type" msgstr "dạng bài" -#: judge/models/problem.py:36 judge/models/problem.py:114 -#: judge/models/volunteer.py:17 +#: judge/models/problem.py:49 judge/models/problem.py:194 +#: judge/models/volunteer.py:28 msgid "problem types" msgstr "dạng bài" -#: judge/models/problem.py:40 +#: judge/models/problem.py:54 msgid "problem group ID" msgstr "mã của nhóm bài" -#: judge/models/problem.py:41 +#: judge/models/problem.py:56 msgid "problem group name" msgstr "tên nhóm bài" -#: judge/models/problem.py:48 judge/models/problem.py:117 +#: judge/models/problem.py:63 judge/models/problem.py:199 msgid "problem group" msgstr "nhóm bài" -#: judge/models/problem.py:49 +#: judge/models/problem.py:64 msgid "problem groups" msgstr "nhóm bài" -#: judge/models/problem.py:53 +#: judge/models/problem.py:71 msgid "key" msgstr "" -#: judge/models/problem.py:55 +#: judge/models/problem.py:74 msgid "link" msgstr "đường dẫn" -#: judge/models/problem.py:56 +#: judge/models/problem.py:75 msgid "full name" msgstr "tên đầy đủ" -#: judge/models/problem.py:57 judge/models/profile.py:33 -#: judge/models/runtime.py:24 +#: judge/models/problem.py:79 judge/models/profile.py:38 +#: judge/models/runtime.py:34 msgid "short name" msgstr "tên ngắn" -#: judge/models/problem.py:58 +#: judge/models/problem.py:80 msgid "Displayed on pages under this license" msgstr "Được hiển thị trên các trang theo giấy phép này" -#: judge/models/problem.py:59 +#: judge/models/problem.py:85 msgid "icon" msgstr "icon" -#: judge/models/problem.py:59 +#: judge/models/problem.py:86 msgid "URL to the icon" msgstr "Đường dẫn icon" -#: judge/models/problem.py:60 +#: judge/models/problem.py:88 msgid "license text" msgstr "văn bản giấy phép" -#: judge/models/problem.py:69 +#: judge/models/problem.py:97 msgid "license" msgstr "" -#: judge/models/problem.py:70 +#: judge/models/problem.py:98 msgid "licenses" msgstr "" -#: judge/models/problem.py:97 +#: judge/models/problem.py:148 msgid "problem code" msgstr "" -#: judge/models/problem.py:99 +#: judge/models/problem.py:154 msgid "A short, unique code for the problem, used in the url after /problem/" msgstr "" -#: judge/models/problem.py:101 +#: judge/models/problem.py:159 msgid "problem name" msgstr "" -#: judge/models/problem.py:102 +#: judge/models/problem.py:161 msgid "The full name of the problem, as shown in the problem list." msgstr "" -#: judge/models/problem.py:104 +#: judge/models/problem.py:163 msgid "problem body" msgstr "" -#: judge/models/problem.py:105 +#: judge/models/problem.py:166 msgid "creators" msgstr "" -#: judge/models/problem.py:106 +#: judge/models/problem.py:170 msgid "These users will be able to edit the problem, and be listed as authors." msgstr "" -#: judge/models/problem.py:108 +#: judge/models/problem.py:175 msgid "curators" msgstr "" -#: judge/models/problem.py:109 +#: judge/models/problem.py:179 msgid "" "These users will be able to edit the problem, but not be listed as authors." msgstr "" -#: judge/models/problem.py:111 +#: judge/models/problem.py:185 msgid "testers" msgstr "" -#: judge/models/problem.py:113 +#: judge/models/problem.py:189 msgid "These users will be able to view the private problem, but not edit it." msgstr "" -#: judge/models/problem.py:115 judge/models/volunteer.py:18 +#: judge/models/problem.py:195 judge/models/volunteer.py:29 msgid "The type of problem, as shown on the problem's page." msgstr "" -#: judge/models/problem.py:118 +#: judge/models/problem.py:201 msgid "The group of problem, shown under Category in the problem list." msgstr "" -#: judge/models/problem.py:120 +#: judge/models/problem.py:206 msgid "" "The time limit for this problem, in seconds. Fractional seconds (e.g. 1.5) " "are supported." msgstr "" -#: judge/models/problem.py:124 judge/models/problem.py:440 +#: judge/models/problem.py:215 judge/models/problem.py:652 msgid "memory limit" msgstr "" -#: judge/models/problem.py:125 +#: judge/models/problem.py:217 msgid "" "The memory limit for this problem, in kilobytes (e.g. 64mb = 65536 " "kilobytes)." msgstr "" -#: judge/models/problem.py:131 +#: judge/models/problem.py:229 msgid "" "Points awarded for problem completion. Points are displayed with a 'p' " "suffix if partial." msgstr "" -#: judge/models/problem.py:134 +#: judge/models/problem.py:235 msgid "allows partial points" msgstr "" -#: judge/models/problem.py:135 +#: judge/models/problem.py:239 msgid "allowed languages" msgstr "" -#: judge/models/problem.py:136 +#: judge/models/problem.py:240 msgid "List of allowed submission languages." msgstr "" -#: judge/models/problem.py:138 +#: judge/models/problem.py:246 msgid "manually managed" msgstr "" -#: judge/models/problem.py:139 +#: judge/models/problem.py:249 msgid "Whether judges should be allowed to manage data or not." msgstr "" -#: judge/models/problem.py:140 +#: judge/models/problem.py:252 msgid "date of publishing" msgstr "" -#: judge/models/problem.py:141 +#: judge/models/problem.py:257 msgid "" "Doesn't have magic ability to auto-publish due to backward compatibility" msgstr "" -#: judge/models/problem.py:143 +#: judge/models/problem.py:264 msgid "Bans the selected users from submitting to this problem." msgstr "" -#: judge/models/problem.py:145 +#: judge/models/problem.py:271 msgid "The license under which this problem is published." msgstr "" -#: judge/models/problem.py:147 +#: judge/models/problem.py:278 msgid "problem summary" msgstr "" -#: judge/models/problem.py:149 +#: judge/models/problem.py:284 msgid "number of users" msgstr "" -#: judge/models/problem.py:150 +#: judge/models/problem.py:286 msgid "The number of users who solved the problem." msgstr "" -#: judge/models/problem.py:151 +#: judge/models/problem.py:288 msgid "solve rate" msgstr "" -#: judge/models/problem.py:157 +#: judge/models/problem.py:297 msgid "If private, only these organizations may see the problem." msgstr "" -#: judge/models/problem.py:418 judge/models/problem.py:436 -#: judge/models/runtime.py:111 +#: judge/models/problem.py:611 judge/models/problem.py:642 +#: judge/models/runtime.py:161 msgid "language" msgstr "" -#: judge/models/problem.py:419 +#: judge/models/problem.py:614 msgid "translated name" msgstr "" -#: judge/models/problem.py:420 +#: judge/models/problem.py:616 msgid "translated description" msgstr "" -#: judge/models/problem.py:424 +#: judge/models/problem.py:620 msgid "problem translation" msgstr "" -#: judge/models/problem.py:425 +#: judge/models/problem.py:621 msgid "problem translations" msgstr "" -#: judge/models/problem.py:429 +#: judge/models/problem.py:626 msgid "clarified problem" msgstr "" -#: judge/models/problem.py:430 +#: judge/models/problem.py:628 msgid "clarification body" msgstr "" -#: judge/models/problem.py:431 +#: judge/models/problem.py:630 msgid "clarification timestamp" msgstr "" -#: judge/models/problem.py:446 +#: judge/models/problem.py:661 msgid "language-specific resource limit" msgstr "" -#: judge/models/problem.py:447 +#: judge/models/problem.py:662 msgid "language-specific resource limits" msgstr "" -#: judge/models/problem.py:451 +#: judge/models/problem.py:669 msgid "associated problem" msgstr "" -#: judge/models/problem.py:454 +#: judge/models/problem.py:675 msgid "publish date" msgstr "" -#: judge/models/problem.py:456 +#: judge/models/problem.py:677 msgid "editorial content" msgstr "nội dung lời giải" -#: judge/models/problem.py:472 +#: judge/models/problem.py:691 msgid "solution" msgstr "lời giải" -#: judge/models/problem.py:473 +#: judge/models/problem.py:692 msgid "solutions" msgstr "lời giải" -#: judge/models/problem.py:478 +#: judge/models/problem.py:697 #, fuzzy #| msgid "point value" msgid "proposed point value" msgstr "điểm" -#: judge/models/problem.py:479 +#: judge/models/problem.py:698 msgid "The amount of points you think this problem deserves." msgstr "" -#: judge/models/problem.py:489 +#: judge/models/problem.py:712 msgid "The time this vote was cast" msgstr "" -#: judge/models/problem.py:495 +#: judge/models/problem.py:718 msgid "vote" msgstr "" -#: judge/models/problem_data.py:26 +#: judge/models/problem_data.py:32 msgid "Standard" msgstr "Tiêu chuẩn" -#: judge/models/problem_data.py:27 +#: judge/models/problem_data.py:33 msgid "Floats" msgstr "Số thực" -#: judge/models/problem_data.py:28 +#: judge/models/problem_data.py:34 msgid "Floats (absolute)" msgstr "Số thực (chênh lệch tuyệt đối)" -#: judge/models/problem_data.py:29 +#: judge/models/problem_data.py:35 msgid "Floats (relative)" msgstr "Số thực (chênh lệch tương đối)" -#: judge/models/problem_data.py:30 +#: judge/models/problem_data.py:36 msgid "Non-trailing spaces" msgstr "Không cho phép dấu cách cuối dòng" -#: judge/models/problem_data.py:31 +#: judge/models/problem_data.py:37 msgid "Unordered" msgstr "Không thứ tự" -#: judge/models/problem_data.py:32 +#: judge/models/problem_data.py:38 msgid "Byte identical" msgstr "Giống từng byte" -#: judge/models/problem_data.py:33 +#: judge/models/problem_data.py:39 msgid "Line-by-line" msgstr "Chấm theo dòng (điểm = số dòng đúng)" -#: judge/models/problem_data.py:34 +#: judge/models/problem_data.py:40 msgid "Custom checker (PY)" msgstr "Trình chấm tự viết (Python)" -#: judge/models/problem_data.py:35 +#: judge/models/problem_data.py:41 msgid "Custom validator (CPP)" msgstr "Trình chấm tự viết (C++)" -#: judge/models/problem_data.py:36 +#: judge/models/problem_data.py:42 msgid "Interactive" msgstr "" -#: judge/models/problem_data.py:43 +#: judge/models/problem_data.py:54 msgid "data zip file" msgstr "file zip chứa test" -#: judge/models/problem_data.py:45 +#: judge/models/problem_data.py:61 msgid "generator file" msgstr "file tạo test" -#: judge/models/problem_data.py:47 judge/models/problem_data.py:129 +#: judge/models/problem_data.py:68 judge/models/problem_data.py:190 msgid "output prefix length" msgstr "độ dài hiển thị output" -#: judge/models/problem_data.py:48 judge/models/problem_data.py:130 +#: judge/models/problem_data.py:71 judge/models/problem_data.py:193 msgid "output limit length" msgstr "giới hạn hiển thị output" -#: judge/models/problem_data.py:49 +#: judge/models/problem_data.py:74 msgid "init.yml generation feedback" msgstr "phản hồi của quá trình tạo file init.yml" -#: judge/models/problem_data.py:50 judge/models/problem_data.py:131 +#: judge/models/problem_data.py:77 judge/models/problem_data.py:196 msgid "checker" msgstr "trình chấm" -#: judge/models/problem_data.py:51 judge/models/problem_data.py:132 +#: judge/models/problem_data.py:80 judge/models/problem_data.py:199 msgid "checker arguments" msgstr "các biến trong trình chấm" -#: judge/models/problem_data.py:52 judge/models/problem_data.py:133 +#: judge/models/problem_data.py:82 judge/models/problem_data.py:201 msgid "checker arguments as a JSON object" msgstr "các biến trong trình chấm theo dạng JSON" -#: judge/models/problem_data.py:53 +#: judge/models/problem_data.py:85 msgid "custom checker file" msgstr "file trình chấm" -#: judge/models/problem_data.py:59 +#: judge/models/problem_data.py:93 msgid "custom validator file" msgstr "file trình chấm" -#: judge/models/problem_data.py:65 +#: judge/models/problem_data.py:101 msgid "interactive judge" msgstr "" -#: judge/models/problem_data.py:116 +#: judge/models/problem_data.py:165 msgid "problem data set" msgstr "tập hợp dữ liệu bài" -#: judge/models/problem_data.py:118 +#: judge/models/problem_data.py:169 msgid "case position" msgstr "vị trí test" -#: judge/models/problem_data.py:119 +#: judge/models/problem_data.py:172 msgid "case type" msgstr "loại test" -#: judge/models/problem_data.py:120 +#: judge/models/problem_data.py:174 msgid "Normal case" msgstr "Test bình thường" -#: judge/models/problem_data.py:121 +#: judge/models/problem_data.py:175 msgid "Batch start" msgstr "Bắt đầu nhóm" -#: judge/models/problem_data.py:122 +#: judge/models/problem_data.py:176 msgid "Batch end" msgstr "Kết thúc nhóm" -#: judge/models/problem_data.py:124 +#: judge/models/problem_data.py:181 msgid "input file name" msgstr "tên file input" -#: judge/models/problem_data.py:125 +#: judge/models/problem_data.py:184 msgid "output file name" msgstr "tên file output" -#: judge/models/problem_data.py:126 +#: judge/models/problem_data.py:186 msgid "generator arguments" msgstr "biến trong file sinh test" -#: judge/models/problem_data.py:127 +#: judge/models/problem_data.py:187 msgid "point value" msgstr "điểm" -#: judge/models/problem_data.py:128 +#: judge/models/problem_data.py:188 msgid "case is pretest?" msgstr "test là pretest?" @@ -1701,372 +1701,372 @@ msgstr "test là pretest?" msgid "organization title" msgstr "tiêu đề tổ chức" -#: judge/models/profile.py:31 +#: judge/models/profile.py:33 msgid "organization slug" msgstr "tên ngắn tổ chức" -#: judge/models/profile.py:32 +#: judge/models/profile.py:34 msgid "Organization name shown in URL" msgstr "Tên được hiển thị trong đường dẫn" -#: judge/models/profile.py:34 +#: judge/models/profile.py:39 msgid "Displayed beside user name during contests" msgstr "Hiển thị bên cạnh tên người dùng trong kỳ thi" -#: judge/models/profile.py:35 +#: judge/models/profile.py:41 msgid "organization description" msgstr "mô tả tổ chức" -#: judge/models/profile.py:36 +#: judge/models/profile.py:44 msgid "registrant" msgstr "người tạo" -#: judge/models/profile.py:37 +#: judge/models/profile.py:47 msgid "User who registered this organization" msgstr "Người tạo tổ chức" -#: judge/models/profile.py:38 +#: judge/models/profile.py:51 msgid "administrators" msgstr "người quản lý" -#: judge/models/profile.py:39 +#: judge/models/profile.py:53 msgid "Those who can edit this organization" msgstr "Những người có thể chỉnh sửa tổ chức" -#: judge/models/profile.py:40 +#: judge/models/profile.py:56 msgid "creation date" msgstr "ngày tạo" -#: judge/models/profile.py:41 +#: judge/models/profile.py:59 msgid "is open organization?" msgstr "tổ chức mở?" -#: judge/models/profile.py:42 +#: judge/models/profile.py:60 msgid "Allow joining organization" msgstr "Cho phép tham gia tổ chức" -#: judge/models/profile.py:43 +#: judge/models/profile.py:64 msgid "maximum size" msgstr "số lượng thành viên tối đa" -#: judge/models/profile.py:44 +#: judge/models/profile.py:68 msgid "" "Maximum amount of users in this organization, only applicable to private " "organizations" msgstr "Số người tối đa trong tổ chức, chỉ áp dụng với tổ chức riêng tư" -#: judge/models/profile.py:46 +#: judge/models/profile.py:74 msgid "Student access code" msgstr "Mã truy cập cho học sinh" -#: judge/models/profile.py:50 +#: judge/models/profile.py:85 msgid "" "This image will replace the default site logo for users viewing the " "organization." msgstr "Ảnh này sẽ thay thế logo mặc định khi ở trong tổ chức." -#: judge/models/profile.py:76 judge/models/profile.py:93 -#: judge/models/profile.py:221 +#: judge/models/profile.py:115 judge/models/profile.py:144 +#: judge/models/profile.py:344 msgid "organization" msgstr "" -#: judge/models/profile.py:81 +#: judge/models/profile.py:121 msgid "user associated" msgstr "" -#: judge/models/profile.py:82 +#: judge/models/profile.py:123 msgid "self-description" msgstr "" -#: judge/models/profile.py:83 +#: judge/models/profile.py:126 msgid "location" msgstr "" -#: judge/models/profile.py:85 +#: judge/models/profile.py:132 msgid "preferred language" msgstr "" -#: judge/models/profile.py:91 +#: judge/models/profile.py:140 msgid "last access time" msgstr "" -#: judge/models/profile.py:92 +#: judge/models/profile.py:141 msgid "last IP" msgstr "" -#: judge/models/profile.py:95 +#: judge/models/profile.py:152 msgid "display rank" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:160 msgid "comment mute" msgstr "" -#: judge/models/profile.py:97 +#: judge/models/profile.py:161 msgid "Some users are at their best when silent." msgstr "" -#: judge/models/profile.py:99 +#: judge/models/profile.py:165 msgid "unlisted user" msgstr "" -#: judge/models/profile.py:99 +#: judge/models/profile.py:166 msgid "User will not be ranked." msgstr "" -#: judge/models/profile.py:102 +#: judge/models/profile.py:170 #, fuzzy #| msgid "Banned from joining" msgid "banned from voting" msgstr "Bị cấm tham gia" -#: judge/models/profile.py:103 +#: judge/models/profile.py:171 msgid "User will not be able to vote on problems' point values." msgstr "" -#: judge/models/profile.py:107 +#: judge/models/profile.py:176 msgid "user script" msgstr "" -#: judge/models/profile.py:108 +#: judge/models/profile.py:180 msgid "User-defined JavaScript for site customization." msgstr "" -#: judge/models/profile.py:109 +#: judge/models/profile.py:184 msgid "current contest" msgstr "kỳ thi hiện tại" -#: judge/models/profile.py:111 +#: judge/models/profile.py:191 msgid "math engine" msgstr "" -#: judge/models/profile.py:113 +#: judge/models/profile.py:195 msgid "the rendering engine used to render math" msgstr "" -#: judge/models/profile.py:114 +#: judge/models/profile.py:198 msgid "2FA enabled" msgstr "" -#: judge/models/profile.py:115 +#: judge/models/profile.py:200 msgid "check to enable TOTP-based two factor authentication" msgstr "đánh dấu để sử dụng TOTP-based two factor authentication" -#: judge/models/profile.py:116 +#: judge/models/profile.py:206 msgid "TOTP key" msgstr "mã TOTP" -#: judge/models/profile.py:117 +#: judge/models/profile.py:207 msgid "32 character base32-encoded key for TOTP" msgstr "" -#: judge/models/profile.py:119 +#: judge/models/profile.py:209 msgid "TOTP key must be empty or base32" msgstr "" -#: judge/models/profile.py:120 +#: judge/models/profile.py:213 msgid "internal notes" msgstr "ghi chú nội bộ" -#: judge/models/profile.py:121 +#: judge/models/profile.py:216 msgid "Notes for administrators regarding this user." msgstr "Ghi chú riêng cho quản trị viên." -#: judge/models/profile.py:215 +#: judge/models/profile.py:331 msgid "user profile" msgstr "thông tin người dùng" -#: judge/models/profile.py:216 +#: judge/models/profile.py:332 msgid "user profiles" msgstr "thông tin người dùng" -#: judge/models/profile.py:223 +#: judge/models/profile.py:348 msgid "request time" msgstr "thời gian đăng ký" -#: judge/models/profile.py:224 +#: judge/models/profile.py:351 msgid "state" msgstr "trạng thái" -#: judge/models/profile.py:229 +#: judge/models/profile.py:358 msgid "reason" msgstr "lý do" -#: judge/models/profile.py:232 +#: judge/models/profile.py:361 msgid "organization join request" msgstr "đơn đăng ký tham gia" -#: judge/models/profile.py:233 +#: judge/models/profile.py:362 msgid "organization join requests" msgstr "đơn đăng ký tham gia" -#: judge/models/runtime.py:19 +#: judge/models/runtime.py:21 msgid "short identifier" msgstr "tên ngắn" -#: judge/models/runtime.py:20 +#: judge/models/runtime.py:23 msgid "" "The identifier for this language; the same as its executor id for judges." msgstr "" -#: judge/models/runtime.py:22 +#: judge/models/runtime.py:29 msgid "long name" msgstr "tên dài" -#: judge/models/runtime.py:23 +#: judge/models/runtime.py:30 msgid "Longer name for the language, e.g. \"Python 2\" or \"C++11\"." msgstr "Tên dài, ví dụ \"Python 2\" or \"C++11\"." -#: judge/models/runtime.py:25 +#: judge/models/runtime.py:36 msgid "" "More readable, but short, name to display publicly; e.g. \"PY2\" or \"C+" "+11\". If left blank, it will default to the short identifier." msgstr "" -#: judge/models/runtime.py:29 +#: judge/models/runtime.py:45 msgid "common name" msgstr "" -#: judge/models/runtime.py:30 +#: judge/models/runtime.py:47 msgid "" "Common name for the language. For example, the common name for C++03, C++11, " "and C++14 would be \"C++\"" msgstr "" -#: judge/models/runtime.py:32 +#: judge/models/runtime.py:53 msgid "ace mode name" msgstr "" -#: judge/models/runtime.py:33 +#: judge/models/runtime.py:55 msgid "" "Language ID for Ace.js editor highlighting, appended to \"mode-\" to " "determine the Ace JavaScript file to use, e.g., \"python\"." msgstr "" -#: judge/models/runtime.py:35 +#: judge/models/runtime.py:61 msgid "pygments name" msgstr "" -#: judge/models/runtime.py:36 +#: judge/models/runtime.py:62 msgid "Language ID for Pygments highlighting in source windows." msgstr "" -#: judge/models/runtime.py:37 +#: judge/models/runtime.py:65 msgid "code template" msgstr "" -#: judge/models/runtime.py:38 +#: judge/models/runtime.py:66 msgid "Code template to display in submission editor." msgstr "" -#: judge/models/runtime.py:39 +#: judge/models/runtime.py:71 msgid "runtime info override" msgstr "" -#: judge/models/runtime.py:40 +#: judge/models/runtime.py:74 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 +#: judge/models/runtime.py:79 msgid "language description" msgstr "" -#: judge/models/runtime.py:43 +#: judge/models/runtime.py:81 msgid "" "Use this field to inform users of quirks with your environment, additional " "restrictions, etc." msgstr "" -#: judge/models/runtime.py:45 +#: judge/models/runtime.py:88 msgid "extension" msgstr "" -#: judge/models/runtime.py:46 +#: judge/models/runtime.py:89 msgid "The extension of source files, e.g., \"py\" or \"cpp\"." msgstr "" -#: judge/models/runtime.py:112 +#: judge/models/runtime.py:162 msgid "languages" msgstr "ngôn ngữ" -#: judge/models/runtime.py:116 +#: judge/models/runtime.py:168 msgid "language to which this runtime belongs" msgstr "" -#: judge/models/runtime.py:117 +#: judge/models/runtime.py:172 msgid "judge on which this runtime exists" msgstr "" -#: judge/models/runtime.py:118 +#: judge/models/runtime.py:174 msgid "runtime name" msgstr "" -#: judge/models/runtime.py:119 +#: judge/models/runtime.py:176 msgid "runtime version" msgstr "" -#: judge/models/runtime.py:120 +#: judge/models/runtime.py:179 msgid "order in which to display this runtime" msgstr "" -#: judge/models/runtime.py:124 +#: judge/models/runtime.py:185 msgid "Server name, hostname-style" msgstr "Tên web" -#: judge/models/runtime.py:125 +#: judge/models/runtime.py:188 msgid "time of creation" msgstr "ngày tạo" -#: judge/models/runtime.py:126 +#: judge/models/runtime.py:192 msgid "A key to authenticate this judge" msgstr "Chìa khóa xác thực" -#: judge/models/runtime.py:127 +#: judge/models/runtime.py:193 msgid "authentication key" msgstr "mã xác thực" -#: judge/models/runtime.py:128 +#: judge/models/runtime.py:196 msgid "block judge" msgstr "chặn máy chấm" -#: judge/models/runtime.py:129 +#: judge/models/runtime.py:199 msgid "" "Whether this judge should be blocked from connecting, even if its key is " "correct." msgstr "Quyết định có chặn máy chấm, ngay cả khi mã xác thực đúng." -#: judge/models/runtime.py:131 +#: judge/models/runtime.py:203 msgid "judge online status" msgstr "trạng thái online của máy chấm" -#: judge/models/runtime.py:132 +#: judge/models/runtime.py:204 msgid "judge start time" msgstr "thời gian khởi đầu máy chấm" -#: judge/models/runtime.py:133 +#: judge/models/runtime.py:205 msgid "response time" msgstr "thời gian trả lời" -#: judge/models/runtime.py:134 +#: judge/models/runtime.py:207 msgid "system load" msgstr "lưu lượng xử lý" -#: judge/models/runtime.py:135 +#: judge/models/runtime.py:209 msgid "Load for the last minute, divided by processors to be fair." msgstr "Lưu lượng được chia đều." -#: judge/models/runtime.py:139 judge/models/runtime.py:179 +#: judge/models/runtime.py:219 judge/models/runtime.py:261 msgid "judges" msgstr "máy chấm" -#: judge/models/runtime.py:178 +#: judge/models/runtime.py:260 msgid "judge" msgstr "máy chấm" #: judge/models/submission.py:20 judge/models/submission.py:47 -#: judge/utils/problems.py:79 +#: judge/utils/problems.py:116 msgid "Accepted" msgstr "Accepted" @@ -2095,7 +2095,7 @@ msgid "Runtime Error" msgstr "Runtime Error" #: judge/models/submission.py:27 judge/models/submission.py:41 -#: judge/models/submission.py:55 judge/utils/problems.py:81 +#: judge/models/submission.py:55 judge/utils/problems.py:120 msgid "Compile Error" msgstr "Compile Error" @@ -2132,111 +2132,111 @@ msgstr "Chấm xong" msgid "Internal Error (judging server error)" msgstr "Lỗi máy chấm" -#: judge/models/submission.py:66 +#: judge/models/submission.py:67 msgid "submission time" msgstr "thời gian bài nộp" -#: judge/models/submission.py:67 judge/models/submission.py:203 +#: judge/models/submission.py:69 judge/models/submission.py:264 msgid "execution time" msgstr "thời gian chạy" -#: judge/models/submission.py:68 judge/models/submission.py:204 +#: judge/models/submission.py:70 judge/models/submission.py:265 msgid "memory usage" msgstr "bộ nhớ sử dụng" -#: judge/models/submission.py:69 judge/models/submission.py:205 +#: judge/models/submission.py:72 judge/models/submission.py:266 msgid "points granted" msgstr "điểm" -#: judge/models/submission.py:70 +#: judge/models/submission.py:75 msgid "submission language" msgstr "ngôn ngữ bài nộp" -#: judge/models/submission.py:71 +#: judge/models/submission.py:78 msgid "status" msgstr "trạng thái" -#: judge/models/submission.py:72 +#: judge/models/submission.py:85 msgid "result" msgstr "kết quả" -#: judge/models/submission.py:74 +#: judge/models/submission.py:93 msgid "compile errors" msgstr "biên dịch lỗi" -#: judge/models/submission.py:76 +#: judge/models/submission.py:95 msgid "batched cases" msgstr "nhóm test" -#: judge/models/submission.py:77 +#: judge/models/submission.py:96 msgid "test case points" msgstr "điểm test" -#: judge/models/submission.py:78 +#: judge/models/submission.py:97 msgid "test case total points" msgstr "tổng điểm các test" -#: judge/models/submission.py:79 +#: judge/models/submission.py:100 msgid "judged on" msgstr "chấm trên" -#: judge/models/submission.py:81 +#: judge/models/submission.py:106 msgid "submission judge time" msgstr "thời điểm được chấm" -#: judge/models/submission.py:82 +#: judge/models/submission.py:109 msgid "was rejudged by admin" msgstr "được chấm lại bởi admin" -#: judge/models/submission.py:83 +#: judge/models/submission.py:112 msgid "was ran on pretests only" msgstr "chỉ chấm pretest" -#: judge/models/submission.py:184 templates/contest/moss.html:58 +#: judge/models/submission.py:235 templates/contest/moss.html:58 msgid "submissions" msgstr "bài nộp" -#: judge/models/submission.py:188 judge/models/submission.py:199 +#: judge/models/submission.py:242 judge/models/submission.py:256 msgid "associated submission" msgstr "bài nộp tương ứng" -#: judge/models/submission.py:190 +#: judge/models/submission.py:245 msgid "source code" msgstr "mã nguồn" -#: judge/models/submission.py:201 +#: judge/models/submission.py:260 msgid "test case ID" msgstr "test case ID" -#: judge/models/submission.py:202 +#: judge/models/submission.py:262 msgid "status flag" msgstr "" -#: judge/models/submission.py:206 +#: judge/models/submission.py:267 msgid "points possible" msgstr "" -#: judge/models/submission.py:207 +#: judge/models/submission.py:268 msgid "batch number" msgstr "số thứ tự của nhóm" -#: judge/models/submission.py:208 +#: judge/models/submission.py:270 msgid "judging feedback" msgstr "phản hồi từ máy chấm" -#: judge/models/submission.py:209 +#: judge/models/submission.py:273 msgid "extended judging feedback" msgstr "phản hồi thêm từ máy chấm" -#: judge/models/submission.py:210 +#: judge/models/submission.py:275 msgid "program output" msgstr "output chương trình" -#: judge/models/submission.py:218 +#: judge/models/submission.py:283 msgid "submission test case" msgstr "cái testcase trong bài nộp" -#: judge/models/submission.py:219 +#: judge/models/submission.py:284 msgid "submission test cases" msgstr "cái testcase trong bài nộp" @@ -2244,394 +2244,394 @@ msgstr "cái testcase trong bài nộp" msgid "ticket title" msgstr "tiêu đề báo cáo" -#: judge/models/ticket.py:11 +#: judge/models/ticket.py:13 msgid "ticket creator" msgstr "người báo cáo" -#: judge/models/ticket.py:13 +#: judge/models/ticket.py:17 msgid "creation time" msgstr "thời gian tạo" -#: judge/models/ticket.py:14 +#: judge/models/ticket.py:19 msgid "assignees" msgstr "người được ủy thác" -#: judge/models/ticket.py:15 +#: judge/models/ticket.py:22 msgid "quick notes" msgstr "" -#: judge/models/ticket.py:16 +#: judge/models/ticket.py:24 msgid "Staff notes for this issue to aid in processing." msgstr "" -#: judge/models/ticket.py:17 +#: judge/models/ticket.py:27 msgid "linked item type" msgstr "" -#: judge/models/ticket.py:19 +#: judge/models/ticket.py:29 msgid "linked item ID" msgstr "" -#: judge/models/ticket.py:21 +#: judge/models/ticket.py:31 msgid "is ticket open?" msgstr "" -#: judge/models/ticket.py:25 +#: judge/models/ticket.py:37 msgid "ticket" msgstr "" -#: judge/models/ticket.py:27 +#: judge/models/ticket.py:44 msgid "poster" msgstr "" -#: judge/models/ticket.py:30 +#: judge/models/ticket.py:49 msgid "message time" msgstr "" -#: judge/models/volunteer.py:13 +#: judge/models/volunteer.py:19 msgid "knowledge points" msgstr "Độ khó kiến thức" -#: judge/models/volunteer.py:14 +#: judge/models/volunteer.py:20 msgid "Points awarded by knowledge difficulty" msgstr "" -#: judge/models/volunteer.py:15 +#: judge/models/volunteer.py:23 msgid "thinking points" msgstr "Độ khó nghĩ" -#: judge/models/volunteer.py:16 +#: judge/models/volunteer.py:24 msgid "Points awarded by thinking difficulty" msgstr "" -#: judge/models/volunteer.py:20 +#: judge/models/volunteer.py:31 msgid "feedback" msgstr "phản hồi" -#: judge/models/volunteer.py:23 +#: judge/models/volunteer.py:34 msgid "volunteer vote" msgstr "vote từ TNV" -#: judge/models/volunteer.py:24 +#: judge/models/volunteer.py:35 msgid "volunteer votes" msgstr "vote từ TNV" -#: judge/pdf_problems.py:147 judge/pdf_problems.py:199 -#: judge/pdf_problems.py:259 +#: judge/pdf_problems.py:161 judge/pdf_problems.py:221 +#: judge/pdf_problems.py:294 msgid "Page [page] of [topage]" msgstr "Trang [page]/[topage]" -#: judge/pdf_problems.py:280 +#: judge/pdf_problems.py:324 #, python-format msgid "Page %s of %s" msgstr "Trang %s/%s" -#: judge/tasks/contest.py:19 +#: judge/tasks/contest.py:20 msgid "Recalculating contest scores" msgstr "Tính lại điểm kỳ thi" -#: judge/tasks/contest.py:40 +#: judge/tasks/contest.py:42 msgid "Running MOSS" msgstr "Đang chạy MOSS" -#: judge/tasks/submission.py:43 +#: judge/tasks/submission.py:45 msgid "Modifying submissions" msgstr "Chỉnh sửa bài nộp" -#: judge/tasks/submission.py:56 +#: judge/tasks/submission.py:65 msgid "Recalculating user points" msgstr "Tính lại điểm người dùng" -#: judge/utils/problem_data.py:70 +#: judge/utils/problem_data.py:75 msgid "Empty batches not allowed." msgstr "Nhóm test trống là không hợp lệ." -#: judge/utils/problem_data.py:78 judge/utils/problem_data.py:99 +#: judge/utils/problem_data.py:84 judge/utils/problem_data.py:107 msgid "How did you corrupt the custom checker path?" msgstr "How did you corrupt the custom checker path?" -#: judge/utils/problem_data.py:120 +#: judge/utils/problem_data.py:130 #, python-format msgid "Points must be defined for non-batch case #%d." msgstr "Ô điểm số cho test #%d phải được điền." -#: judge/utils/problem_data.py:125 +#: judge/utils/problem_data.py:137 #, python-format msgid "Input file for case %d does not exist: %s" msgstr "File input cho test %d không tồn tại: %s" -#: judge/utils/problem_data.py:128 +#: judge/utils/problem_data.py:142 #, python-format msgid "Output file for case %d does not exist: %s" msgstr "File output cho test %d không tồn tại: %s" -#: judge/utils/problem_data.py:153 +#: judge/utils/problem_data.py:169 #, python-format msgid "Batch start case #%d requires points." msgstr "Nhóm test #%d cần được điền điểm số." -#: judge/utils/problem_data.py:174 +#: judge/utils/problem_data.py:192 #, python-format msgid "Attempt to end batch outside of one in case #%d" msgstr "Nhóm test #%d kết thúc không hợp lệ" -#: judge/utils/problem_data.py:192 +#: judge/utils/problem_data.py:211 msgid "How did you corrupt the zip path?" msgstr "" -#: judge/utils/problem_data.py:198 +#: judge/utils/problem_data.py:217 msgid "How did you corrupt the generator path?" msgstr "" -#: judge/utils/problems.py:80 +#: judge/utils/problems.py:117 msgid "Wrong" msgstr "Sai" -#: judge/utils/problems.py:82 +#: judge/utils/problems.py:123 msgid "Timeout" msgstr "Quá thời gian" -#: judge/utils/problems.py:83 +#: judge/utils/problems.py:126 msgid "Error" msgstr "Lỗi" -#: judge/utils/problems.py:94 +#: judge/utils/problems.py:143 msgid "Can't pass both queryset and keyword filters" msgstr "" -#: judge/utils/pwned.py:101 +#: judge/utils/pwned.py:102 msgid "Your password can't be a commonly used password." msgstr "Mật khẩu không được quá phổ biến." -#: judge/utils/pwned.py:102 +#: judge/utils/pwned.py:103 msgid "This password is too common." msgstr "Mật khẩu này quá phổ biến." -#: judge/utils/timedelta.py:49 +#: judge/utils/timedelta.py:59 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" -#: judge/utils/timedelta.py:53 +#: judge/utils/timedelta.py:68 msgctxt "time format without day" msgid "%h:%m:%s" msgstr "%h:%m:%s" -#: judge/utils/timedelta.py:59 +#: judge/utils/timedelta.py:80 msgctxt "time format no seconds with day" msgid "%d day %h:%m" msgid_plural "%d days %h:%m" msgstr[0] "%d ngày %h:%m" -#: judge/utils/timedelta.py:61 +#: judge/utils/timedelta.py:88 #, python-format msgid "%d day" msgid_plural "%d days" msgstr[0] "%d ngày" -#: judge/utils/timedelta.py:63 +#: judge/utils/timedelta.py:91 msgctxt "hours and minutes" msgid "%h:%m" msgstr "%h:%m" -#: judge/views/about.py:7 templates/organization/home.html:105 +#: judge/views/about.py:10 templates/organization/home.html:105 #: templates/user/user-about.html:83 templates/user/user-tabs.html:4 #: templates/user/users-table.html:32 msgid "About" msgstr "Giới thiệu" -#: judge/views/about.py:13 +#: judge/views/about.py:20 msgid "Custom Checker Sample" msgstr "Hướng dẫn viết trình chấm" -#: judge/views/blog.py:93 +#: judge/views/blog.py:128 #, python-format msgid "Page %d of Posts" msgstr "Trang %d" -#: judge/views/blog.py:134 +#: judge/views/blog.py:183 msgid "Ticket feed" msgstr "Báo cáo" -#: judge/views/blog.py:152 +#: judge/views/blog.py:201 msgid "Comment feed" msgstr "Bình luận" -#: judge/views/comment.py:28 +#: judge/views/comment.py:39 msgid "Messing around, are we?" msgstr "Messing around, are we?" -#: judge/views/comment.py:37 +#: judge/views/comment.py:55 msgid "You must solve at least one problem before you can vote." msgstr "Bạn phải giải ít nhất 1 bài trước khi được vote." -#: judge/views/comment.py:64 +#: judge/views/comment.py:86 msgid "You already voted." msgstr "Bạn đã vote." -#: judge/views/comment.py:126 judge/views/organization.py:344 +#: judge/views/comment.py:153 judge/views/organization.py:472 msgid "Edited from site" msgstr "Chỉnh sửa từ web" -#: judge/views/comment.py:147 +#: judge/views/comment.py:174 msgid "Editing comment" msgstr "Chỉnh sửa bình luận" -#: judge/views/contests.py:58 judge/views/contests.py:250 -#: judge/views/contests.py:253 judge/views/contests.py:427 +#: judge/views/contests.py:115 judge/views/contests.py:356 +#: judge/views/contests.py:361 judge/views/contests.py:602 msgid "No such contest" msgstr "Không có contest nào như vậy" -#: judge/views/contests.py:59 judge/views/contests.py:251 +#: judge/views/contests.py:116 judge/views/contests.py:357 #, python-format msgid "Could not find a contest with the key \"%s\"." msgstr "Không tìm thấy kỳ thi với mã \"%s\"." -#: judge/views/contests.py:72 +#: judge/views/contests.py:135 msgid "Contests" msgstr "Kỳ thi" -#: judge/views/contests.py:254 +#: judge/views/contests.py:361 msgid "Could not find such contest." msgstr "Không tìm thấy kỳ thi nào như vậy." -#: judge/views/contests.py:257 +#: judge/views/contests.py:369 #, python-format msgid "Access to contest \"%s\" denied" msgstr "Truy cập tới kỳ thi \"%s\" bị từ chối" -#: judge/views/contests.py:281 +#: judge/views/contests.py:407 msgid "Clone Contest" msgstr "Nhân bản kỳ thi" -#: judge/views/contests.py:346 +#: judge/views/contests.py:476 msgid "Contest not ongoing" msgstr "Kỳ thi đang không diễn ra" -#: judge/views/contests.py:347 +#: judge/views/contests.py:477 #, python-format msgid "\"%s\" is not currently ongoing." msgstr "\"%s\" kỳ thi đang không diễn ra." -#: judge/views/contests.py:351 +#: judge/views/contests.py:484 msgid "Already in contest" msgstr "Đã ở trong kỳ thi" -#: judge/views/contests.py:352 +#: judge/views/contests.py:485 #, python-format msgid "You are already in a contest: \"%s\"." msgstr "Bạn đã ở trong kỳ thi: \"%s\"." -#: judge/views/contests.py:355 +#: judge/views/contests.py:495 msgid "Banned from joining" msgstr "Bị cấm tham gia" -#: judge/views/contests.py:356 +#: judge/views/contests.py:497 msgid "" "You have been declared persona non grata for this contest. You are " "permanently barred from joining this contest." msgstr "Bạn không được phép tham gia kỳ thi này." -#: judge/views/contests.py:417 +#: judge/views/contests.py:586 #, python-format msgid "Enter access code for \"%s\"" msgstr "Nhập mật khẩu truy cập cho \"%s\"" -#: judge/views/contests.py:428 +#: judge/views/contests.py:603 #, python-format msgid "You are not in contest \"%s\"." msgstr "Bạn không ở trong kỳ thi \"%s\"." -#: judge/views/contests.py:448 +#: judge/views/contests.py:626 msgid "ContestCalendar requires integer year and month" msgstr "Lịch thi yêu cầu giá trị cho năm và tháng là số nguyên" -#: judge/views/contests.py:488 +#: judge/views/contests.py:684 #, python-format msgid "Contests in %(month)s" msgstr "Các kỳ thi trong %(month)s" -#: judge/views/contests.py:488 +#: judge/views/contests.py:685 msgid "F Y" msgstr "F Y" -#: judge/views/contests.py:536 +#: judge/views/contests.py:745 #, python-format msgid "%s Statistics" msgstr "%s Thống kê" -#: judge/views/contests.py:731 +#: judge/views/contests.py:1002 #, python-format msgid "%s Rankings" msgstr "%s Bảng điểm" -#: judge/views/contests.py:739 +#: judge/views/contests.py:1013 msgid "???" msgstr "???" -#: judge/views/contests.py:755 +#: judge/views/contests.py:1029 #, python-format msgid "Your participation in %s" msgstr "Lần tham gia trong %s" -#: judge/views/contests.py:756 +#: judge/views/contests.py:1030 #, python-format msgid "%s's participation in %s" msgstr "Lần tham gia của %s trong %s" -#: judge/views/contests.py:763 +#: judge/views/contests.py:1044 msgid "Live" msgstr "Trực tiếp" -#: judge/views/contests.py:775 templates/contest/contest-tabs.html:13 +#: judge/views/contests.py:1063 templates/contest/contest-tabs.html:13 msgid "Participation" msgstr "Lần tham gia" -#: judge/views/contests.py:822 +#: judge/views/contests.py:1112 #, python-format msgid "%s MOSS Results" msgstr "%s Kết quả MOSS" -#: judge/views/contests.py:849 +#: judge/views/contests.py:1148 #, python-format msgid "Running MOSS for %s..." msgstr "Đang chạy MOSS cho %s..." -#: judge/views/contests.py:872 +#: judge/views/contests.py:1171 #, python-format msgid "Contest tag: %s" msgstr "Nhãn kỳ thi: %s" -#: judge/views/contests.py:882 judge/views/ticket.py:57 +#: judge/views/contests.py:1186 judge/views/ticket.py:72 msgid "Issue description" msgstr "Mô tả vấn đề" -#: judge/views/contests.py:925 +#: judge/views/contests.py:1232 #, python-format msgid "New clarification for %s" msgstr "Thông báo mới cho %s" -#: judge/views/error.py:14 +#: judge/views/error.py:17 msgid "404 error" msgstr "Lỗi 404" -#: judge/views/error.py:15 +#: judge/views/error.py:18 #, python-format msgid "Could not find page \"%s\"" msgstr "Không thể tìm thấy trang \"%s\"" -#: judge/views/error.py:22 +#: judge/views/error.py:29 #, python-format msgid "no permission for %s" msgstr "không có quyền cho %s" -#: judge/views/error.py:30 +#: judge/views/error.py:41 #, python-format msgid "corrupt page %s" msgstr "trang bị sập %s" -#: judge/views/internal.py:11 +#: judge/views/internal.py:12 #, fuzzy #| msgid "contest problems" msgid "Internal problems" @@ -2642,72 +2642,72 @@ msgstr "bài trong kỳ thi" msgid "Runtimes" msgstr "Runtimes" -#: judge/views/notification.py:40 +#: judge/views/notification.py:43 #, python-format msgid "Notifications (%d unseen)" msgstr "Thông báo (%d chưa xem)" -#: judge/views/organization.py:59 judge/views/organization.py:62 +#: judge/views/organization.py:93 judge/views/organization.py:99 msgid "No such organization" msgstr "Không có tổ chức như vậy" -#: judge/views/organization.py:60 +#: judge/views/organization.py:94 #, python-format msgid "Could not find an organization with the key \"%s\"." msgstr "Không tìm thấy tổ chức với mã \"%s\"." -#: judge/views/organization.py:63 +#: judge/views/organization.py:100 msgid "Could not find such organization." msgstr "" -#: judge/views/organization.py:79 judge/views/register.py:34 +#: judge/views/organization.py:119 judge/views/register.py:49 #: templates/organization/list.html:32 templates/user/import/table_csv.html:9 #: templates/user/user-list-tabs.html:6 msgid "Organizations" msgstr "Tổ chức" -#: judge/views/organization.py:130 +#: judge/views/organization.py:187 #, python-format msgid "%s Members" msgstr "%s Thành viên" -#: judge/views/organization.py:159 judge/views/organization.py:162 -#: judge/views/organization.py:167 +#: judge/views/organization.py:232 judge/views/organization.py:238 +#: judge/views/organization.py:245 msgid "Joining organization" msgstr "Tham gia tổ chức" -#: judge/views/organization.py:159 +#: judge/views/organization.py:233 msgid "You are already in the organization." msgstr "Bạn đã ở trong tổ chức." -#: judge/views/organization.py:162 +#: judge/views/organization.py:238 msgid "This organization is not open." msgstr "Tổ chức này không phải tổ chức mở." -#: judge/views/organization.py:179 +#: judge/views/organization.py:261 msgid "Leaving organization" msgstr "Rời tổ chức" -#: judge/views/organization.py:179 +#: judge/views/organization.py:262 #, python-format msgid "You are not in \"%s\"." msgstr "Bạn không ở trong \"%s\"." -#: judge/views/organization.py:203 +#: judge/views/organization.py:287 #, python-format msgid "Request to join %s" msgstr "Đăng ký tham gia %s" -#: judge/views/organization.py:221 +#: judge/views/organization.py:312 msgid "Join request detail" msgstr "Chi tiết đơn đăng ký" -#: judge/views/organization.py:254 +#: judge/views/organization.py:360 #, python-format msgid "Managing join requests for %s" msgstr "Quản lý đơn đăng ký cho %s" -#: judge/views/organization.py:285 +#: judge/views/organization.py:400 #, python-format msgid "" "Your organization can only receive %d more members. You cannot approve %d " @@ -2716,207 +2716,207 @@ msgstr "" "Tổ chức chỉ có thể chứa %d thành viên. Bạn không thể chấp thuận nhiều hơn %d " "người." -#: judge/views/organization.py:297 +#: judge/views/organization.py:418 #, python-format msgid "Approved %d user." msgid_plural "Approved %d users." msgstr[0] "Đã chấp thuận %d người." -#: judge/views/organization.py:298 +#: judge/views/organization.py:421 #, python-format msgid "Rejected %d user." msgid_plural "Rejected %d users." msgstr[0] "Đã từ chối %d người." -#: judge/views/organization.py:328 +#: judge/views/organization.py:455 #, python-format msgid "Editing %s" msgstr "Đang chỉnh sửa %s" -#: judge/views/organization.py:352 judge/views/organization.py:360 +#: judge/views/organization.py:482 judge/views/organization.py:496 msgid "Can't edit organization" msgstr "Không thể chỉnh sửa tổ chức" -#: judge/views/organization.py:353 +#: judge/views/organization.py:483 msgid "You are not allowed to edit this organization." msgstr "Bạn không được phép chỉnh sửa tổ chức này." -#: judge/views/organization.py:361 +#: judge/views/organization.py:497 msgid "You are not allowed to kick people from this organization." msgstr "Bạn không được phép đuổi người." -#: judge/views/organization.py:366 judge/views/organization.py:370 +#: judge/views/organization.py:506 judge/views/organization.py:514 msgid "Can't kick user" msgstr "Không thể đuổi" -#: judge/views/organization.py:367 +#: judge/views/organization.py:507 msgid "The user you are trying to kick does not exist!" msgstr "" -#: judge/views/organization.py:371 +#: judge/views/organization.py:515 #, python-format msgid "The user you are trying to kick is not in organization: %s." msgstr "" -#: judge/views/problem.py:70 +#: judge/views/problem.py:108 msgid "No such problem" msgstr "Không có bài nào như vậy" -#: judge/views/problem.py:71 +#: judge/views/problem.py:109 #, python-format msgid "Could not find a problem with the code \"%s\"." msgstr "Không tìm thấy bài tập với mã bài \"%s\"." -#: judge/views/problem.py:115 +#: judge/views/problem.py:169 #, python-brace-format msgid "Editorial for {0}" msgstr "Hướng dẫn cho {0}" -#: judge/views/problem.py:118 +#: judge/views/problem.py:173 #, python-brace-format msgid "Editorial for {0}" msgstr "Hướng dẫn cho {0}" -#: judge/views/problem.py:343 templates/contest/contest.html:79 +#: judge/views/problem.py:463 templates/contest/contest.html:79 #: templates/user/user-about.html:28 templates/user/user-tabs.html:5 #: templates/user/users-table.html:29 msgid "Problems" msgstr "Bài tập" -#: judge/views/problem.py:602 +#: judge/views/problem.py:815 msgid "Problem feed" msgstr "Bài tập" -#: judge/views/problem.py:756 +#: judge/views/problem.py:1027 msgid "Banned from submitting" msgstr "Bị cấm nộp bài" -#: judge/views/problem.py:757 +#: judge/views/problem.py:1029 msgid "" "You have been declared persona non grata for this problem. You are " "permanently barred from submitting this problem." msgstr "Bạn đã bị cấm nộp bài này." -#: judge/views/problem.py:771 +#: judge/views/problem.py:1052 msgid "Too many submissions" msgstr "Quá nhiều lần nộp" -#: judge/views/problem.py:772 +#: judge/views/problem.py:1054 msgid "You have exceeded the submission limit for this problem." msgstr "Bạn đã vượt quá số lần nộp cho bài này." -#: judge/views/problem.py:832 judge/views/problem.py:835 +#: judge/views/problem.py:1133 judge/views/problem.py:1138 #, python-format msgid "Submit to %(problem)s" msgstr "Nộp bài cho %(problem)s" -#: judge/views/problem.py:850 +#: judge/views/problem.py:1160 msgid "Clone Problem" msgstr "Nhân bản bài tập" -#: judge/views/problem_data.py:48 +#: judge/views/problem_data.py:68 msgid "Checker arguments must be a JSON object" msgstr "" -#: judge/views/problem_data.py:50 +#: judge/views/problem_data.py:70 msgid "Checker arguments is invalid JSON" msgstr "" -#: judge/views/problem_data.py:57 +#: judge/views/problem_data.py:77 msgid "Your zip file is invalid!" msgstr "File Zip không hợp lệ!" -#: judge/views/problem_data.py:120 +#: judge/views/problem_data.py:157 #, 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:123 +#: judge/views/problem_data.py:161 #, 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:158 +#: judge/views/problem_data.py:198 #, python-brace-format msgid "Editing data for {0}" msgstr "Chỉnh sửa dữ liệu cho {0}" -#: judge/views/problem_data.py:161 +#: judge/views/problem_data.py:202 #, python-format msgid "Editing data for %s" msgstr "Chỉnh sửa dữ liệu cho %s" -#: judge/views/problem_data.py:253 judge/views/problem_data.py:254 +#: judge/views/problem_data.py:332 judge/views/problem_data.py:334 #, python-format msgid "Generated init.yml for %s" msgstr "File init.yml cho %s" -#: judge/views/problem_manage.py:52 judge/views/problem_manage.py:55 +#: judge/views/problem_manage.py:57 judge/views/problem_manage.py:61 #, python-format msgid "Managing submissions for %s" msgstr "Quản lý bài nộp cho %s" -#: judge/views/problem_manage.py:97 +#: judge/views/problem_manage.py:120 #, python-format msgid "Rejudging selected submissions for %s..." msgstr "Đang chấm lại các bài nộp cho %s..." -#: judge/views/problem_manage.py:141 +#: judge/views/problem_manage.py:181 #, python-format msgid "Rescoring all submissions for %s..." msgstr "Đang tính điểm lại các bài nộp cho %s..." -#: judge/views/problem_manage.py:150 +#: judge/views/problem_manage.py:196 #, python-format msgid "Successfully scheduled %d submission for rejudging." msgid_plural "Successfully scheduled %d submissions for rejudging." msgstr[0] "Đã lên lịch chấm lại cho %d bài nộp." -#: judge/views/ranked_submission.py:58 +#: judge/views/ranked_submission.py:67 #, python-format msgid "Best solutions for %s" msgstr "Các bài nộp tốt nhất cho %s" -#: judge/views/ranked_submission.py:61 +#: judge/views/ranked_submission.py:71 #, python-brace-format msgid "Best solutions for {0}" msgstr "Các bài nộp tốt nhất cho {0}" -#: judge/views/ranked_submission.py:71 +#: judge/views/ranked_submission.py:83 #, python-format msgid "Best solutions for %(problem)s in %(contest)s" msgstr "Các bài nộp tốt nhất cho %(problem)s trong %(contest)s" -#: judge/views/ranked_submission.py:74 +#: judge/views/ranked_submission.py:87 #, python-format msgid "Best solutions for problem %(number)s in %(contest)s" msgstr "Các bài nộp tốt nhất cho bài %(number)s trong %(contest)s" -#: judge/views/ranked_submission.py:80 +#: judge/views/ranked_submission.py:95 #, python-brace-format msgid "Best solutions for {0} in {2}" msgstr "" "Các bài nộp tốt nhất cho {0} trong {2}" -#: judge/views/ranked_submission.py:83 +#: judge/views/ranked_submission.py:102 #, python-brace-format msgid "Best solutions for problem {0} in {1}" msgstr "Các bài nộp tốt nhất cho bài {0} trong {1}" -#: judge/views/register.py:27 +#: judge/views/register.py:33 msgid "A username must contain letters, numbers, or underscores" msgstr "Tên đăng nhập phải chứa ký tự, chữ số, hoặc dấu gạch dưới" -#: judge/views/register.py:31 templates/user/edit-profile.html:120 +#: judge/views/register.py:43 templates/user/edit-profile.html:120 msgid "Preferred language" msgstr "Ngôn ngữ ưa thích" -#: judge/views/register.py:38 +#: judge/views/register.py:56 msgid "Subscribe to newsletter?" msgstr "Đăng ký để nhận thông báo?" -#: judge/views/register.py:55 +#: judge/views/register.py:79 #, python-format msgid "" "The email address \"%s\" is already taken. Only one registration is allowed " @@ -2924,7 +2924,7 @@ msgid "" msgstr "" "Email \"%s\" đã được sử dụng. Mỗi email chỉ có thể đăng ký một tài khoản." -#: judge/views/register.py:61 +#: judge/views/register.py:91 msgid "" "Your email provider is not allowed due to history of abuse. Please use a " "reputable email provider." @@ -2932,69 +2932,69 @@ msgstr "" "Your email provider is not allowed due to history of abuse. Please use a " "reputable email provider." -#: judge/views/register.py:67 judge/views/register.py:105 +#: judge/views/register.py:99 judge/views/register.py:140 msgid "Registration" msgstr "Đăng ký" -#: judge/views/register.py:116 +#: judge/views/register.py:154 msgid "Authentication failure" msgstr "Xác thực thất bại" -#: judge/views/stats.py:67 +#: judge/views/stats.py:99 msgid "Language statistics" msgstr "Thống kê ngôn ngữ" -#: judge/views/status.py:24 templates/submission/list.html:313 +#: judge/views/status.py:27 templates/submission/list.html:313 msgid "Status" msgstr "Kết quả chấm" -#: judge/views/status.py:107 +#: judge/views/status.py:120 msgid "Version matrix" msgstr "Ma trận phiên bản" -#: judge/views/submission.py:88 judge/views/submission.py:95 +#: judge/views/submission.py:112 judge/views/submission.py:120 #, python-format msgid "Submission of %(problem)s by %(user)s" msgstr "Bài nộp của %(user)s cho bài %(problem)s" -#: judge/views/submission.py:248 judge/views/submission.py:249 +#: judge/views/submission.py:285 judge/views/submission.py:286 #: templates/problem/problem.html:194 msgid "All submissions" msgstr "Tất cả bài nộp" -#: judge/views/submission.py:410 +#: judge/views/submission.py:475 msgid "All my submissions" msgstr "Tất cả bài nộp của tôi" -#: judge/views/submission.py:411 +#: judge/views/submission.py:476 #, python-format msgid "All submissions by %s" msgstr "Tất cả bài nộp của %s" -#: judge/views/submission.py:442 +#: judge/views/submission.py:521 #, python-format msgid "All submissions for %s" msgstr "Tất cả bài nộp cho %s" -#: judge/views/submission.py:461 +#: judge/views/submission.py:543 msgid "Must pass a problem" msgstr "Phải làm được một bài" -#: judge/views/submission.py:507 +#: judge/views/submission.py:601 #, python-format msgid "My submissions for %(problem)s" msgstr "Bài nộp của tôi cho %(problem)s" -#: judge/views/submission.py:508 +#: judge/views/submission.py:602 #, python-format msgid "%(user)s's submissions for %(problem)s" msgstr "Các bài nộp của %(user)s cho %(problem)s" -#: judge/views/submission.py:609 +#: judge/views/submission.py:732 msgid "Must pass a contest" msgstr "Phải qua một kỳ thi" -#: judge/views/submission.py:628 +#: judge/views/submission.py:760 #, python-brace-format msgid "" "{0}'s submissions for {2} in {0} cho {2} trong {4}" -#: judge/views/submission.py:635 +#: judge/views/submission.py:772 #, python-brace-format msgid "" "{0}'s submissions for problem {2} in {3}" @@ -3012,44 +3012,44 @@ msgstr "" "Các bài nộp của {0} cho bài {2} trong {3}" "" -#: judge/views/ticket.py:50 judge/views/ticket.py:56 +#: judge/views/ticket.py:65 judge/views/ticket.py:71 msgid "Ticket title" msgstr "Tiêu đề báo cáo" -#: judge/views/ticket.py:107 judge/views/ticket.py:110 +#: judge/views/ticket.py:129 judge/views/ticket.py:133 #, python-format msgid "New ticket for %s" msgstr "Báo cáo mới cho %s" -#: judge/views/ticket.py:170 +#: judge/views/ticket.py:210 #, python-format msgid "%(title)s - Ticket %(id)d" msgstr "%(title)s - Báo cáo %(id)d" -#: judge/views/ticket.py:279 +#: judge/views/ticket.py:339 #, python-format msgid "Tickets - Page %(number)d of %(total)d" msgstr "Báo cáo - Trang %(number)d trên %(total)d" -#: judge/views/ticket.py:328 +#: judge/views/ticket.py:405 #, python-format msgid "New Ticket: %s" msgstr "Báo cáo mới: %s" -#: judge/views/ticket.py:329 +#: judge/views/ticket.py:408 #, python-format msgid "#%(id)d, assigned to: %(users)s" msgstr "#%(id)d, được phân cho: %(users)s" -#: judge/views/ticket.py:331 +#: judge/views/ticket.py:412 msgid ", " msgstr ", " -#: judge/views/ticket.py:331 +#: judge/views/ticket.py:417 msgid "no one" msgstr "không người nào" -#: judge/views/ticket.py:351 +#: judge/views/ticket.py:444 #, python-format msgid "New Ticket Message For: %s" msgstr "Tin nhắn báo cáo mới cho: %s" @@ -3058,64 +3058,64 @@ msgstr "Tin nhắn báo cáo mới cho: %s" msgid "Enable Two Factor Authentication" msgstr "Kích hoạt Two Factor Authentication" -#: judge/views/totp.py:89 templates/registration/totp_disable.html:48 +#: judge/views/totp.py:93 templates/registration/totp_disable.html:48 msgid "Disable Two Factor Authentication" msgstr "Hủy kích hoạt Two Factor Authentication" -#: judge/views/totp.py:105 +#: judge/views/totp.py:109 msgid "Perform Two Factor Authentication" msgstr "Thực hiện Two Factor Authentication" -#: judge/views/user.py:74 +#: judge/views/user.py:89 msgid "No such user" msgstr "Không người dùng nào như vậy" -#: judge/views/user.py:74 +#: judge/views/user.py:90 #, python-format msgid "No user handle \"%s\"." msgstr "Không tồn tại tên người dùng \"%s\"." -#: judge/views/user.py:78 +#: judge/views/user.py:95 msgid "My account" msgstr "Tài khoản của tôi" -#: judge/views/user.py:79 +#: judge/views/user.py:97 #, python-format msgid "User %s" msgstr "Thành viên %s" -#: judge/views/user.py:149 +#: judge/views/user.py:195 msgid "M j, Y" msgstr "j M, Y" -#: judge/views/user.py:172 +#: judge/views/user.py:230 msgid "M j, Y, G:i" msgstr "j M, Y, G:i" -#: judge/views/user.py:291 +#: judge/views/user.py:392 msgid "Updated on site" msgstr "Được cập nhật trên web" -#: judge/views/user.py:326 templates/admin/auth/user/change_form.html:14 +#: judge/views/user.py:446 templates/admin/auth/user/change_form.html:14 #: templates/admin/auth/user/change_form.html:17 templates/base.html:264 #: templates/user/user-tabs.html:10 msgid "Edit profile" msgstr "Chỉnh sửa thông tin" -#: judge/views/user.py:335 templates/user/user-list-tabs.html:4 +#: judge/views/user.py:457 templates/user/user-list-tabs.html:4 msgid "Leaderboard" msgstr "Bảng xếp hạng" -#: judge/views/user.py:410 +#: judge/views/user.py:553 msgid "Import Users" msgstr "" -#: judge/views/widgets.py:48 judge/views/widgets.py:58 +#: judge/views/widgets.py:69 judge/views/widgets.py:85 #, python-format msgid "Invalid upstream data: %s" msgstr "Dữ liệu không hợp lệ: %s" -#: judge/views/widgets.py:68 +#: judge/views/widgets.py:99 msgid "Bad latitude or longitude" msgstr "Kinh độ / Vĩ độ không hợp lệ" @@ -3307,7 +3307,7 @@ msgstr "Chỉnh sửa thông tin" msgid "Rejudge" msgstr "Chấm lại" -#: templates/base.html:230 templates/chat/chat.html:573 +#: templates/base.html:230 templates/chat/chat.html:578 msgid "Chat" msgstr "Chat" @@ -3323,7 +3323,7 @@ msgstr "Xin chào, %(username)s." #: templates/base.html:259 templates/chat/chat.html:20 #: templates/comments/list.html:89 templates/contest/contest-list-tabs.html:24 #: templates/contest/ranking-table.html:53 templates/internal/base.html:59 -#: templates/problem/list.html:263 templates/problem/problem-list-tabs.html:6 +#: templates/problem/list.html:249 templates/problem/problem-list-tabs.html:6 #: templates/submission/info-base.html:12 #: templates/submission/submission-list-tabs.html:15 msgid "Admin" @@ -3412,7 +3412,7 @@ msgstr "Sự kiện" msgid "You have no ticket" msgstr "Bạn không có báo cáo" -#: templates/blog/list.html:94 templates/problem/list.html:409 +#: templates/blog/list.html:94 templates/problem/list.html:392 #: templates/problem/problem.html:407 msgid "Clarifications" msgstr "Thông báo" @@ -3421,7 +3421,7 @@ msgstr "Thông báo" msgid "Add" msgstr "Thêm mới" -#: templates/blog/list.html:119 templates/problem/list.html:431 +#: templates/blog/list.html:119 templates/problem/list.html:414 #: templates/problem/problem.html:418 msgid "No clarifications have been made at this time." msgstr "Không có thông báo nào." @@ -3458,28 +3458,28 @@ msgstr "Bạn bè" msgid "Other" msgstr "Thành viên khác" -#: templates/chat/chat.html:166 +#: templates/chat/chat.html:168 msgid "New message(s)" msgstr "Tin nhắn mới" -#: templates/chat/chat.html:514 templates/chat/chat.html:595 +#: templates/chat/chat.html:519 templates/chat/chat.html:600 #: templates/user/base-users.html:14 templates/user/base-users.html:80 msgid "Search by handle..." msgstr "Tìm kiếm theo tên..." -#: templates/chat/chat.html:575 templates/chat/chat.html:582 +#: templates/chat/chat.html:580 templates/chat/chat.html:587 msgid "Online Users" msgstr "Trực tuyến" -#: templates/chat/chat.html:583 +#: templates/chat/chat.html:588 msgid "Refresh" msgstr "Làm mới" -#: templates/chat/chat.html:616 +#: templates/chat/chat.html:621 msgid "Emoji" msgstr "" -#: templates/chat/chat.html:617 +#: templates/chat/chat.html:622 msgid "Enter your message" msgstr "Nhập tin nhắn" @@ -3659,7 +3659,7 @@ msgstr "Hôm nay" msgid "Next" msgstr "Tiếp" -#: templates/contest/contest-list-tabs.html:21 templates/problem/list.html:262 +#: templates/contest/contest-list-tabs.html:21 templates/problem/list.html:248 #: templates/problem/problem-list-tabs.html:5 msgid "List" msgstr "Danh sách" @@ -3766,8 +3766,8 @@ msgid "" "%(time_limit)s window between %(start_time)s and " "%(end_time)s" msgstr "" -"Kéo dài %(time_limit)s từ %(start_time)s đến " -"%(end_time)s" +"Kéo dài %(time_limit)s từ %(start_time)s đến %(end_time)s" #: templates/contest/contest.html:63 #, python-format @@ -3780,12 +3780,12 @@ msgstr "Tỷ lệ AC" #: templates/contest/contest.html:86 templates/contest/list.html:236 #: templates/contest/list.html:290 templates/contest/list.html:370 -#: templates/problem/list.html:285 templates/problem/list.html:316 +#: templates/problem/list.html:270 templates/problem/list.html:299 msgid "Users" msgstr "Số lượng" -#: templates/contest/contest.html:111 templates/problem/list.html:320 -#: templates/problem/list.html:392 +#: templates/contest/contest.html:111 templates/problem/list.html:303 +#: templates/problem/list.html:375 msgid "Editorial" msgstr "Hướng dẫn" @@ -3805,7 +3805,7 @@ msgstr "" msgid "Show" msgstr "Hiển thị" -#: templates/contest/list.html:102 templates/problem/list.html:111 +#: templates/contest/list.html:102 templates/problem/list.html:95 msgid "Organizations..." msgstr "Tổ chức..." @@ -4049,8 +4049,8 @@ msgstr "" msgid "Thinking" msgstr "Bảng xếp hạng" -#: templates/internal/base.html:78 templates/problem/list.html:282 -#: templates/problem/list.html:306 +#: templates/internal/base.html:78 templates/problem/list.html:267 +#: templates/problem/list.html:289 msgid "Types" msgstr "Dạng" @@ -4274,7 +4274,7 @@ msgid "There are no requests to approve." msgstr "Không có đơn đăng ký." #: templates/organization/requests/pending.html:17 -#: templates/problem/data.html:477 +#: templates/problem/data.html:479 msgid "Delete?" msgstr "Xóa?" @@ -4310,35 +4310,35 @@ msgstr "Đuổi" msgid "Enter a new code for the cloned problem:" msgstr "Nhập mã bài mới cho bài tập được nhân bản:" -#: templates/problem/data.html:147 +#: templates/problem/data.html:149 msgid "Instruction" msgstr "Hướng dẫn" -#: templates/problem/data.html:435 +#: templates/problem/data.html:437 msgid "View YAML" msgstr "Xem YAML" -#: templates/problem/data.html:466 templates/problem/data.html:517 +#: templates/problem/data.html:468 templates/problem/data.html:519 msgid "Apply!" msgstr "Lưu!" -#: templates/problem/data.html:471 +#: templates/problem/data.html:473 msgid "Type" msgstr "Kiểu" -#: templates/problem/data.html:472 +#: templates/problem/data.html:474 msgid "Input file" msgstr "File Input" -#: templates/problem/data.html:473 +#: templates/problem/data.html:475 msgid "Output file" msgstr "File Output" -#: templates/problem/data.html:475 +#: templates/problem/data.html:477 msgid "Pretest?" msgstr "Pretest?" -#: templates/problem/data.html:518 +#: templates/problem/data.html:520 msgid "Add new case" msgstr "Thêm test mới" @@ -4375,7 +4375,7 @@ msgstr "Tổng điểm" msgid "Thinking point" msgstr "Độ khó nghĩ" -#: templates/problem/feed.html:70 templates/problem/search-form.html:63 +#: templates/problem/feed.html:70 templates/problem/search-form.html:73 msgid "Problem types" msgstr "Dạng bài" @@ -4383,49 +4383,49 @@ msgstr "Dạng bài" msgid "Any additional note here" msgstr "Lưu ý thêm cho admin" -#: templates/problem/list.html:109 +#: templates/problem/list.html:93 msgid "Filter by type..." msgstr "Lọc theo dạng..." -#: templates/problem/list.html:166 templates/problem/list.html:192 +#: templates/problem/list.html:152 templates/problem/list.html:178 msgid "Add types..." msgstr "Thêm dạng" -#: templates/problem/list.html:208 +#: templates/problem/list.html:194 msgid "Fail to vote!" msgstr "Hệ thống lỗi!" -#: templates/problem/list.html:211 +#: templates/problem/list.html:197 msgid "Successful vote! Thank you!" msgstr "Đã gửi thành công! Cảm ơn bạn!" -#: templates/problem/list.html:261 +#: templates/problem/list.html:247 msgid "Feed" msgstr "Gợi ý" -#: templates/problem/list.html:280 templates/problem/list.html:302 -#: templates/problem/search-form.html:46 templates/user/user-problems.html:57 +#: templates/problem/list.html:285 templates/problem/search-form.html:56 +#: templates/user/user-problems.html:57 msgid "Category" msgstr "Nhóm" -#: templates/problem/list.html:313 +#: templates/problem/list.html:296 #, python-format msgid "AC %%" msgstr "AC %%" -#: templates/problem/list.html:404 +#: templates/problem/list.html:387 msgid "Add clarifications" msgstr "Thêm thông báo" -#: templates/problem/list.html:440 +#: templates/problem/list.html:423 msgid "FOR YOU" msgstr "DÀNH CHO BẠN" -#: templates/problem/list.html:443 +#: templates/problem/list.html:426 msgid "NEW" msgstr "MỚI NHẤT" -#: templates/problem/list.html:447 +#: templates/problem/list.html:430 msgid "VOLUNTEER" msgstr "TÌNH NGUYỆN" @@ -4637,6 +4637,10 @@ msgstr "Giới hạn thời gian:" msgid "Memory Limit:" msgstr "Giới hạn bộ nhớ:" +#: templates/problem/recent-attempt.html:2 +msgid "Last unsolved" +msgstr "Nộp gần đây" + #: templates/problem/search-form.html:2 msgid "Problem search" msgstr "Tìm kiếm bài tập" @@ -4661,21 +4665,27 @@ msgstr "Hiển thị hướng dẫn" msgid "Have editorial" msgstr "Có hướng dẫn" -#: templates/problem/search-form.html:49 templates/problem/search-form.html:51 +#: templates/problem/search-form.html:46 +#, fuzzy +#| msgid "Authors" +msgid "Author" +msgstr "Các tác giả" + +#: templates/problem/search-form.html:59 templates/problem/search-form.html:61 #: templates/submission/submission-list-tabs.html:4 msgid "All" msgstr "Tất cả" -#: templates/problem/search-form.html:74 +#: templates/problem/search-form.html:84 msgid "Point range" msgstr "Mốc điểm" -#: templates/problem/search-form.html:80 templates/submission/list.html:331 +#: templates/problem/search-form.html:90 templates/submission/list.html:331 #: templates/ticket/list.html:248 msgid "Go" msgstr "Lọc" -#: templates/problem/search-form.html:81 +#: templates/problem/search-form.html:91 msgid "Random" msgstr "Ngẫu nhiên" diff --git a/templates/problem/list.html b/templates/problem/list.html index 316d466..ba5ba04 100644 --- a/templates/problem/list.html +++ b/templates/problem/list.html @@ -10,17 +10,15 @@ {% if not request.in_contest_mode %}