Rename problem data fields
This commit is contained in:
parent
acdf94a8c9
commit
5e72b472e6
8 changed files with 277 additions and 170 deletions
75
judge/migrations/0182_rename_customcpp.py
Normal file
75
judge/migrations/0182_rename_customcpp.py
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
# Generated by Django 3.2.18 on 2024-03-19 04:28
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_checker(apps, schema_editor):
|
||||||
|
ProblemData = apps.get_model("judge", "ProblemData")
|
||||||
|
ProblemTestCase = apps.get_model("judge", "ProblemTestCase")
|
||||||
|
|
||||||
|
for p in ProblemData.objects.all():
|
||||||
|
if p.checker == "customval":
|
||||||
|
p.checker = "customcpp"
|
||||||
|
p.save()
|
||||||
|
|
||||||
|
for p in ProblemTestCase.objects.all():
|
||||||
|
if p.checker == "customval":
|
||||||
|
p.checker = "customcpp"
|
||||||
|
p.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("judge", "0181_remove_math_engine"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RunPython(migrate_checker, migrations.RunPython.noop, atomic=True),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="problemdata",
|
||||||
|
name="checker",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True,
|
||||||
|
choices=[
|
||||||
|
("standard", "Standard"),
|
||||||
|
("floats", "Floats"),
|
||||||
|
("floatsabs", "Floats (absolute)"),
|
||||||
|
("floatsrel", "Floats (relative)"),
|
||||||
|
("rstripped", "Non-trailing spaces"),
|
||||||
|
("sorted", "Unordered"),
|
||||||
|
("identical", "Byte identical"),
|
||||||
|
("linecount", "Line-by-line"),
|
||||||
|
("custom", "Custom checker (PY)"),
|
||||||
|
("customcpp", "Custom checker (CPP)"),
|
||||||
|
("interact", "Interactive"),
|
||||||
|
("testlib", "Testlib"),
|
||||||
|
],
|
||||||
|
max_length=10,
|
||||||
|
verbose_name="checker",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name="problemtestcase",
|
||||||
|
name="checker",
|
||||||
|
field=models.CharField(
|
||||||
|
blank=True,
|
||||||
|
choices=[
|
||||||
|
("standard", "Standard"),
|
||||||
|
("floats", "Floats"),
|
||||||
|
("floatsabs", "Floats (absolute)"),
|
||||||
|
("floatsrel", "Floats (relative)"),
|
||||||
|
("rstripped", "Non-trailing spaces"),
|
||||||
|
("sorted", "Unordered"),
|
||||||
|
("identical", "Byte identical"),
|
||||||
|
("linecount", "Line-by-line"),
|
||||||
|
("custom", "Custom checker (PY)"),
|
||||||
|
("customcpp", "Custom checker (CPP)"),
|
||||||
|
("interact", "Interactive"),
|
||||||
|
("testlib", "Testlib"),
|
||||||
|
],
|
||||||
|
max_length=10,
|
||||||
|
verbose_name="checker",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
]
|
45
judge/migrations/0183_rename_custom_checker_cpp.py
Normal file
45
judge/migrations/0183_rename_custom_checker_cpp.py
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
# Generated by Django 3.2.18 on 2024-03-19 04:45
|
||||||
|
|
||||||
|
import django.core.validators
|
||||||
|
from django.db import migrations, models
|
||||||
|
import judge.models.problem_data
|
||||||
|
import judge.utils.problem_data
|
||||||
|
|
||||||
|
|
||||||
|
def migrate_checker(apps, schema_editor):
|
||||||
|
ProblemData = apps.get_model("judge", "ProblemData")
|
||||||
|
|
||||||
|
for p in ProblemData.objects.all():
|
||||||
|
p.custom_checker_cpp = p.custom_validator
|
||||||
|
p.save()
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
("judge", "0182_rename_customcpp"),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AddField(
|
||||||
|
model_name="problemdata",
|
||||||
|
name="custom_checker_cpp",
|
||||||
|
field=models.FileField(
|
||||||
|
blank=True,
|
||||||
|
null=True,
|
||||||
|
storage=judge.utils.problem_data.ProblemDataStorage(),
|
||||||
|
upload_to=judge.models.problem_data.problem_directory_file,
|
||||||
|
validators=[
|
||||||
|
django.core.validators.FileExtensionValidator(
|
||||||
|
allowed_extensions=["cpp"]
|
||||||
|
)
|
||||||
|
],
|
||||||
|
verbose_name="custom cpp checker file",
|
||||||
|
),
|
||||||
|
),
|
||||||
|
migrations.RunPython(migrate_checker, migrations.RunPython.noop, atomic=True),
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name="problemdata",
|
||||||
|
name="custom_validator",
|
||||||
|
),
|
||||||
|
]
|
|
@ -38,7 +38,7 @@ CHECKERS = (
|
||||||
("identical", _("Byte identical")),
|
("identical", _("Byte identical")),
|
||||||
("linecount", _("Line-by-line")),
|
("linecount", _("Line-by-line")),
|
||||||
("custom", _("Custom checker (PY)")),
|
("custom", _("Custom checker (PY)")),
|
||||||
("customval", _("Custom validator (CPP)")),
|
("customcpp", _("Custom checker (CPP)")),
|
||||||
("interact", _("Interactive")),
|
("interact", _("Interactive")),
|
||||||
("testlib", _("Testlib")),
|
("testlib", _("Testlib")),
|
||||||
)
|
)
|
||||||
|
@ -90,8 +90,8 @@ class ProblemData(models.Model):
|
||||||
upload_to=problem_directory_file,
|
upload_to=problem_directory_file,
|
||||||
validators=[FileExtensionValidator(allowed_extensions=["py"])],
|
validators=[FileExtensionValidator(allowed_extensions=["py"])],
|
||||||
)
|
)
|
||||||
custom_validator = models.FileField(
|
custom_checker_cpp = models.FileField(
|
||||||
verbose_name=_("custom validator file"),
|
verbose_name=_("custom cpp checker file"),
|
||||||
storage=problem_data_storage,
|
storage=problem_data_storage,
|
||||||
null=True,
|
null=True,
|
||||||
blank=True,
|
blank=True,
|
||||||
|
@ -186,9 +186,9 @@ class ProblemData(models.Model):
|
||||||
self.custom_checker.name = problem_directory_file_helper(
|
self.custom_checker.name = problem_directory_file_helper(
|
||||||
new, self.custom_checker.name
|
new, self.custom_checker.name
|
||||||
)
|
)
|
||||||
if self.custom_validator:
|
if self.custom_checker_cpp:
|
||||||
self.custom_validator.name = problem_directory_file_helper(
|
self.custom_checker_cpp.name = problem_directory_file_helper(
|
||||||
new, self.custom_validator.name
|
new, self.custom_checker_cpp.name
|
||||||
)
|
)
|
||||||
if self.interactive_judge:
|
if self.interactive_judge:
|
||||||
self.interactive_judge.name = problem_directory_file_helper(
|
self.interactive_judge.name = problem_directory_file_helper(
|
||||||
|
|
|
@ -82,8 +82,8 @@ class ProblemDataCompiler(object):
|
||||||
)
|
)
|
||||||
return custom_checker_path[1]
|
return custom_checker_path[1]
|
||||||
|
|
||||||
if case.checker == "customval":
|
if case.checker == "customcpp":
|
||||||
custom_checker_path = split_path_first(case.custom_validator.name)
|
custom_checker_path = split_path_first(case.custom_checker_cpp.name)
|
||||||
if len(custom_checker_path) != 2:
|
if len(custom_checker_path) != 2:
|
||||||
raise ProblemDataError(
|
raise ProblemDataError(
|
||||||
_("How did you corrupt the custom checker path?")
|
_("How did you corrupt the custom checker path?")
|
||||||
|
@ -98,7 +98,7 @@ class ProblemDataCompiler(object):
|
||||||
}
|
}
|
||||||
|
|
||||||
if case.checker == "testlib":
|
if case.checker == "testlib":
|
||||||
custom_checker_path = split_path_first(case.custom_validator.name)
|
custom_checker_path = split_path_first(case.custom_checker_cpp.name)
|
||||||
if len(custom_checker_path) != 2:
|
if len(custom_checker_path) != 2:
|
||||||
raise ProblemDataError(
|
raise ProblemDataError(
|
||||||
_("How did you corrupt the custom checker path?")
|
_("How did you corrupt the custom checker path?")
|
||||||
|
|
|
@ -89,7 +89,7 @@ class ProblemDataForm(ModelForm):
|
||||||
"checker",
|
"checker",
|
||||||
"checker_args",
|
"checker_args",
|
||||||
"custom_checker",
|
"custom_checker",
|
||||||
"custom_validator",
|
"custom_checker_cpp",
|
||||||
"interactive_judge",
|
"interactive_judge",
|
||||||
"fileio_input",
|
"fileio_input",
|
||||||
"fileio_output",
|
"fileio_output",
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: lqdoj2\n"
|
"Project-Id-Version: lqdoj2\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-02-27 03:20+0700\n"
|
"POT-Creation-Date: 2024-03-19 11:51+0700\n"
|
||||||
"PO-Revision-Date: 2021-07-20 03:44\n"
|
"PO-Revision-Date: 2021-07-20 03:44\n"
|
||||||
"Last-Translator: Icyene\n"
|
"Last-Translator: Icyene\n"
|
||||||
"Language-Team: Vietnamese\n"
|
"Language-Team: Vietnamese\n"
|
||||||
|
@ -25,7 +25,7 @@ msgstr "xem lần cuối"
|
||||||
#: chat_box/models.py:54 chat_box/models.py:79 chat_box/models.py:95
|
#: chat_box/models.py:54 chat_box/models.py:79 chat_box/models.py:95
|
||||||
#: judge/admin/interface.py:150 judge/models/contest.py:647
|
#: judge/admin/interface.py:150 judge/models/contest.py:647
|
||||||
#: judge/models/contest.py:853 judge/models/course.py:129
|
#: judge/models/contest.py:853 judge/models/course.py:129
|
||||||
#: judge/models/profile.py:419 judge/models/profile.py:493
|
#: judge/models/profile.py:412 judge/models/profile.py:486
|
||||||
msgid "user"
|
msgid "user"
|
||||||
msgstr "người dùng"
|
msgstr "người dùng"
|
||||||
|
|
||||||
|
@ -59,11 +59,11 @@ msgstr "Gần đây"
|
||||||
msgid "Admin"
|
msgid "Admin"
|
||||||
msgstr "Admin"
|
msgstr "Admin"
|
||||||
|
|
||||||
#: dmoj/settings.py:367
|
#: dmoj/settings.py:366
|
||||||
msgid "Vietnamese"
|
msgid "Vietnamese"
|
||||||
msgstr "Tiếng Việt"
|
msgstr "Tiếng Việt"
|
||||||
|
|
||||||
#: dmoj/settings.py:368
|
#: dmoj/settings.py:367
|
||||||
msgid "English"
|
msgid "English"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ msgstr ""
|
||||||
msgid "Access"
|
msgid "Access"
|
||||||
msgstr "Truy cập"
|
msgstr "Truy cập"
|
||||||
|
|
||||||
#: judge/admin/contest.py:212 judge/admin/problem.py:220
|
#: judge/admin/contest.py:212 judge/admin/problem.py:233
|
||||||
msgid "Justice"
|
msgid "Justice"
|
||||||
msgstr "Xử phạt"
|
msgstr "Xử phạt"
|
||||||
|
|
||||||
|
@ -225,28 +225,34 @@ msgstr ""
|
||||||
msgid "diff"
|
msgid "diff"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: judge/admin/organization.py:61 judge/admin/problem.py:277
|
#: judge/admin/organization.py:61 judge/admin/problem.py:290
|
||||||
#: judge/admin/profile.py:116
|
#: judge/admin/profile.py:115
|
||||||
msgid "View on site"
|
msgid "View on site"
|
||||||
msgstr "Xem trên trang"
|
msgstr "Xem trên trang"
|
||||||
|
|
||||||
#: judge/admin/problem.py:55
|
#: judge/admin/problem.py:56
|
||||||
msgid "Describe the changes you made (optional)"
|
msgid "Describe the changes you made (optional)"
|
||||||
msgstr "Mô tả các thay đổi (tùy chọn)"
|
msgstr "Mô tả các thay đổi (tùy chọn)"
|
||||||
|
|
||||||
#: judge/admin/problem.py:111
|
#: judge/admin/problem.py:66
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "Problem with code already exists."
|
||||||
|
msgid "A problem with this code already exists."
|
||||||
|
msgstr "Mã bài đã tồn tại."
|
||||||
|
|
||||||
|
#: judge/admin/problem.py:122
|
||||||
msgid "Memory unit"
|
msgid "Memory unit"
|
||||||
msgstr "Đơn vị bộ nhớ"
|
msgstr "Đơn vị bộ nhớ"
|
||||||
|
|
||||||
#: judge/admin/problem.py:213
|
#: judge/admin/problem.py:226
|
||||||
msgid "Social Media"
|
msgid "Social Media"
|
||||||
msgstr "Mạng Xã Hội"
|
msgstr "Mạng Xã Hội"
|
||||||
|
|
||||||
#: judge/admin/problem.py:216
|
#: judge/admin/problem.py:229
|
||||||
msgid "Taxonomy"
|
msgid "Taxonomy"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: judge/admin/problem.py:217 judge/admin/problem.py:450
|
#: judge/admin/problem.py:230 judge/admin/problem.py:463
|
||||||
#: templates/contest/contest.html:121
|
#: templates/contest/contest.html:121
|
||||||
#: templates/contest/contests_summary.html:41 templates/problem/data.html:533
|
#: templates/contest/contests_summary.html:41 templates/problem/data.html:533
|
||||||
#: templates/problem/list.html:22 templates/problem/list.html:48
|
#: templates/problem/list.html:22 templates/problem/list.html:48
|
||||||
|
@ -255,66 +261,66 @@ msgstr ""
|
||||||
msgid "Points"
|
msgid "Points"
|
||||||
msgstr "Điểm"
|
msgstr "Điểm"
|
||||||
|
|
||||||
#: judge/admin/problem.py:218
|
#: judge/admin/problem.py:231
|
||||||
msgid "Limits"
|
msgid "Limits"
|
||||||
msgstr "Giới hạn"
|
msgstr "Giới hạn"
|
||||||
|
|
||||||
#: judge/admin/problem.py:219 judge/admin/submission.py:351
|
#: judge/admin/problem.py:232 judge/admin/submission.py:351
|
||||||
#: templates/base.html:158 templates/stats/tab.html:4
|
#: templates/base.html:158 templates/stats/tab.html:4
|
||||||
#: templates/submission/list.html:346
|
#: templates/submission/list.html:346
|
||||||
msgid "Language"
|
msgid "Language"
|
||||||
msgstr "Ngôn ngữ"
|
msgstr "Ngôn ngữ"
|
||||||
|
|
||||||
#: judge/admin/problem.py:221
|
#: judge/admin/problem.py:234
|
||||||
msgid "History"
|
msgid "History"
|
||||||
msgstr "Lịch sử"
|
msgstr "Lịch sử"
|
||||||
|
|
||||||
#: judge/admin/problem.py:273 templates/problem/list-base.html:95
|
#: judge/admin/problem.py:286 templates/problem/list-base.html:95
|
||||||
msgid "Authors"
|
msgid "Authors"
|
||||||
msgstr "Các tác giả"
|
msgstr "Các tác giả"
|
||||||
|
|
||||||
#: judge/admin/problem.py:294
|
#: judge/admin/problem.py:307
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d problem successfully marked as public."
|
msgid "%d problem successfully marked as public."
|
||||||
msgid_plural "%d problems 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."
|
msgstr[0] "%d bài tập đã được đánh dấu công khai."
|
||||||
|
|
||||||
#: judge/admin/problem.py:301
|
#: judge/admin/problem.py:314
|
||||||
msgid "Mark problems as public"
|
msgid "Mark problems as public"
|
||||||
msgstr "Công khai bài tập"
|
msgstr "Công khai bài tập"
|
||||||
|
|
||||||
#: judge/admin/problem.py:310
|
#: judge/admin/problem.py:323
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d problem successfully marked as private."
|
msgid "%d problem successfully marked as private."
|
||||||
msgid_plural "%d problems 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ư."
|
msgstr[0] "%d bài tập đã được đánh dấu riêng tư."
|
||||||
|
|
||||||
#: judge/admin/problem.py:317
|
#: judge/admin/problem.py:330
|
||||||
msgid "Mark problems as private"
|
msgid "Mark problems as private"
|
||||||
msgstr "Đánh dấu các bài tập là riêng tư"
|
msgstr "Đánh dấu các bài tập là riêng tư"
|
||||||
|
|
||||||
#: judge/admin/problem.py:444 judge/admin/submission.py:314
|
#: judge/admin/problem.py:457 judge/admin/submission.py:314
|
||||||
#: templates/problem/list.html:18 templates/problem/list.html:37
|
#: templates/problem/list.html:18 templates/problem/list.html:37
|
||||||
msgid "Problem code"
|
msgid "Problem code"
|
||||||
msgstr "Mã bài"
|
msgstr "Mã bài"
|
||||||
|
|
||||||
#: judge/admin/problem.py:456 judge/admin/submission.py:320
|
#: judge/admin/problem.py:469 judge/admin/submission.py:320
|
||||||
msgid "Problem name"
|
msgid "Problem name"
|
||||||
msgstr "Tên bài"
|
msgstr "Tên bài"
|
||||||
|
|
||||||
#: judge/admin/problem.py:462
|
#: judge/admin/problem.py:475
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "contest rating"
|
#| msgid "contest rating"
|
||||||
msgid "Voter rating"
|
msgid "Voter rating"
|
||||||
msgstr "rating kỳ thi"
|
msgstr "rating kỳ thi"
|
||||||
|
|
||||||
#: judge/admin/problem.py:468
|
#: judge/admin/problem.py:481
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "Total points"
|
#| msgid "Total points"
|
||||||
msgid "Voter point"
|
msgid "Voter point"
|
||||||
msgstr "Tổng điểm"
|
msgstr "Tổng điểm"
|
||||||
|
|
||||||
#: judge/admin/problem.py:474
|
#: judge/admin/problem.py:487
|
||||||
msgid "Vote"
|
msgid "Vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -322,7 +328,7 @@ msgstr ""
|
||||||
msgid "timezone"
|
msgid "timezone"
|
||||||
msgstr "múi giờ"
|
msgstr "múi giờ"
|
||||||
|
|
||||||
#: judge/admin/profile.py:125 judge/admin/submission.py:327
|
#: judge/admin/profile.py:124 judge/admin/submission.py:327
|
||||||
#: templates/notification/list.html:9
|
#: templates/notification/list.html:9
|
||||||
#: templates/organization/requests/log.html:9
|
#: templates/organization/requests/log.html:9
|
||||||
#: templates/organization/requests/pending.html:19
|
#: templates/organization/requests/pending.html:19
|
||||||
|
@ -330,28 +336,28 @@ msgstr "múi giờ"
|
||||||
msgid "User"
|
msgid "User"
|
||||||
msgstr "Thành viên"
|
msgstr "Thành viên"
|
||||||
|
|
||||||
#: judge/admin/profile.py:131 templates/registration/registration_form.html:40
|
#: judge/admin/profile.py:130 templates/registration/registration_form.html:40
|
||||||
#: templates/user/edit-profile.html:109 templates/user/import/table_csv.html:8
|
#: templates/user/edit-profile.html:109 templates/user/import/table_csv.html:8
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Email"
|
msgstr "Email"
|
||||||
|
|
||||||
#: judge/admin/profile.py:137 judge/views/register.py:36
|
#: judge/admin/profile.py:136 judge/views/register.py:36
|
||||||
#: templates/registration/registration_form.html:68
|
#: templates/registration/registration_form.html:68
|
||||||
#: templates/user/edit-profile.html:133
|
#: templates/user/edit-profile.html:133
|
||||||
msgid "Timezone"
|
msgid "Timezone"
|
||||||
msgstr "Múi giờ"
|
msgstr "Múi giờ"
|
||||||
|
|
||||||
#: judge/admin/profile.py:143
|
#: judge/admin/profile.py:142
|
||||||
msgid "date joined"
|
msgid "date joined"
|
||||||
msgstr "ngày tham gia"
|
msgstr "ngày tham gia"
|
||||||
|
|
||||||
#: judge/admin/profile.py:153
|
#: judge/admin/profile.py:152
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%d user have scores recalculated."
|
msgid "%d user have scores recalculated."
|
||||||
msgid_plural "%d users have scores recalculated."
|
msgid_plural "%d users have scores recalculated."
|
||||||
msgstr[0] "%d người dùng đã được tính điểm lại."
|
msgstr[0] "%d người dùng đã được tính điểm lại."
|
||||||
|
|
||||||
#: judge/admin/profile.py:160
|
#: judge/admin/profile.py:159
|
||||||
msgid "Recalculate scores"
|
msgid "Recalculate scores"
|
||||||
msgstr "Tính điểm lại"
|
msgstr "Tính điểm lại"
|
||||||
|
|
||||||
|
@ -544,76 +550,76 @@ msgstr "Báo cáo lỗi"
|
||||||
msgid "Courses"
|
msgid "Courses"
|
||||||
msgstr "Khóa học"
|
msgstr "Khóa học"
|
||||||
|
|
||||||
#: judge/forms.py:112
|
#: judge/forms.py:107
|
||||||
msgid "File size exceeds the maximum allowed limit of 5MB."
|
msgid "File size exceeds the maximum allowed limit of 5MB."
|
||||||
msgstr "File tải lên không được quá 5MB."
|
msgstr "File tải lên không được quá 5MB."
|
||||||
|
|
||||||
#: judge/forms.py:143
|
#: judge/forms.py:138
|
||||||
msgid "Any judge"
|
msgid "Any judge"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: judge/forms.py:343
|
#: judge/forms.py:338
|
||||||
msgid "Enter usernames separating by space"
|
msgid "Enter usernames separating by space"
|
||||||
msgstr "Nhập các tên đăng nhập, cách nhau bởi dấu cách"
|
msgstr "Nhập các tên đăng nhập, cách nhau bởi dấu cách"
|
||||||
|
|
||||||
#: judge/forms.py:344 judge/views/stats.py:166 templates/stats/site.html:27
|
#: judge/forms.py:339 judge/views/stats.py:166 templates/stats/site.html:27
|
||||||
msgid "New users"
|
msgid "New users"
|
||||||
msgstr "Thành viên mới"
|
msgstr "Thành viên mới"
|
||||||
|
|
||||||
#: judge/forms.py:361
|
#: judge/forms.py:356
|
||||||
#, python-brace-format
|
#, python-brace-format
|
||||||
msgid "These usernames don't exist: {usernames}"
|
msgid "These usernames don't exist: {usernames}"
|
||||||
msgstr "Các tên đăng nhập này không tồn tại: {usernames}"
|
msgstr "Các tên đăng nhập này không tồn tại: {usernames}"
|
||||||
|
|
||||||
#: judge/forms.py:421
|
#: judge/forms.py:416
|
||||||
msgid "Username/Email"
|
msgid "Username/Email"
|
||||||
msgstr "Tên đăng nhập / Email"
|
msgstr "Tên đăng nhập / Email"
|
||||||
|
|
||||||
#: judge/forms.py:423 judge/views/email.py:22
|
#: judge/forms.py:418 judge/views/email.py:22
|
||||||
#: templates/registration/registration_form.html:46
|
#: templates/registration/registration_form.html:46
|
||||||
#: templates/registration/registration_form.html:60
|
#: templates/registration/registration_form.html:60
|
||||||
#: templates/user/edit-profile.html:101 templates/user/import/table_csv.html:5
|
#: templates/user/edit-profile.html:101 templates/user/import/table_csv.html:5
|
||||||
msgid "Password"
|
msgid "Password"
|
||||||
msgstr "Mật khẩu"
|
msgstr "Mật khẩu"
|
||||||
|
|
||||||
#: judge/forms.py:449
|
#: judge/forms.py:444
|
||||||
msgid "Two Factor Authentication tokens must be 6 decimal digits."
|
msgid "Two Factor Authentication tokens must be 6 decimal digits."
|
||||||
msgstr "Two Factor Authentication phải chứa 6 chữ số."
|
msgstr "Two Factor Authentication phải chứa 6 chữ số."
|
||||||
|
|
||||||
#: judge/forms.py:462 templates/registration/totp_auth.html:32
|
#: judge/forms.py:457 templates/registration/totp_auth.html:32
|
||||||
msgid "Invalid Two Factor Authentication token."
|
msgid "Invalid Two Factor Authentication token."
|
||||||
msgstr "Token Two Factor Authentication không hợp lệ."
|
msgstr "Token Two Factor Authentication không hợp lệ."
|
||||||
|
|
||||||
#: judge/forms.py:469 judge/models/problem.py:132
|
#: judge/forms.py:464 judge/models/problem.py:132
|
||||||
msgid "Problem code must be ^[a-z0-9]+$"
|
msgid "Problem code must be ^[a-z0-9]+$"
|
||||||
msgstr "Mã bài phải có dạng ^[a-z0-9]+$"
|
msgstr "Mã bài phải có dạng ^[a-z0-9]+$"
|
||||||
|
|
||||||
#: judge/forms.py:476
|
#: judge/forms.py:471
|
||||||
msgid "Problem with code already exists."
|
msgid "Problem with code already exists."
|
||||||
msgstr "Mã bài đã tồn tại."
|
msgstr "Mã bài đã tồn tại."
|
||||||
|
|
||||||
#: judge/forms.py:483 judge/models/contest.py:95
|
#: judge/forms.py:478 judge/models/contest.py:95
|
||||||
msgid "Contest id must be ^[a-z0-9]+$"
|
msgid "Contest id must be ^[a-z0-9]+$"
|
||||||
msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$"
|
msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$"
|
||||||
|
|
||||||
#: judge/forms.py:490 templates/contest/clone.html:47
|
#: judge/forms.py:485 templates/contest/clone.html:47
|
||||||
#: templates/problem/search-form.html:39
|
#: templates/problem/search-form.html:39
|
||||||
msgid "Group"
|
msgid "Group"
|
||||||
msgstr "Nhóm"
|
msgstr "Nhóm"
|
||||||
|
|
||||||
#: judge/forms.py:498
|
#: judge/forms.py:493
|
||||||
msgid "Contest with key already exists."
|
msgid "Contest with key already exists."
|
||||||
msgstr "Mã kỳ thi đã tồn tại."
|
msgstr "Mã kỳ thi đã tồn tại."
|
||||||
|
|
||||||
#: judge/forms.py:506
|
#: judge/forms.py:501
|
||||||
msgid "Group doesn't exist."
|
msgid "Group doesn't exist."
|
||||||
msgstr "Nhóm không tồn tại."
|
msgstr "Nhóm không tồn tại."
|
||||||
|
|
||||||
#: judge/forms.py:508
|
#: judge/forms.py:503
|
||||||
msgid "You don't have permission in this group."
|
msgid "You don't have permission in this group."
|
||||||
msgstr "Bạn không có quyền trong nhóm này."
|
msgstr "Bạn không có quyền trong nhóm này."
|
||||||
|
|
||||||
#: judge/forms.py:558
|
#: judge/forms.py:553
|
||||||
msgid "This problem is duplicated."
|
msgid "This problem is duplicated."
|
||||||
msgstr "Bài này bị lặp"
|
msgstr "Bài này bị lặp"
|
||||||
|
|
||||||
|
@ -674,26 +680,6 @@ msgstr "Lưu"
|
||||||
msgid "make bookmarks"
|
msgid "make bookmarks"
|
||||||
msgstr "Lưu"
|
msgstr "Lưu"
|
||||||
|
|
||||||
#: judge/models/choices.py:59
|
|
||||||
msgid "Leave as LaTeX"
|
|
||||||
msgstr "Để định dạng LaTeX"
|
|
||||||
|
|
||||||
#: judge/models/choices.py:60
|
|
||||||
msgid "SVG with PNG fallback"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: judge/models/choices.py:61
|
|
||||||
msgid "MathML only"
|
|
||||||
msgstr "chỉ dùng MathML"
|
|
||||||
|
|
||||||
#: judge/models/choices.py:62
|
|
||||||
msgid "MathJax with SVG/PNG fallback"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: judge/models/choices.py:63
|
|
||||||
msgid "Detect best quality"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: judge/models/comment.py:43
|
#: judge/models/comment.py:43
|
||||||
msgid "commenter"
|
msgid "commenter"
|
||||||
msgstr "người bình luận"
|
msgstr "người bình luận"
|
||||||
|
@ -1846,8 +1832,8 @@ msgid "Custom checker (PY)"
|
||||||
msgstr "Trình chấm tự viết (Python)"
|
msgstr "Trình chấm tự viết (Python)"
|
||||||
|
|
||||||
#: judge/models/problem_data.py:41
|
#: judge/models/problem_data.py:41
|
||||||
msgid "Custom validator (CPP)"
|
msgid "Custom checker (CPP)"
|
||||||
msgstr "Trình chấm tự viết (C++)"
|
msgstr "Trình chấm tự viết (CPP)"
|
||||||
|
|
||||||
#: judge/models/problem_data.py:42
|
#: judge/models/problem_data.py:42
|
||||||
msgid "Interactive"
|
msgid "Interactive"
|
||||||
|
@ -1891,15 +1877,15 @@ msgstr "các biến trong trình chấm theo dạng JSON"
|
||||||
|
|
||||||
#: judge/models/problem_data.py:86
|
#: judge/models/problem_data.py:86
|
||||||
msgid "custom checker file"
|
msgid "custom checker file"
|
||||||
msgstr "file trình chấm"
|
msgstr "trình chấm"
|
||||||
|
|
||||||
#: judge/models/problem_data.py:94
|
#: judge/models/problem_data.py:94
|
||||||
msgid "custom validator file"
|
msgid "custom cpp checker file"
|
||||||
msgstr "file trình chấm"
|
msgstr "trình chấm C++"
|
||||||
|
|
||||||
#: judge/models/problem_data.py:102
|
#: judge/models/problem_data.py:102
|
||||||
msgid "interactive judge"
|
msgid "interactive judge"
|
||||||
msgstr ""
|
msgstr "trình chấm interactive"
|
||||||
|
|
||||||
#: judge/models/problem_data.py:110 judge/models/problem_data.py:229
|
#: judge/models/problem_data.py:110 judge/models/problem_data.py:229
|
||||||
msgid "input file name"
|
msgid "input file name"
|
||||||
|
@ -2046,7 +2032,7 @@ msgid ""
|
||||||
msgstr "Ảnh này sẽ thay thế logo mặc định khi ở trong tổ chức."
|
msgstr "Ảnh này sẽ thay thế logo mặc định khi ở trong tổ chức."
|
||||||
|
|
||||||
#: judge/models/profile.py:148 judge/models/profile.py:178
|
#: judge/models/profile.py:148 judge/models/profile.py:178
|
||||||
#: judge/models/profile.py:425 judge/models/profile.py:500
|
#: judge/models/profile.py:418 judge/models/profile.py:493
|
||||||
msgid "organization"
|
msgid "organization"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -2109,78 +2095,70 @@ msgid "current contest"
|
||||||
msgstr "kỳ thi hiện tại"
|
msgstr "kỳ thi hiện tại"
|
||||||
|
|
||||||
#: judge/models/profile.py:219
|
#: judge/models/profile.py:219
|
||||||
msgid "math engine"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: judge/models/profile.py:223
|
|
||||||
msgid "the rendering engine used to render math"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: judge/models/profile.py:226
|
|
||||||
msgid "2FA enabled"
|
msgid "2FA enabled"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: judge/models/profile.py:228
|
#: judge/models/profile.py:221
|
||||||
msgid "check to enable TOTP-based two factor authentication"
|
msgid "check to enable TOTP-based two factor authentication"
|
||||||
msgstr "đánh dấu để sử dụng TOTP-based two factor authentication"
|
msgstr "đánh dấu để sử dụng TOTP-based two factor authentication"
|
||||||
|
|
||||||
#: judge/models/profile.py:234
|
#: judge/models/profile.py:227
|
||||||
msgid "TOTP key"
|
msgid "TOTP key"
|
||||||
msgstr "mã TOTP"
|
msgstr "mã TOTP"
|
||||||
|
|
||||||
#: judge/models/profile.py:235
|
#: judge/models/profile.py:228
|
||||||
msgid "32 character base32-encoded key for TOTP"
|
msgid "32 character base32-encoded key for TOTP"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: judge/models/profile.py:237
|
#: judge/models/profile.py:230
|
||||||
msgid "TOTP key must be empty or base32"
|
msgid "TOTP key must be empty or base32"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: judge/models/profile.py:241
|
#: judge/models/profile.py:234
|
||||||
msgid "internal notes"
|
msgid "internal notes"
|
||||||
msgstr "ghi chú nội bộ"
|
msgstr "ghi chú nội bộ"
|
||||||
|
|
||||||
#: judge/models/profile.py:244
|
#: judge/models/profile.py:237
|
||||||
msgid "Notes for administrators regarding this user."
|
msgid "Notes for administrators regarding this user."
|
||||||
msgstr "Ghi chú riêng cho quản trị viên."
|
msgstr "Ghi chú riêng cho quản trị viên."
|
||||||
|
|
||||||
#: judge/models/profile.py:249
|
#: judge/models/profile.py:242
|
||||||
msgid "Custom background"
|
msgid "Custom background"
|
||||||
msgstr "Background tự chọn"
|
msgstr "Background tự chọn"
|
||||||
|
|
||||||
#: judge/models/profile.py:252
|
#: judge/models/profile.py:245
|
||||||
msgid "CSS custom background properties: url(\"image_url\"), color, etc"
|
msgid "CSS custom background properties: url(\"image_url\"), color, etc"
|
||||||
msgstr "CSS background tự chọn. Ví dụ: url(\"image_url\"), white, ..."
|
msgstr "CSS background tự chọn. Ví dụ: url(\"image_url\"), white, ..."
|
||||||
|
|
||||||
#: judge/models/profile.py:412
|
#: judge/models/profile.py:405
|
||||||
msgid "user profile"
|
msgid "user profile"
|
||||||
msgstr "thông tin người dùng"
|
msgstr "thông tin người dùng"
|
||||||
|
|
||||||
#: judge/models/profile.py:413
|
#: judge/models/profile.py:406
|
||||||
msgid "user profiles"
|
msgid "user profiles"
|
||||||
msgstr "thông tin người dùng"
|
msgstr "thông tin người dùng"
|
||||||
|
|
||||||
#: judge/models/profile.py:429
|
#: judge/models/profile.py:422
|
||||||
msgid "request time"
|
msgid "request time"
|
||||||
msgstr "thời gian đăng ký"
|
msgstr "thời gian đăng ký"
|
||||||
|
|
||||||
#: judge/models/profile.py:432
|
#: judge/models/profile.py:425
|
||||||
msgid "state"
|
msgid "state"
|
||||||
msgstr "trạng thái"
|
msgstr "trạng thái"
|
||||||
|
|
||||||
#: judge/models/profile.py:439
|
#: judge/models/profile.py:432
|
||||||
msgid "reason"
|
msgid "reason"
|
||||||
msgstr "lý do"
|
msgstr "lý do"
|
||||||
|
|
||||||
#: judge/models/profile.py:442
|
#: judge/models/profile.py:435
|
||||||
msgid "organization join request"
|
msgid "organization join request"
|
||||||
msgstr "đơn đăng ký tham gia"
|
msgstr "đơn đăng ký tham gia"
|
||||||
|
|
||||||
#: judge/models/profile.py:443
|
#: judge/models/profile.py:436
|
||||||
msgid "organization join requests"
|
msgid "organization join requests"
|
||||||
msgstr "đơn đăng ký tham gia"
|
msgstr "đơn đăng ký tham gia"
|
||||||
|
|
||||||
#: judge/models/profile.py:505
|
#: judge/models/profile.py:498
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "last seen"
|
#| msgid "last seen"
|
||||||
msgid "last visit"
|
msgid "last visit"
|
||||||
|
@ -3266,7 +3244,7 @@ msgstr "Hướng dẫn cho {0}"
|
||||||
msgid "Editorial for <a href=\"{1}\">{0}</a>"
|
msgid "Editorial for <a href=\"{1}\">{0}</a>"
|
||||||
msgstr "Hướng dẫn cho <a href=\"{1}\">{0}</a>"
|
msgstr "Hướng dẫn cho <a href=\"{1}\">{0}</a>"
|
||||||
|
|
||||||
#: judge/views/problem.py:459 templates/contest/contest.html:116
|
#: judge/views/problem.py:458 templates/contest/contest.html:116
|
||||||
#: templates/course/lesson.html:14
|
#: templates/course/lesson.html:14
|
||||||
#: templates/organization/org-left-sidebar.html:4
|
#: templates/organization/org-left-sidebar.html:4
|
||||||
#: templates/user/user-about.html:28 templates/user/user-bookmarks.html:35
|
#: templates/user/user-about.html:28 templates/user/user-bookmarks.html:35
|
||||||
|
@ -3274,34 +3252,34 @@ msgstr "Hướng dẫn cho <a href=\"{1}\">{0}</a>"
|
||||||
msgid "Problems"
|
msgid "Problems"
|
||||||
msgstr "Bài tập"
|
msgstr "Bài tập"
|
||||||
|
|
||||||
#: judge/views/problem.py:826
|
#: judge/views/problem.py:825
|
||||||
msgid "Problem feed"
|
msgid "Problem feed"
|
||||||
msgstr "Bài tập"
|
msgstr "Bài tập"
|
||||||
|
|
||||||
#: judge/views/problem.py:1027
|
#: judge/views/problem.py:1026
|
||||||
msgid "Banned from submitting"
|
msgid "Banned from submitting"
|
||||||
msgstr "Bị cấm nộp bài"
|
msgstr "Bị cấm nộp bài"
|
||||||
|
|
||||||
#: judge/views/problem.py:1029
|
#: judge/views/problem.py:1028
|
||||||
msgid ""
|
msgid ""
|
||||||
"You have been declared persona non grata for this problem. You are "
|
"You have been declared persona non grata for this problem. You are "
|
||||||
"permanently barred from submitting this problem."
|
"permanently barred from submitting this problem."
|
||||||
msgstr "Bạn đã bị cấm nộp bài này."
|
msgstr "Bạn đã bị cấm nộp bài này."
|
||||||
|
|
||||||
#: judge/views/problem.py:1052
|
#: judge/views/problem.py:1051
|
||||||
msgid "Too many submissions"
|
msgid "Too many submissions"
|
||||||
msgstr "Quá nhiều lần nộp"
|
msgstr "Quá nhiều lần nộp"
|
||||||
|
|
||||||
#: judge/views/problem.py:1054
|
#: judge/views/problem.py:1053
|
||||||
msgid "You have exceeded the submission limit for this problem."
|
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."
|
msgstr "Bạn đã vượt quá số lần nộp cho bài này."
|
||||||
|
|
||||||
#: judge/views/problem.py:1133 judge/views/problem.py:1138
|
#: judge/views/problem.py:1132 judge/views/problem.py:1137
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "Submit to %(problem)s"
|
msgid "Submit to %(problem)s"
|
||||||
msgstr "Nộp bài cho %(problem)s"
|
msgstr "Nộp bài cho %(problem)s"
|
||||||
|
|
||||||
#: judge/views/problem.py:1164
|
#: judge/views/problem.py:1163
|
||||||
msgid "Clone Problem"
|
msgid "Clone Problem"
|
||||||
msgstr "Nhân bản bài tập"
|
msgstr "Nhân bản bài tập"
|
||||||
|
|
||||||
|
@ -3454,7 +3432,7 @@ msgid "Submission of %(problem)s by %(user)s"
|
||||||
msgstr "Bài nộp của %(user)s cho bài %(problem)s"
|
msgstr "Bài nộp của %(user)s cho bài %(problem)s"
|
||||||
|
|
||||||
#: judge/views/submission.py:278 judge/views/submission.py:279
|
#: judge/views/submission.py:278 judge/views/submission.py:279
|
||||||
#: templates/problem/problem.html:188
|
#: templates/problem/problem.html:192
|
||||||
msgid "All submissions"
|
msgid "All submissions"
|
||||||
msgstr "Tất cả bài nộp"
|
msgstr "Tất cả bài nộp"
|
||||||
|
|
||||||
|
@ -3623,12 +3601,12 @@ msgstr "Được cập nhật trên web"
|
||||||
msgid "Edit profile"
|
msgid "Edit profile"
|
||||||
msgstr "Chỉnh sửa thông tin"
|
msgstr "Chỉnh sửa thông tin"
|
||||||
|
|
||||||
#: judge/views/user.py:442 templates/user/user-left-sidebar.html:2
|
#: judge/views/user.py:441 templates/user/user-left-sidebar.html:2
|
||||||
#: templates/user/user-list-tabs.html:4
|
#: templates/user/user-list-tabs.html:4
|
||||||
msgid "Leaderboard"
|
msgid "Leaderboard"
|
||||||
msgstr "Xếp hạng"
|
msgstr "Xếp hạng"
|
||||||
|
|
||||||
#: judge/views/user.py:542
|
#: judge/views/user.py:541
|
||||||
msgid "Import Users"
|
msgid "Import Users"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
@ -3812,7 +3790,7 @@ msgid "You have no ticket"
|
||||||
msgstr "Bạn không có báo cáo"
|
msgstr "Bạn không có báo cáo"
|
||||||
|
|
||||||
#: templates/blog/list.html:72 templates/problem/list.html:150
|
#: templates/blog/list.html:72 templates/problem/list.html:150
|
||||||
#: templates/problem/problem.html:408
|
#: templates/problem/problem.html:424
|
||||||
msgid "Clarifications"
|
msgid "Clarifications"
|
||||||
msgstr "Thông báo"
|
msgstr "Thông báo"
|
||||||
|
|
||||||
|
@ -3821,7 +3799,7 @@ msgid "Add"
|
||||||
msgstr "Thêm mới"
|
msgstr "Thêm mới"
|
||||||
|
|
||||||
#: templates/blog/list.html:97 templates/problem/list.html:172
|
#: templates/blog/list.html:97 templates/problem/list.html:172
|
||||||
#: templates/problem/problem.html:419
|
#: templates/problem/problem.html:435
|
||||||
msgid "No clarifications have been made at this time."
|
msgid "No clarifications have been made at this time."
|
||||||
msgstr "Không có thông báo nào."
|
msgstr "Không có thông báo nào."
|
||||||
|
|
||||||
|
@ -4765,7 +4743,7 @@ msgstr "Xem YAML"
|
||||||
msgid "Autofill testcases"
|
msgid "Autofill testcases"
|
||||||
msgstr "Tự động điền test"
|
msgstr "Tự động điền test"
|
||||||
|
|
||||||
#: templates/problem/data.html:506 templates/problem/problem.html:267
|
#: templates/problem/data.html:506 templates/problem/problem.html:283
|
||||||
msgid "Problem type"
|
msgid "Problem type"
|
||||||
msgid_plural "Problem types"
|
msgid_plural "Problem types"
|
||||||
msgstr[0] "Dạng bài"
|
msgstr[0] "Dạng bài"
|
||||||
|
@ -4845,8 +4823,8 @@ msgstr "Xem mã nguồn"
|
||||||
msgid "Volunteer form"
|
msgid "Volunteer form"
|
||||||
msgstr "Phiếu tình nguyện"
|
msgstr "Phiếu tình nguyện"
|
||||||
|
|
||||||
#: templates/problem/feed/problems.html:53 templates/problem/problem.html:148
|
#: templates/problem/feed/problems.html:53 templates/problem/problem.html:152
|
||||||
#: templates/problem/problem.html:163 templates/problem/problem.html:173
|
#: templates/problem/problem.html:167 templates/problem/problem.html:177
|
||||||
msgid "Submit"
|
msgid "Submit"
|
||||||
msgstr "Nộp bài"
|
msgstr "Nộp bài"
|
||||||
|
|
||||||
|
@ -4997,116 +4975,116 @@ msgstr "Bạn có chắc muốn tính điểm lại %(count)d bài nộp?"
|
||||||
msgid "Rescore all submissions"
|
msgid "Rescore all submissions"
|
||||||
msgstr "Tính điểm lại các bài nộp"
|
msgstr "Tính điểm lại các bài nộp"
|
||||||
|
|
||||||
#: templates/problem/problem.html:137
|
#: templates/problem/problem.html:141
|
||||||
msgid "View as PDF"
|
msgid "View as PDF"
|
||||||
msgstr "Xem PDF"
|
msgstr "Xem PDF"
|
||||||
|
|
||||||
#: templates/problem/problem.html:155
|
#: templates/problem/problem.html:159
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "%(counter)s submission left"
|
msgid "%(counter)s submission left"
|
||||||
msgid_plural "%(counter)s submissions left"
|
msgid_plural "%(counter)s submissions left"
|
||||||
msgstr[0] "Còn %(counter)s lần nộp"
|
msgstr[0] "Còn %(counter)s lần nộp"
|
||||||
|
|
||||||
#: templates/problem/problem.html:168
|
#: templates/problem/problem.html:172
|
||||||
msgid "0 submissions left"
|
msgid "0 submissions left"
|
||||||
msgstr "Còn 0 lần nộp"
|
msgstr "Còn 0 lần nộp"
|
||||||
|
|
||||||
#: templates/problem/problem.html:185
|
#: templates/problem/problem.html:189
|
||||||
msgid "My submissions"
|
msgid "My submissions"
|
||||||
msgstr "Bài nộp của tôi"
|
msgstr "Bài nộp của tôi"
|
||||||
|
|
||||||
#: templates/problem/problem.html:189
|
#: templates/problem/problem.html:193
|
||||||
msgid "Best submissions"
|
msgid "Best submissions"
|
||||||
msgstr "Các bài nộp tốt nhất"
|
msgstr "Các bài nộp tốt nhất"
|
||||||
|
|
||||||
#: templates/problem/problem.html:193
|
#: templates/problem/problem.html:197
|
||||||
msgid "Read editorial"
|
msgid "Read editorial"
|
||||||
msgstr "Xem hướng dẫn"
|
msgstr "Xem hướng dẫn"
|
||||||
|
|
||||||
#: templates/problem/problem.html:198
|
#: templates/problem/problem.html:202
|
||||||
msgid "Manage tickets"
|
msgid "Manage tickets"
|
||||||
msgstr "Xử lý báo cáo"
|
msgstr "Xử lý báo cáo"
|
||||||
|
|
||||||
#: templates/problem/problem.html:202
|
#: templates/problem/problem.html:206
|
||||||
msgid "Edit problem"
|
msgid "Edit problem"
|
||||||
msgstr "Chỉnh sửa bài"
|
msgstr "Chỉnh sửa bài"
|
||||||
|
|
||||||
#: templates/problem/problem.html:204
|
#: templates/problem/problem.html:208
|
||||||
msgid "Edit test data"
|
msgid "Edit test data"
|
||||||
msgstr "Chỉnh sửa test"
|
msgstr "Chỉnh sửa test"
|
||||||
|
|
||||||
#: templates/problem/problem.html:209
|
#: templates/problem/problem.html:213
|
||||||
msgid "My tickets"
|
msgid "My tickets"
|
||||||
msgstr "Báo cáo của tôi"
|
msgstr "Báo cáo của tôi"
|
||||||
|
|
||||||
#: templates/problem/problem.html:217
|
#: templates/problem/problem.html:221
|
||||||
msgid "Manage submissions"
|
msgid "Manage submissions"
|
||||||
msgstr "Quản lý bài nộp"
|
msgstr "Quản lý bài nộp"
|
||||||
|
|
||||||
#: templates/problem/problem.html:223
|
#: templates/problem/problem.html:227
|
||||||
msgid "Clone problem"
|
msgid "Clone problem"
|
||||||
msgstr "Nhân bản bài"
|
msgstr "Nhân bản bài"
|
||||||
|
|
||||||
#: templates/problem/problem.html:252
|
#: templates/problem/problem.html:236 templates/problem/problem.html:365
|
||||||
|
msgid "Time limit:"
|
||||||
|
msgstr "Thời gian:"
|
||||||
|
|
||||||
|
#: templates/problem/problem.html:249 templates/problem/problem.html:370
|
||||||
|
msgid "Memory limit:"
|
||||||
|
msgstr "Bộ nhớ:"
|
||||||
|
|
||||||
|
#: templates/problem/problem.html:268
|
||||||
msgid "Author:"
|
msgid "Author:"
|
||||||
msgid_plural "Authors:"
|
msgid_plural "Authors:"
|
||||||
msgstr[0] "Tác giả:"
|
msgstr[0] "Tác giả:"
|
||||||
|
|
||||||
#: templates/problem/problem.html:280
|
#: templates/problem/problem.html:296
|
||||||
msgid "Allowed languages"
|
msgid "Allowed languages"
|
||||||
msgstr "Ngôn ngữ cho phép"
|
msgstr "Ngôn ngữ cho phép"
|
||||||
|
|
||||||
#: templates/problem/problem.html:288
|
#: templates/problem/problem.html:304
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "No %(lang)s judge online"
|
msgid "No %(lang)s judge online"
|
||||||
msgstr "Không có máy chấm cho %(lang)s"
|
msgstr "Không có máy chấm cho %(lang)s"
|
||||||
|
|
||||||
#: templates/problem/problem.html:300
|
#: templates/problem/problem.html:316
|
||||||
#: templates/status/judge-status-table.html:2
|
#: templates/status/judge-status-table.html:2
|
||||||
msgid "Judge"
|
msgid "Judge"
|
||||||
msgid_plural "Judges"
|
msgid_plural "Judges"
|
||||||
msgstr[0] "Máy chấm"
|
msgstr[0] "Máy chấm"
|
||||||
|
|
||||||
#: templates/problem/problem.html:318
|
#: templates/problem/problem.html:334
|
||||||
msgid "none available"
|
msgid "none available"
|
||||||
msgstr "Bài này chưa có máy chấm"
|
msgstr "Bài này chưa có máy chấm"
|
||||||
|
|
||||||
#: templates/problem/problem.html:330
|
#: templates/problem/problem.html:346
|
||||||
#, python-format
|
#, python-format
|
||||||
msgid "This problem has %(length)s clarification(s)"
|
msgid "This problem has %(length)s clarification(s)"
|
||||||
msgstr "Bài này có %(length)s thông báo"
|
msgstr "Bài này có %(length)s thông báo"
|
||||||
|
|
||||||
#: templates/problem/problem.html:338
|
#: templates/problem/problem.html:354
|
||||||
msgid "Points:"
|
msgid "Points:"
|
||||||
msgstr "Điểm:"
|
msgstr "Điểm:"
|
||||||
|
|
||||||
#: templates/problem/problem.html:349
|
#: templates/problem/problem.html:375 templates/problem/raw.html:67
|
||||||
msgid "Time limit:"
|
|
||||||
msgstr "Thời gian:"
|
|
||||||
|
|
||||||
#: templates/problem/problem.html:354
|
|
||||||
msgid "Memory limit:"
|
|
||||||
msgstr "Bộ nhớ:"
|
|
||||||
|
|
||||||
#: templates/problem/problem.html:359 templates/problem/raw.html:67
|
|
||||||
#: templates/submission/status-testcases.html:155
|
#: templates/submission/status-testcases.html:155
|
||||||
msgid "Input:"
|
msgid "Input:"
|
||||||
msgstr "Input:"
|
msgstr "Input:"
|
||||||
|
|
||||||
#: templates/problem/problem.html:361 templates/problem/raw.html:67
|
#: templates/problem/problem.html:377 templates/problem/raw.html:67
|
||||||
msgid "stdin"
|
msgid "stdin"
|
||||||
msgstr "bàn phím"
|
msgstr "bàn phím"
|
||||||
|
|
||||||
#: templates/problem/problem.html:366 templates/problem/raw.html:70
|
#: templates/problem/problem.html:382 templates/problem/raw.html:70
|
||||||
#: templates/submission/status-testcases.html:159
|
#: templates/submission/status-testcases.html:159
|
||||||
msgid "Output:"
|
msgid "Output:"
|
||||||
msgstr "Output:"
|
msgstr "Output:"
|
||||||
|
|
||||||
#: templates/problem/problem.html:367 templates/problem/raw.html:70
|
#: templates/problem/problem.html:383 templates/problem/raw.html:70
|
||||||
msgid "stdout"
|
msgid "stdout"
|
||||||
msgstr "màn hình"
|
msgstr "màn hình"
|
||||||
|
|
||||||
#: templates/problem/problem.html:394
|
#: templates/problem/problem.html:410
|
||||||
msgid "Request clarification"
|
msgid "Request clarification"
|
||||||
msgstr "Yêu cầu làm rõ đề"
|
msgstr "Yêu cầu làm rõ đề"
|
||||||
|
|
||||||
|
@ -5845,31 +5823,27 @@ msgstr "Chọn thành phố gần nhất"
|
||||||
msgid "Editor theme"
|
msgid "Editor theme"
|
||||||
msgstr "Giao diện cho code editor"
|
msgstr "Giao diện cho code editor"
|
||||||
|
|
||||||
#: templates/user/edit-profile.html:146
|
#: templates/user/edit-profile.html:151
|
||||||
msgid "Math engine"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: templates/user/edit-profile.html:157
|
|
||||||
msgid "Two Factor Authentication is enabled."
|
msgid "Two Factor Authentication is enabled."
|
||||||
msgstr "Two Factor Authentication đã được kích hoạt."
|
msgstr "Two Factor Authentication đã được kích hoạt."
|
||||||
|
|
||||||
#: templates/user/edit-profile.html:161
|
#: templates/user/edit-profile.html:155
|
||||||
msgid "Disable"
|
msgid "Disable"
|
||||||
msgstr "Tắt"
|
msgstr "Tắt"
|
||||||
|
|
||||||
#: templates/user/edit-profile.html:164
|
#: templates/user/edit-profile.html:158
|
||||||
msgid "Two Factor Authentication is disabled."
|
msgid "Two Factor Authentication is disabled."
|
||||||
msgstr "Two Factor Authentication chưa kích hoạt."
|
msgstr "Two Factor Authentication chưa kích hoạt."
|
||||||
|
|
||||||
#: templates/user/edit-profile.html:165
|
#: templates/user/edit-profile.html:159
|
||||||
msgid "Enable"
|
msgid "Enable"
|
||||||
msgstr "Bật"
|
msgstr "Bật"
|
||||||
|
|
||||||
#: templates/user/edit-profile.html:169
|
#: templates/user/edit-profile.html:163
|
||||||
msgid "CSS background"
|
msgid "CSS background"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: templates/user/edit-profile.html:173
|
#: templates/user/edit-profile.html:167
|
||||||
msgid "Update profile"
|
msgid "Update profile"
|
||||||
msgstr "Cập nhật thông tin"
|
msgstr "Cập nhật thông tin"
|
||||||
|
|
||||||
|
@ -6081,6 +6055,18 @@ msgstr "Thông tin"
|
||||||
msgid "Check all"
|
msgid "Check all"
|
||||||
msgstr "Chọn tất cả"
|
msgstr "Chọn tất cả"
|
||||||
|
|
||||||
|
#~ msgid "custom validator file"
|
||||||
|
#~ msgstr "file trình chấm"
|
||||||
|
|
||||||
|
#~ msgid "Leave as LaTeX"
|
||||||
|
#~ msgstr "Để định dạng LaTeX"
|
||||||
|
|
||||||
|
#~ msgid "MathML only"
|
||||||
|
#~ msgstr "chỉ dùng MathML"
|
||||||
|
|
||||||
|
#~ msgid "Custom validator (CPP)"
|
||||||
|
#~ msgstr "Trình chấm tự viết (C++)"
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#~| msgid "From the web"
|
#~| msgid "From the web"
|
||||||
#~ msgid "From the Web"
|
#~ msgid "From the Web"
|
||||||
|
|
|
@ -214,6 +214,7 @@ label[for="language"], label[for="status"] {
|
||||||
border-radius: .28571429rem;
|
border-radius: .28571429rem;
|
||||||
border: 1px solid rgba(34,36,38,.15);
|
border: 1px solid rgba(34,36,38,.15);
|
||||||
font-family: Consolas;
|
font-family: Consolas;
|
||||||
|
overflow-wrap: anywhere;
|
||||||
}
|
}
|
||||||
|
|
||||||
.testcases-table {
|
.testcases-table {
|
||||||
|
|
|
@ -137,7 +137,7 @@
|
||||||
let $checker = $('#id_problem-data-checker')
|
let $checker = $('#id_problem-data-checker')
|
||||||
|
|
||||||
let $custom_checker = $('#id_problem-data-custom_checker');
|
let $custom_checker = $('#id_problem-data-custom_checker');
|
||||||
let $validator = $('#id_problem-data-custom_validator');
|
let $validator = $('#id_problem-data-custom_checker_cpp');
|
||||||
let $interactive = $('#id_problem-data-interactive_judge');
|
let $interactive = $('#id_problem-data-interactive_judge');
|
||||||
let $sig_handler = $('#id_problem-data-signature_handler');
|
let $sig_handler = $('#id_problem-data-signature_handler');
|
||||||
let $sig_header = $('#id_problem-data-signature_header');
|
let $sig_header = $('#id_problem-data-signature_header');
|
||||||
|
@ -165,10 +165,10 @@
|
||||||
|
|
||||||
$checker.change(function () {
|
$checker.change(function () {
|
||||||
$tr_checker.toggle($checker.val() == 'custom').change();
|
$tr_checker.toggle($checker.val() == 'custom').change();
|
||||||
$tr_validator.toggle($checker.val() == 'customval' || $checker.val() == 'testlib').change();
|
$tr_validator.toggle($checker.val() == 'customcpp' || $checker.val() == 'testlib').change();
|
||||||
$tr_interactive.toggle($checker.val() == 'interact').change();
|
$tr_interactive.toggle($checker.val() == 'interact').change();
|
||||||
|
|
||||||
$sample.toggle(['custom', 'customval', 'interact'].includes($checker.val())).change();
|
$sample.toggle(['custom', 'customcpp', 'interact'].includes($checker.val())).change();
|
||||||
}).change();
|
}).change();
|
||||||
|
|
||||||
$ioi_signature.change(function() {
|
$ioi_signature.change(function() {
|
||||||
|
|
Loading…
Reference in a new issue