diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po
index 1432864..a4dde83 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: 2023-09-08 22:40+0700\n"
+"POT-Creation-Date: 2023-09-17 12:21+0700\n"
"PO-Revision-Date: 2021-07-20 03:44\n"
"Last-Translator: Icyene\n"
"Language-Team: Vietnamese\n"
@@ -19,8 +19,8 @@ msgstr ""
"X-Crowdin-File-ID: 5\n"
#: chat_box/models.py:39 chat_box/models.py:64 chat_box/models.py:79
-#: judge/admin/interface.py:150 judge/models/contest.py:636
-#: judge/models/contest.py:842 judge/models/course.py:115
+#: judge/admin/interface.py:150 judge/models/contest.py:641
+#: judge/models/contest.py:847 judge/models/course.py:115
#: judge/models/profile.py:390 judge/models/profile.py:468
msgid "user"
msgstr "người dùng"
@@ -111,72 +111,74 @@ msgstr "Bài tập"
msgid "Settings"
msgstr "Cài đặt"
-#: judge/admin/contest.py:168
+#: judge/admin/contest.py:169
msgid "Scheduling"
msgstr ""
-#: judge/admin/contest.py:172
+#: judge/admin/contest.py:173
msgid "Details"
msgstr "Chi tiết"
-#: judge/admin/contest.py:184
+#: judge/admin/contest.py:185 templates/contest/list.html:265
+#: templates/contest/list.html:306 templates/contest/list.html:351
+#: templates/contest/list.html:388
msgid "Format"
msgstr "Thể thức"
-#: judge/admin/contest.py:188 templates/contest/ranking-table.html:5
+#: judge/admin/contest.py:189 templates/contest/ranking-table.html:5
#: templates/user/user-about.html:15 templates/user/user-about.html:45
msgid "Rating"
msgstr ""
-#: judge/admin/contest.py:200
+#: judge/admin/contest.py:201
msgid "Access"
msgstr "Truy cập"
-#: judge/admin/contest.py:210 judge/admin/problem.py:218
+#: judge/admin/contest.py:211 judge/admin/problem.py:218
msgid "Justice"
msgstr "Xử phạt"
-#: judge/admin/contest.py:330
+#: judge/admin/contest.py:331
#, 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:337
+#: judge/admin/contest.py:338
msgid "Mark contests as visible"
msgstr "Đánh dấu hiển thị các kỳ thi"
-#: judge/admin/contest.py:348
+#: judge/admin/contest.py:349
#, 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:355
+#: judge/admin/contest.py:356
msgid "Mark contests as hidden"
msgstr "Ẩn các kỳ thi"
-#: judge/admin/contest.py:376 judge/admin/submission.py:241
+#: judge/admin/contest.py:377 judge/admin/submission.py:241
#, 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:484
+#: judge/admin/contest.py:485
#, 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:491
+#: judge/admin/contest.py:492
msgid "Recalculate results"
msgstr "Tính toán lại kết quả"
-#: judge/admin/contest.py:496 judge/admin/organization.py:99
+#: judge/admin/contest.py:497 judge/admin/organization.py:99
msgid "username"
msgstr "tên đăng nhập"
-#: judge/admin/contest.py:502 templates/base.html:341
+#: judge/admin/contest.py:503 templates/base.html:341
msgid "virtual"
msgstr "ảo"
@@ -398,7 +400,9 @@ msgstr[0] "%d bài nộp đã được tính điểm lại."
msgid "Rescore the selected submissions"
msgstr "Tính điểm lại cái bài nộp"
-#: judge/admin/submission.py:332 templates/notification/list.html:15
+#: judge/admin/submission.py:332 templates/contest/list.html:250
+#: templates/contest/list.html:295 templates/contest/list.html:340
+#: templates/contest/list.html:382 templates/notification/list.html:15
#: templates/organization/requests/log.html:10
#: templates/organization/requests/pending.html:20
#: templates/problem/list.html:154
@@ -495,72 +499,72 @@ msgstr "File tải lên không được quá 5MB."
msgid "Any judge"
msgstr ""
-#: judge/forms.py:352
+#: judge/forms.py:353
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"
-#: judge/forms.py:353 judge/views/stats.py:166 templates/stats/site.html:27
+#: judge/forms.py:354 judge/views/stats.py:166 templates/stats/site.html:27
msgid "New users"
msgstr "Thành viên mới"
-#: judge/forms.py:370
+#: judge/forms.py:371
#, python-brace-format
msgid "These usernames don't exist: {usernames}"
msgstr "Các tên đăng nhập này không tồn tại: {usernames}"
-#: judge/forms.py:429 judge/views/register.py:30
+#: judge/forms.py:430 judge/views/register.py:30
#: templates/registration/registration_form.html:34
#: 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:430 judge/views/email.py:22
+#: judge/forms.py:431 judge/views/email.py:22
#: templates/registration/registration_form.html:46
#: templates/registration/registration_form.html:60
#: templates/user/edit-profile.html:108 templates/user/import/table_csv.html:5
msgid "Password"
msgstr "Mật khẩu"
-#: judge/forms.py:456
+#: judge/forms.py:457
msgid "Two Factor Authentication tokens must be 6 decimal digits."
msgstr "Two Factor Authentication phải chứa 6 chữ số."
-#: judge/forms.py:469 templates/registration/totp_auth.html:32
+#: judge/forms.py:470 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:476 judge/models/problem.py:133
+#: judge/forms.py:477 judge/models/problem.py:133
msgid "Problem code must be ^[a-z0-9]+$"
msgstr "Mã bài phải có dạng ^[a-z0-9]+$"
-#: judge/forms.py:483
+#: judge/forms.py:484
msgid "Problem with code already exists."
msgstr "Mã bài đã tồn tại."
-#: judge/forms.py:490 judge/models/contest.py:93
+#: judge/forms.py:491 judge/models/contest.py:93
msgid "Contest id must be ^[a-z0-9]+$"
msgstr "Mã kỳ thi phải có dạng ^[a-z0-9]+$"
-#: judge/forms.py:497 templates/problem/search-form.html:46
+#: judge/forms.py:498 templates/problem/search-form.html:46
msgid "Group"
msgstr ""
-#: judge/forms.py:505
+#: judge/forms.py:506
msgid "Contest with key already exists."
msgstr "Mã kỳ thi đã tồn tại."
-#: judge/forms.py:513
+#: judge/forms.py:514
msgid "Group doesn't exist."
msgstr ""
-#: judge/forms.py:515
+#: judge/forms.py:516
#, fuzzy
#| msgid "You do not have the permission to rejudge submissions."
msgid "You don't have permission in this group."
msgstr "Bạn không có quyền chấm lại bài."
-#: judge/forms.py:565
+#: judge/forms.py:566
msgid "This problem is duplicated."
msgstr "Bài này bị lặp"
@@ -728,7 +732,7 @@ msgstr ""
msgid "contest tag"
msgstr ""
-#: judge/models/contest.py:77 judge/models/contest.py:245
+#: judge/models/contest.py:77 judge/models/contest.py:250
msgid "contest tags"
msgstr "nhãn kỳ thi"
@@ -777,7 +781,7 @@ msgstr "mô tả"
msgid "problems"
msgstr "bài tập"
-#: judge/models/contest.py:124 judge/models/contest.py:641
+#: judge/models/contest.py:124 judge/models/contest.py:646
msgid "start time"
msgstr "thời gian bắt đầu"
@@ -847,59 +851,67 @@ 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:171
+msgid "public scoreboard"
+msgstr "công khai bảng điểm"
+
+#: judge/models/contest.py:172
+msgid "Ranking page is public even for private contests."
+msgstr "Trang xếp hạng được công khai, kể cả cho kỳ thi riêng tư."
+
+#: judge/models/contest.py:176
msgid "no comments"
msgstr "không bình luận"
-#: judge/models/contest.py:172
+#: judge/models/contest.py:177
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:177
+#: judge/models/contest.py:182
msgid "Rating floor for contest"
msgstr "Cận dưới rating được xếp hạng trong kỳ thi"
-#: judge/models/contest.py:183
+#: judge/models/contest.py:188
msgid "Rating ceiling for contest"
msgstr "Cận trên rating được xếp hạng trong kỳ thi"
-#: judge/models/contest.py:188
+#: judge/models/contest.py:193
msgid "rate all"
msgstr "xếp hạng tất cả"
-#: judge/models/contest.py:189
+#: judge/models/contest.py:194
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:194
+#: judge/models/contest.py:199
msgid "exclude from ratings"
msgstr "không xếp hạng"
-#: judge/models/contest.py:199
+#: judge/models/contest.py:204
msgid "private to specific users"
msgstr "riêng tư với các người dùng này"
-#: judge/models/contest.py:204
+#: judge/models/contest.py:209
msgid "private contestants"
msgstr "thí sinh riêng tư"
-#: judge/models/contest.py:205
+#: judge/models/contest.py:210
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:209
+#: judge/models/contest.py:214
msgid "hide problem tags"
msgstr "ẩn nhãn kỳ thi"
-#: judge/models/contest.py:210
+#: judge/models/contest.py:215
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:214
+#: judge/models/contest.py:219
msgid "run pretests only"
msgstr "chỉ chạy pretests"
-#: judge/models/contest.py:216
+#: judge/models/contest.py:221
msgid ""
"Whether judges should grade pretests only, versus all testcases. Commonly "
"set during a contest, then unset prior to rejudging user submissions when "
@@ -908,51 +920,51 @@ 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:223 judge/models/interface.py:96
+#: judge/models/contest.py:228 judge/models/interface.py:96
#: judge/models/problem.py:285
msgid "private to organizations"
msgstr "riêng tư với các tổ chức"
-#: judge/models/contest.py:228 judge/models/course.py:34
+#: judge/models/contest.py:233 judge/models/course.py:34
#: judge/models/interface.py:92 judge/models/problem.py:281
#: judge/models/profile.py:144
msgid "organizations"
msgstr "tổ chức"
-#: judge/models/contest.py:229
+#: judge/models/contest.py:234
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:232 judge/models/problem.py:256
+#: judge/models/contest.py:237 judge/models/problem.py:256
msgid "OpenGraph image"
msgstr "Hình ảnh OpenGraph"
-#: judge/models/contest.py:235 judge/models/profile.py:92
+#: judge/models/contest.py:240 judge/models/profile.py:92
msgid "Logo override image"
msgstr "Hình ảnh ghi đè logo"
-#: judge/models/contest.py:240
+#: judge/models/contest.py:245
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:248
+#: judge/models/contest.py:253
msgid "the amount of live participants"
msgstr "số lượng thí sinh thi trực tiếp"
-#: judge/models/contest.py:252
+#: judge/models/contest.py:257
msgid "contest summary"
msgstr "tổng kết kỳ thi"
-#: judge/models/contest.py:254 judge/models/problem.py:262
+#: judge/models/contest.py:259 judge/models/problem.py:262
msgid "Plain-text, shown in meta description tag, e.g. for social media."
msgstr ""
-#: judge/models/contest.py:258 judge/models/profile.py:87
+#: judge/models/contest.py:263 judge/models/profile.py:87
msgid "access code"
msgstr "mật khẩu truy cập"
-#: judge/models/contest.py:263
+#: judge/models/contest.py:268
msgid ""
"An optional code to prompt contestants before they are allowed to join the "
"contest. Leave it blank to disable."
@@ -960,292 +972,292 @@ 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:269 judge/models/problem.py:244
+#: judge/models/contest.py:274 judge/models/problem.py:244
msgid "personae non gratae"
msgstr "Chặn tham gia"
-#: judge/models/contest.py:271
+#: judge/models/contest.py:276
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:274
+#: judge/models/contest.py:279
msgid "contest format"
msgstr "format kỳ thi"
-#: judge/models/contest.py:278
+#: judge/models/contest.py:283
msgid "The contest format module to use."
msgstr "Format kỳ thi sử dụng."
-#: judge/models/contest.py:281
+#: judge/models/contest.py:286
msgid "contest format configuration"
msgstr "Tùy chỉnh format kỳ thi"
-#: judge/models/contest.py:285
+#: judge/models/contest.py:290
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:298
+#: judge/models/contest.py:303
msgid "precision points"
msgstr "Hiển thị điểm"
-#: judge/models/contest.py:301
+#: judge/models/contest.py:306
msgid "Number of digits to round points to."
msgstr "Số chữ số thập phân trên bảng điểm."
-#: judge/models/contest.py:609
+#: judge/models/contest.py:614
msgid "See private contests"
msgstr ""
-#: judge/models/contest.py:610
+#: judge/models/contest.py:615
msgid "Edit own contests"
msgstr ""
-#: judge/models/contest.py:611
+#: judge/models/contest.py:616
msgid "Edit all contests"
msgstr ""
-#: judge/models/contest.py:612
+#: judge/models/contest.py:617
msgid "Clone contest"
msgstr ""
-#: judge/models/contest.py:613 templates/contest/moss.html:72
+#: judge/models/contest.py:618 templates/contest/moss.html:72
msgid "MOSS contest"
msgstr ""
-#: judge/models/contest.py:614
+#: judge/models/contest.py:619
msgid "Rate contests"
msgstr ""
-#: judge/models/contest.py:615
+#: judge/models/contest.py:620
msgid "Contest access codes"
msgstr ""
-#: judge/models/contest.py:616
+#: judge/models/contest.py:621
msgid "Create private contests"
msgstr ""
-#: judge/models/contest.py:617
+#: judge/models/contest.py:622
msgid "Change contest visibility"
msgstr ""
-#: judge/models/contest.py:618
+#: judge/models/contest.py:623
msgid "Edit contest problem label script"
msgstr "Cách hiển thị thứ tự bài tập"
-#: judge/models/contest.py:620 judge/models/contest.py:767
-#: judge/models/contest.py:845 judge/models/contest.py:875
+#: judge/models/contest.py:625 judge/models/contest.py:772
+#: judge/models/contest.py:850 judge/models/contest.py:880
#: judge/models/course.py:178 judge/models/submission.py:116
msgid "contest"
msgstr "kỳ thi"
-#: judge/models/contest.py:621
+#: judge/models/contest.py:626
msgid "contests"
msgstr "kỳ thi"
-#: judge/models/contest.py:630
+#: judge/models/contest.py:635
msgid "associated contest"
msgstr ""
-#: judge/models/contest.py:643
+#: judge/models/contest.py:648
msgid "score"
msgstr "điểm"
-#: judge/models/contest.py:644
+#: judge/models/contest.py:649
msgid "cumulative time"
msgstr "tổng thời gian"
-#: judge/models/contest.py:646
+#: judge/models/contest.py:651
msgid "is disqualified"
msgstr "đã bị loại"
-#: judge/models/contest.py:648
+#: judge/models/contest.py:653
msgid "Whether this participation is disqualified."
msgstr "Quyết định thí sinh có bị loại không."
-#: judge/models/contest.py:650
+#: judge/models/contest.py:655
msgid "tie-breaking field"
msgstr ""
-#: judge/models/contest.py:652
+#: judge/models/contest.py:657
msgid "virtual participation id"
msgstr "id lần tham gia ảo"
-#: judge/models/contest.py:654
+#: judge/models/contest.py:659
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:657
+#: judge/models/contest.py:662
msgid "contest format specific data"
msgstr ""
-#: judge/models/contest.py:660
+#: judge/models/contest.py:665
msgid "same as format_data, but including frozen results"
msgstr ""
-#: judge/models/contest.py:664
+#: judge/models/contest.py:669
#, fuzzy
#| msgid "score"
msgid "final score"
msgstr "điểm"
-#: judge/models/contest.py:666
+#: judge/models/contest.py:671
#, fuzzy
#| msgid "cumulative time"
msgid "final cumulative time"
msgstr "tổng thời gian"
-#: judge/models/contest.py:742
+#: judge/models/contest.py:747
#, python-format
msgid "%s spectating in %s"
msgstr "%s đang theo dõi trong %s"
-#: judge/models/contest.py:747
+#: judge/models/contest.py:752
#, python-format
msgid "%s in %s, v%d"
msgstr "%s trong %s, v%d"
-#: judge/models/contest.py:752
+#: judge/models/contest.py:757
#, python-format
msgid "%s in %s"
msgstr "%s trong %s"
-#: judge/models/contest.py:755
+#: judge/models/contest.py:760
msgid "contest participation"
msgstr "lần tham gia kỳ thi"
-#: judge/models/contest.py:756
+#: judge/models/contest.py:761
msgid "contest participations"
msgstr "lần tham gia kỳ thi"
-#: judge/models/contest.py:763 judge/models/contest.py:816
-#: judge/models/contest.py:878 judge/models/problem.py:582
+#: judge/models/contest.py:768 judge/models/contest.py:821
+#: judge/models/contest.py:883 judge/models/problem.py:582
#: judge/models/problem.py:589 judge/models/problem.py:610
#: judge/models/problem.py:641 judge/models/problem_data.py:50
msgid "problem"
msgstr "bài tập"
-#: judge/models/contest.py:771 judge/models/contest.py:828
+#: judge/models/contest.py:776 judge/models/contest.py:833
#: judge/models/course.py:182 judge/models/problem.py:209
msgid "points"
msgstr "điểm"
-#: judge/models/contest.py:772
+#: judge/models/contest.py:777
msgid "partial"
msgstr "thành phần"
-#: judge/models/contest.py:773 judge/models/contest.py:830
+#: judge/models/contest.py:778 judge/models/contest.py:835
msgid "is pretested"
msgstr "dùng pretest"
-#: judge/models/contest.py:774 judge/models/interface.py:47
+#: judge/models/contest.py:779 judge/models/interface.py:47
msgid "order"
msgstr "thứ tự"
-#: judge/models/contest.py:776
+#: judge/models/contest.py:781
msgid "visible testcases"
msgstr "hiển thị test"
-#: judge/models/contest.py:781
+#: judge/models/contest.py:786
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:783
+#: judge/models/contest.py:788
msgid "max submissions"
msgstr "số lần nộp tối đa"
-#: judge/models/contest.py:786
+#: judge/models/contest.py:791
msgid "Why include a problem you can't submit to?"
msgstr ""
-#: judge/models/contest.py:790
+#: judge/models/contest.py:795
#, fuzzy
#| msgid "Only for format new IOI. Separated by commas, e.g: 2, 3"
msgid "Separated by commas, e.g: 2, 3"
msgstr ""
"Chỉ dùng với format IOI mới. Các sub cách nhau bởi dấu phẩy. Ví dụ: 2, 3"
-#: judge/models/contest.py:791
+#: judge/models/contest.py:796
#, fuzzy
#| msgid "frozen subtasks"
msgid "hidden subtasks"
msgstr "Đóng băng subtasks"
-#: judge/models/contest.py:803
+#: judge/models/contest.py:808
msgid "contest problem"
msgstr "bài trong kỳ thi"
-#: judge/models/contest.py:804
+#: judge/models/contest.py:809
msgid "contest problems"
msgstr "bài trong kỳ thi"
-#: judge/models/contest.py:810 judge/models/submission.py:233
+#: judge/models/contest.py:815 judge/models/submission.py:233
msgid "submission"
msgstr "bài nộp"
-#: judge/models/contest.py:823 judge/models/contest.py:849
+#: judge/models/contest.py:828 judge/models/contest.py:854
msgid "participation"
msgstr "lần tham gia"
-#: judge/models/contest.py:831
+#: judge/models/contest.py:836
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:836
+#: judge/models/contest.py:841
msgid "contest submission"
msgstr "bài nộp kỳ thi"
-#: judge/models/contest.py:837
+#: judge/models/contest.py:842
msgid "contest submissions"
msgstr "bài nộp kỳ thi"
-#: judge/models/contest.py:853
+#: judge/models/contest.py:858
msgid "rank"
msgstr "rank"
-#: judge/models/contest.py:854
+#: judge/models/contest.py:859
msgid "rating"
msgstr "rating"
-#: judge/models/contest.py:855
+#: judge/models/contest.py:860
msgid "raw rating"
msgstr "rating thật"
-#: judge/models/contest.py:856
+#: judge/models/contest.py:861
msgid "contest performance"
msgstr ""
-#: judge/models/contest.py:857
+#: judge/models/contest.py:862
msgid "last rated"
msgstr "lần cuối được xếp hạng"
-#: judge/models/contest.py:861
+#: judge/models/contest.py:866
msgid "contest rating"
msgstr "rating kỳ thi"
-#: judge/models/contest.py:862
+#: judge/models/contest.py:867
msgid "contest ratings"
msgstr "rating kỳ thi"
-#: judge/models/contest.py:886
+#: judge/models/contest.py:891
msgid "contest moss result"
msgstr "kết quả MOSS kỳ thi"
-#: judge/models/contest.py:887
+#: judge/models/contest.py:892
msgid "contest moss results"
msgstr "kết quả MOSS kỳ thi"
-#: judge/models/contest.py:892
+#: judge/models/contest.py:897
msgid "clarified problem"
msgstr ""
-#: judge/models/contest.py:894
+#: judge/models/contest.py:899
msgid "clarification body"
msgstr ""
-#: judge/models/contest.py:896
+#: judge/models/contest.py:901
msgid "clarification timestamp"
msgstr ""
@@ -2688,7 +2700,7 @@ msgid "%h:%m"
msgstr "%h:%m"
#: judge/views/about.py:10 templates/organization/home.html:47
-#: templates/organization/org-right-sidebar.html:70
+#: templates/organization/org-right-sidebar.html:72
#: templates/user/user-about.html:72 templates/user/user-tabs.html:4
#: templates/user/users-table.html:22
msgid "About"
@@ -2732,138 +2744,140 @@ msgstr "Chỉnh sửa từ web"
msgid "Editing comment"
msgstr "Chỉnh sửa bình luận"
-#: judge/views/contests.py:119 judge/views/contests.py:387
-#: judge/views/contests.py:392 judge/views/contests.py:663
+#: judge/views/contests.py:120 judge/views/contests.py:370
+#: judge/views/contests.py:375 judge/views/contests.py:646
msgid "No such contest"
msgstr "Không có contest nào như vậy"
-#: judge/views/contests.py:120 judge/views/contests.py:388
+#: judge/views/contests.py:121 judge/views/contests.py:371
#, 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:139 judge/views/stats.py:178
+#: judge/views/contests.py:140 judge/views/stats.py:178
+#: templates/contest/list.html:246 templates/contest/list.html:291
+#: templates/contest/list.html:336 templates/contest/list.html:378
#: templates/organization/org-left-sidebar.html:5 templates/stats/site.html:21
#: templates/user/user-bookmarks.html:56
msgid "Contests"
msgstr "Kỳ thi"
-#: judge/views/contests.py:392
+#: judge/views/contests.py:375
msgid "Could not find such contest."
msgstr "Không tìm thấy kỳ thi nào như vậy."
-#: judge/views/contests.py:400
+#: judge/views/contests.py:383
#, 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:451
+#: judge/views/contests.py:434
msgid "Clone Contest"
msgstr "Nhân bản kỳ thi"
-#: judge/views/contests.py:537
+#: judge/views/contests.py:520
msgid "Contest not ongoing"
msgstr "Kỳ thi đang không diễn ra"
-#: judge/views/contests.py:538
+#: judge/views/contests.py:521
#, python-format
msgid "\"%s\" is not currently ongoing."
msgstr "\"%s\" kỳ thi đang không diễn ra."
-#: judge/views/contests.py:545
+#: judge/views/contests.py:528
msgid "Already in contest"
msgstr "Đã ở trong kỳ thi"
-#: judge/views/contests.py:546
+#: judge/views/contests.py:529
#, python-format
msgid "You are already in a contest: \"%s\"."
msgstr "Bạn đã ở trong kỳ thi: \"%s\"."
-#: judge/views/contests.py:556
+#: judge/views/contests.py:539
msgid "Banned from joining"
msgstr "Bị cấm tham gia"
-#: judge/views/contests.py:558
+#: judge/views/contests.py:541
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:647
+#: judge/views/contests.py:630
#, python-format
msgid "Enter access code for \"%s\""
msgstr "Nhập mật khẩu truy cập cho \"%s\""
-#: judge/views/contests.py:664
+#: judge/views/contests.py:647
#, python-format
msgid "You are not in contest \"%s\"."
msgstr "Bạn không ở trong kỳ thi \"%s\"."
-#: judge/views/contests.py:687
+#: judge/views/contests.py:670
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:745
+#: judge/views/contests.py:728
#, python-format
msgid "Contests in %(month)s"
msgstr "Các kỳ thi trong %(month)s"
-#: judge/views/contests.py:746
+#: judge/views/contests.py:729
msgid "F Y"
msgstr "F Y"
-#: judge/views/contests.py:806
+#: judge/views/contests.py:789
#, python-format
msgid "%s Statistics"
msgstr "%s Thống kê"
-#: judge/views/contests.py:1099
+#: judge/views/contests.py:1085
#, python-format
msgid "%s Rankings"
msgstr "%s Bảng điểm"
-#: judge/views/contests.py:1110
+#: judge/views/contests.py:1096
msgid "???"
msgstr "???"
-#: judge/views/contests.py:1137
+#: judge/views/contests.py:1123
#, python-format
msgid "Your participation in %s"
msgstr "Lần tham gia trong %s"
-#: judge/views/contests.py:1138
+#: judge/views/contests.py:1124
#, python-format
msgid "%s's participation in %s"
msgstr "Lần tham gia của %s trong %s"
-#: judge/views/contests.py:1152
+#: judge/views/contests.py:1138
msgid "Live"
msgstr "Trực tiếp"
-#: judge/views/contests.py:1171 templates/contest/contest-tabs.html:19
+#: judge/views/contests.py:1157 templates/contest/contest-tabs.html:19
msgid "Participation"
msgstr "Lần tham gia"
-#: judge/views/contests.py:1220
+#: judge/views/contests.py:1206
#, python-format
msgid "%s MOSS Results"
msgstr "%s Kết quả MOSS"
-#: judge/views/contests.py:1256
+#: judge/views/contests.py:1242
#, python-format
msgid "Running MOSS for %s..."
msgstr "Đang chạy MOSS cho %s..."
-#: judge/views/contests.py:1279
+#: judge/views/contests.py:1265
#, python-format
msgid "Contest tag: %s"
msgstr "Nhãn kỳ thi: %s"
-#: judge/views/contests.py:1294 judge/views/ticket.py:72
+#: judge/views/contests.py:1280 judge/views/ticket.py:72
msgid "Issue description"
msgstr "Mô tả vấn đề"
-#: judge/views/contests.py:1337
+#: judge/views/contests.py:1323
#, python-format
msgid "New clarification for %s"
msgstr "Thông báo mới cho %s"
@@ -3114,7 +3128,7 @@ msgid "Added from site"
msgstr "Thêm từ web"
#: judge/views/organization.py:855
-#: templates/organization/org-right-sidebar.html:55
+#: templates/organization/org-right-sidebar.html:52
msgid "Add contest"
msgstr "Thêm kỳ thi"
@@ -3400,8 +3414,8 @@ msgstr "Phải qua một kỳ thi"
#: judge/views/submission.py:914
#, python-brace-format
msgid ""
-"{0}'s submissions for {2} in {4}"
+"{0}'s submissions for {2} in {4}"
msgstr ""
"Các bài nộp của {0} cho {2} trong {4}"
@@ -4014,8 +4028,8 @@ msgstr "G:i T, j F, Y"
#: templates/contest/contest-datetime.html:39
#, python-format
msgid ""
-"%(time_limit)s window between %(start_time)s and "
-"%(end_time)s"
+"%(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"
"b>"
@@ -4099,7 +4113,9 @@ msgstr "Đăng nhập để tham gia"
msgid "AC Rate"
msgstr "Tỷ lệ AC"
-#: templates/contest/contest.html:103 templates/problem/list.html:24
+#: templates/contest/contest.html:103 templates/contest/list.html:269
+#: templates/contest/list.html:310 templates/contest/list.html:392
+#: templates/problem/list.html:24
msgid "Users"
msgstr "Người nộp"
@@ -4507,31 +4523,31 @@ msgstr "Nhóm kín"
msgid "Members"
msgstr "Thành viên"
-#: templates/organization/org-right-sidebar.html:7
+#: templates/organization/org-right-sidebar.html:4
msgid "Controls"
msgstr "Quản lý"
-#: templates/organization/org-right-sidebar.html:12
+#: templates/organization/org-right-sidebar.html:9
msgid "Edit group"
msgstr "Chỉnh sửa nhóm"
-#: templates/organization/org-right-sidebar.html:19
+#: templates/organization/org-right-sidebar.html:16
msgid "View requests"
msgstr "Đơn đăng ký"
-#: templates/organization/org-right-sidebar.html:31
+#: templates/organization/org-right-sidebar.html:28
msgid "Add members"
msgstr "Thêm thành viên"
-#: templates/organization/org-right-sidebar.html:38
+#: templates/organization/org-right-sidebar.html:35
msgid "Add blog"
msgstr "Thêm bài đăng"
-#: templates/organization/org-right-sidebar.html:44
+#: templates/organization/org-right-sidebar.html:41
msgid "Pending blogs"
msgstr "Bài đăng đang chờ"
-#: templates/organization/org-right-sidebar.html:63
+#: templates/organization/org-right-sidebar.html:60
msgid "Leave group"
msgstr "Rời nhóm"
@@ -5962,8 +5978,8 @@ msgstr "Chọn tất cả"
#~ msgstr "bình luận nữa"
#~ msgid ""
-#~ "This comment is hidden due to too much negative feedback. Click here to view it."
+#~ "This comment is hidden due to too much negative feedback. Click here to view it."
#~ msgstr ""
#~ "Bình luận bị ẩn vì nhiều phản hồi tiêu cực. Nhấp vào đây để mở."
diff --git a/locale/vi/LC_MESSAGES/dmoj-user.po b/locale/vi/LC_MESSAGES/dmoj-user.po
index 8202ea2..ffd36e9 100644
--- a/locale/vi/LC_MESSAGES/dmoj-user.po
+++ b/locale/vi/LC_MESSAGES/dmoj-user.po
@@ -15,15 +15,12 @@ msgstr "Thành viên"
msgid "Contests"
msgstr "Kỳ thi"
-msgid "Chat"
-msgstr ""
+msgid "Groups"
+msgstr "Nhóm"
msgid "About"
msgstr "Giới thiệu"
-msgid "Groups"
-msgstr "Nhóm"
-
msgid "Status"
msgstr "Máy chấm"