diff --git a/judge/management/commands/makedmojmessages.py b/judge/management/commands/makedmojmessages.py
index 981726f..44324e8 100644
--- a/judge/management/commands/makedmojmessages.py
+++ b/judge/management/commands/makedmojmessages.py
@@ -165,6 +165,13 @@ msgstr ""
"w",
encoding="utf-8",
) as potfile:
+ potfile.write(
+ """
+msgid ""
+msgstr ""
+
+"Content-Type: text/plain; charset=utf-8\\n"
+ """)
if self.verbosity > 1:
self.stdout.write("processing navigation bar")
for label in NavigationBar.objects.values_list("label", flat=True):
diff --git a/locale/vi/LC_MESSAGES/django.po b/locale/vi/LC_MESSAGES/django.po
index abc4c90..12d24d3 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-30 14:27+0700\n"
+"POT-Creation-Date: 2022-05-31 05:19+0700\n"
"PO-Revision-Date: 2021-07-20 03:44\n"
"Last-Translator: Icyene\n"
"Language-Team: Vietnamese\n"
@@ -594,7 +594,7 @@ msgstr "g:i a j b, Y"
msgid "{time}"
msgstr "{time}"
-#: judge/jinja2/datetime.py:26 templates/blog/content.html:10
+#: judge/jinja2/datetime.py:26 templates/blog/content.html:11
#, python-brace-format
msgid "on {time}"
msgstr "vào {time}"
@@ -2490,8 +2490,8 @@ msgstr "Bạn phải giải ít nhất 1 bài trước khi được vote."
msgid "You already voted."
msgstr "Bạn đã vote."
-#: judge/views/comment.py:153 judge/views/organization.py:700
-#: judge/views/organization.py:787
+#: judge/views/comment.py:153 judge/views/organization.py:701
+#: judge/views/organization.py:788
msgid "Edited from site"
msgstr "Chỉnh sửa từ web"
@@ -2778,48 +2778,48 @@ msgstr "Thêm thành viên cho %s"
msgid "Added members from site"
msgstr "Chỉnh sửa từ web"
-#: judge/views/organization.py:653 judge/views/organization.py:661
+#: judge/views/organization.py:654 judge/views/organization.py:662
msgid "Can't kick user"
msgstr "Không thể đuổi"
-#: judge/views/organization.py:654
+#: judge/views/organization.py:655
msgid "The user you are trying to kick does not exist!"
msgstr ""
-#: judge/views/organization.py:662
+#: judge/views/organization.py:663
#, python-format
msgid "The user you are trying to kick is not in organization: %s."
msgstr ""
-#: judge/views/organization.py:683
+#: judge/views/organization.py:684
#, fuzzy, python-format
#| msgid "Editing %s"
msgid "Edit %s"
msgstr "Đang chỉnh sửa %s"
-#: judge/views/organization.py:717
+#: judge/views/organization.py:718
#, python-format
msgid "Add blog for %s"
msgstr "Thêm bài đăng cho %s"
-#: judge/views/organization.py:728
+#: judge/views/organization.py:729
msgid "Added from site"
msgstr "Thêm từ web"
-#: judge/views/organization.py:762
+#: judge/views/organization.py:763
msgid "Permission denied"
msgstr "Truy cập bị từ chối"
-#: judge/views/organization.py:763
+#: judge/views/organization.py:764
msgid "Not allowed to edit this blog"
msgstr "Bạn không được phép chỉnh sửa bài đăng này."
-#: judge/views/organization.py:782
+#: judge/views/organization.py:783
#, python-format
msgid "Edit blog %s"
msgstr "Chỉnh sửa %s"
-#: judge/views/organization.py:812
+#: judge/views/organization.py:813
#, python-format
msgid "Pending blogs in %s"
msgstr "Bài đang đợi duyệt trong %s"
@@ -2844,7 +2844,7 @@ msgid "Editorial for {0}"
msgstr "Hướng dẫn cho {0}"
#: judge/views/problem.py:463 templates/contest/contest.html:79
-#: templates/organization/org-left-sidebar.html:4
+#: templates/extra_js.html:3 templates/organization/org-left-sidebar.html:4
#: templates/user/user-about.html:28 templates/user/user-tabs.html:5
#: templates/user/users-table.html:29
msgid "Problems"
@@ -4062,6 +4062,10 @@ msgstr "Còn"
msgid "Upcoming contests"
msgstr "Kỳ thi sắp diễn ra"
+#: templates/extra_js.html:4
+msgid "Submissions"
+msgstr "Bài nộp"
+
#: templates/fine_uploader/script.html:4
msgid "Drop files here to upload"
msgstr ""
diff --git a/locale/vi/LC_MESSAGES/dmoj-user.po b/locale/vi/LC_MESSAGES/dmoj-user.po
new file mode 100644
index 0000000..8939aaa
--- /dev/null
+++ b/locale/vi/LC_MESSAGES/dmoj-user.po
@@ -0,0 +1,343 @@
+msgid ""
+msgstr ""
+"Content-Type: text/plain; charset=UTF-8\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+msgid "Problems"
+msgstr "Bài tập"
+
+msgid "Submissions"
+msgstr "Bài nộp"
+
+msgid "Users"
+msgstr "Thành viên"
+
+msgid "Contests"
+msgstr "Kỳ thi"
+
+msgid "Groups"
+msgstr "Nhóm"
+
+msgid "About"
+msgstr "Giới thiệu"
+
+msgid "Status"
+msgstr "Máy chấm"
+
+msgid "Suggestions"
+msgstr "Đề xuất ý tưởng"
+
+msgid "Proposal"
+msgstr "Đề xuất bài tập"
+
+msgid "TanKhoa"
+msgstr "Tân Khoa"
+
+msgid "Name"
+msgstr "Đăng ký tên"
+
+msgid "Report"
+msgstr "Báo cáo"
+
+msgid "Bài cơ bản (Basic Problems)"
+msgstr ""
+
+msgid "Bài toán số dư (Modulo)"
+msgstr ""
+
+msgid "Bài toán truy vấn (Query)"
+msgstr ""
+
+msgid "Bài đặc biệt (ad hoc)"
+msgstr ""
+
+msgid "Bảng thưa (SparseTable)"
+msgstr ""
+
+msgid "Bao hàm loại trừ (Inclusion-Exclusion)"
+msgstr ""
+
+msgid "Bao lồi (Convex Hull)"
+msgstr ""
+
+msgid "Cài đặt (Implementation)"
+msgstr ""
+
+msgid "Cặp ghép (Matching)"
+msgstr ""
+
+msgid "Cấu hình tập hợp"
+msgstr ""
+
+msgid "Cây (đồ thị)"
+msgstr ""
+
+msgid "Cây chỉ số nhị phân (Binary Indexed Tree)"
+msgstr ""
+
+msgid "Cây hậu tố (Suffix tree)"
+msgstr ""
+
+msgid "Cây khung nhỏ nhất"
+msgstr ""
+
+msgid "Cây phân đoạn (Segment Tree)"
+msgstr ""
+
+msgid "Cây tiền tố (Trie)"
+msgstr ""
+
+msgid "Cày trâu / Duyệt (Brute-force)"
+msgstr ""
+
+msgid "Centroid Decomposition"
+msgstr ""
+
+msgid "Chặt nhị phân (Binary search)"
+msgstr ""
+
+msgid "Chặt tam phân (Ternary search)"
+msgstr ""
+
+msgid "Chia căn (Sqrt decomposition)"
+msgstr ""
+
+msgid "Chia để trị"
+msgstr ""
+
+msgid "Chu trình Euler (Euler Cycle)"
+msgstr ""
+
+msgid "Chưa phân loại (Uncategorized)"
+msgstr ""
+
+msgid "CTDL Tiêu chuẩn (C++ STL)"
+msgstr ""
+
+msgid "CTDL Đặc biệt (Data Structures)"
+msgstr ""
+
+msgid "Danh sách liên kết (Linked list)"
+msgstr ""
+
+msgid "Dãy con chung dài nhất (LCS)"
+msgstr ""
+
+msgid "Dãy con tăng dài nhất (LIS)"
+msgstr ""
+
+msgid "Dãy lặp"
+msgstr ""
+
+msgid "DFS,BFS (đồ thị)"
+msgstr ""
+
+msgid "Disjoint-set (DSU)"
+msgstr ""
+
+msgid "Duyệt phân tập (Meet-in-the-middle)"
+msgstr ""
+
+msgid "Euclid mở rộng"
+msgstr ""
+
+msgid "Euler tour trên cây"
+msgstr ""
+
+msgid "Hai con trỏ (Two-pointers)"
+msgstr ""
+
+msgid "Hàm băm (Hash)"
+msgstr ""
+
+msgid "Hàm Mobius"
+msgstr ""
+
+msgid "Hình học"
+msgstr ""
+
+msgid "Hoán vị"
+msgstr ""
+
+msgid "Khớp, cầu (đồ thị)"
+msgstr ""
+
+msgid "Khử gauss (Gauss Elimination)"
+msgstr ""
+
+msgid "Lập trình cơ bản"
+msgstr ""
+
+msgid "LCA (Lowest common ancestor)"
+msgstr ""
+
+msgid "LT đồ thị (LQĐ)"
+msgstr ""
+
+msgid "Luồng (Flow)"
+msgstr ""
+
+msgid "Luồng cận dưới"
+msgstr ""
+
+msgid "Luồng mincost"
+msgstr ""
+
+msgid "Lý thuyết trò chơi (Game Theory)"
+msgstr ""
+
+msgid "Lý Thuyết Đồ Thị (Graph Theory)"
+msgstr ""
+
+msgid "Manacher"
+msgstr ""
+
+msgid "Mảng"
+msgstr ""
+
+msgid "Mảng hậu tố (Suffix Array)"
+msgstr ""
+
+msgid "Mảng tổng dồn (Prefix sum)"
+msgstr ""
+
+msgid "Ngăn xếp, hàng đợi (Stack, Queue)"
+msgstr ""
+
+msgid "Ngẫu nhiên (Random)"
+msgstr ""
+
+msgid "Nhân ma trận"
+msgstr ""
+
+msgid "Nhân đa thức (FFT)"
+msgstr ""
+
+msgid "Nhánh cận"
+msgstr ""
+
+msgid "Palindrome tree"
+msgstr ""
+
+msgid "Phân tích thừa số nguyên tố (Prime Factorization)"
+msgstr ""
+
+msgid "Phi hàm Euler (Euler's totient function)"
+msgstr ""
+
+msgid "Quay lui"
+msgstr ""
+
+msgid "Quy hoạch động"
+msgstr ""
+
+msgid "Quy hoạch động bitmask"
+msgstr ""
+
+msgid "Quy hoạch động chữ số"
+msgstr ""
+
+msgid "Quy hoạch động thứ tự từ điển"
+msgstr ""
+
+msgid "Quy hoạch động trạng thái"
+msgstr ""
+
+msgid "Quy hoạch động trên cây"
+msgstr ""
+
+msgid "Quy hoạch động đảo nhãn"
+msgstr ""
+
+msgid "Quy hoạch động đếm"
+msgstr ""
+
+msgid "Rời rạc hóa (Compression)"
+msgstr ""
+
+msgid "Sàng (Sieve)"
+msgstr ""
+
+msgid "Sắp xếp (Sorting)"
+msgstr ""
+
+msgid "Sắp xếp tô pô (Topo Sort)"
+msgstr ""
+
+msgid "Scratch"
+msgstr ""
+
+msgid "Số học (Number Theory)"
+msgstr ""
+
+msgid "Số nguyên tố"
+msgstr ""
+
+msgid "Sweep Line"
+msgstr ""
+
+msgid "Tách chuỗi cây (HLD)"
+msgstr ""
+
+msgid "Tham Lam (Greedy)"
+msgstr ""
+
+msgid "Tháng tư là lời nói dối của em"
+msgstr ""
+
+msgid "Thành phần liên thông"
+msgstr ""
+
+msgid "Thao Tác Bit (bitwise)"
+msgstr ""
+
+msgid "Thuật toán KMP"
+msgstr ""
+
+msgid "Thuật toán Mo"
+msgstr ""
+
+msgid "Tổ hợp"
+msgstr ""
+
+msgid "Toán (Math)"
+msgstr ""
+
+msgid "Tối ưu hóa (Deep-optimize)"
+msgstr ""
+
+msgid "Tương tác (Interactive)"
+msgstr ""
+
+msgid "t_Bài tập (thầy Đông)"
+msgstr ""
+
+msgid "Xác suất (Probability)"
+msgstr ""
+
+msgid "Xâu con (Substring)"
+msgstr ""
+
+msgid "Xâu đối xứng (Palindrome)"
+msgstr ""
+
+msgid "Xây dựng, tìm khuôn (Constructive)"
+msgstr ""
+
+msgid "Xử lí sai số (Precision-fix)"
+msgstr ""
+
+msgid "Xử lí số lớn (Bignum)"
+msgstr ""
+
+msgid "Xử lí xâu (String)"
+msgstr ""
+
+msgid "Z Function"
+msgstr ""
+
+msgid "Đếm Phân Phối"
+msgstr ""
+
+msgid "Đường đi ngắn nhất (đồ thị)"
+msgstr ""