diff --git a/VIPSWeb/locale/vi/LC_MESSAGES/django.mo b/VIPSWeb/locale/vi/LC_MESSAGES/django.mo
new file mode 100644
index 0000000000000000000000000000000000000000..c76749451feeda93664ffd9702b8c43106e039d8
Binary files /dev/null and b/VIPSWeb/locale/vi/LC_MESSAGES/django.mo differ
diff --git a/VIPSWeb/locale/vi/LC_MESSAGES/django.po b/VIPSWeb/locale/vi/LC_MESSAGES/django.po
new file mode 100644
index 0000000000000000000000000000000000000000..ffa1e73a7e64a14045ab25904667e800cdbbf9b3
--- /dev/null
+++ b/VIPSWeb/locale/vi/LC_MESSAGES/django.po
@@ -0,0 +1,125 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-01-09 09:36+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: local_settings.py:157
+msgid "Working title"
+msgstr "Không tiêu đề"
+
+#: templates/404.html:3
+#: templates/404.html.py:5
+msgid "File not found"
+msgstr "File không tìm thấy"
+
+#: templates/404.html:6
+msgid "We are sorry, but the requested file was not found"
+msgstr "Chúng tôi rất xin lỗi, nhưng các tập tin yêu cầu không được tìm thấy"
+
+#: templates/503.html:3
+#: templates/503.html.py:5
+msgid "Temporarily down for maintenance"
+msgstr "Tạm ngưng để bảo trì"
+
+#: templates/503.html:6
+msgid ""
+"We are sorry, but the web site is currently underdoing maintenance. We "
+"should be back online shortly."
+msgstr "Chúng tôi rất xin lỗi, nhưng trang web hiện đang underdoing bảo trì. Chúng tôi"
+"nên trở lại trực tuyến ngay."
+
+#: templates/base.html:54
+msgid "Toggle navigation"
+msgstr "chuyển hướng toggle"
+
+#: templates/base.html:72
+msgid "Click to change language"
+msgstr "Nhấn vào đây để thay đổi ngôn ngữ"
+
+#: templates/base.html:97
+msgid "Sign in"
+msgstr "Đăng nhập"
+
+#: templates/base.html:109
+msgid "This is the default page contents."
+msgstr ""
+
+#: templates/index.html:25
+msgid "Welcome"
+msgstr "Chào mừng"
+
+#: templates/index.html:70
+msgid "High risk of infection"
+msgstr "Nguy cơ lây nhiễm cao"
+
+#: templates/index.html:71
+msgid "Medium risk of infection"
+msgstr "Rủi ro trung bình của nhiễm trùng"
+
+#: templates/index.html:72
+msgid "No risk of infection"
+msgstr "Không có nguy cơ lây nhiễm"
+
+#: templates/index.html:73
+msgid "Missing data"
+msgstr "Dữ liệu bị mất"
+
+#: templates/index.html:74
+msgid "No forecast available"
+msgstr "Không dự báo có sẵn"
+
+#: templates/index.html:82
+msgid "Crops"
+msgstr "mùa gặt"
+
+#: templates/index.html:95
+msgid "Forecasts"
+msgstr "dự báo"
+
+#: templates/index.html:96
+msgid "Sort by"
+msgstr "Sắp xếp theo"
+
+#: templates/index.html:96
+msgid "Weather station"
+msgstr "Trạm thời tiết"
+
+#: templates/index.html:96
+msgid "Pest"
+msgstr "côn trùng"
+
+#: templates/index.html:96
+msgid "Model"
+msgstr "Kiểu mẫu"
+
+#: templates/index.html:97
+msgid "Select crops or zoom in to see list of forecasts"
+msgstr "Chọn cây trồng hoặc phóng to để xem danh sách các dự báo"
+
+#: templates/index.html:104
+msgid "My forecasts"
+msgstr "dự báo của tôi"
+
+#: templates/index.html:111
+msgid "Messages"
+msgstr "Tin nhắn"
+
+#: templatetags/template_helper.py:74
+msgid "Information"
+msgstr "Thông tin"
+
diff --git a/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.mo b/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.mo
new file mode 100644
index 0000000000000000000000000000000000000000..95b3b7eedf1de279111bd72f6faba0b82902852e
Binary files /dev/null and b/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.mo differ
diff --git a/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.po b/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.po
new file mode 100644
index 0000000000000000000000000000000000000000..5d9851cef6456d98580b8c995ee427a7694fa243
--- /dev/null
+++ b/VIPSWeb/locale/vi/LC_MESSAGES/djangojs.po
@@ -0,0 +1,124 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-01-09 09:46+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: static/js/3rdparty/moment.min.js:6
+msgid "\n"
+msgstr ""
+
+#: static/js/forecastmap.js:41
+msgid "Source hostname not defined."
+msgstr "Nguồn hostname không được định nghĩa."
+
+#: static/js/frontpage.js:256
+msgid "Remove from my favourites"
+msgstr "Xóa khỏi mục ưa thích của tôi"
+
+#: static/js/frontpage.js:256
+msgid "Add to my favourites"
+msgstr "Thêm vào mục yêu thích của tôi"
+
+#: static/js/frontpage.js:379
+msgid "No forecast available"
+msgstr "Không dự báo có sẵn"
+
+#: static/js/frontpage.js:381
+msgid "Missing data"
+msgstr "Dữ liệu bị mất"
+
+#: static/js/frontpage.js:383
+msgid "No risk of infection"
+msgstr "Không có nguy cơ lây nhiễm"
+
+#: static/js/frontpage.js:385
+msgid "Medium risk of infection"
+msgstr "Rủi ro trung bình của nhiễm trùng"
+
+#: static/js/frontpage.js:387
+msgid "High risk of infection"
+msgstr "Nguy cơ lây nhiễm cao"
+
+#: static/js/frontpage.js:389
+msgid "Invalid forecast status"
+msgstr "Tình trạng dự báo không hợp lệ"
+
+#: static/js/util.js:213
+#: static/js/util.js:242
+msgid "Unnamed"
+msgstr "Vô danh"
+
+#: static/js/validateForm.js:118
+#, javascript-format
+msgid "%s is not equal to %s"
+msgstr "%s không bằng %s"
+
+#: static/js/validateForm.js:130
+#, javascript-format
+msgid "%s is not after %s"
+msgstr "%s không phải là sau khi %s"
+
+#: static/js/validateForm.js:244
+#: static/js/validateForm.js:262
+#: static/js/validateForm.js:285
+#: static/js/validateForm.js:474
+msgid "Field is required"
+msgstr "Lĩnh vực được yêu cầu"
+
+#: static/js/validateForm.js:306
+#, javascript-format
+msgid "Exceeds max length of %s"
+msgstr "Vượt quá chiều dài tối đa của %s"
+
+#: static/js/validateForm.js:322
+#: static/js/validateForm.js:340
+#, javascript-format
+msgid "Does not match format %s"
+msgstr "Không phù hợp với định dạng %s"
+
+#: static/js/validateForm.js:357
+#: static/js/validateForm.js:418
+msgid "Invalid format"
+msgstr "định dạng không hợp lệ"
+
+#: static/js/validateForm.js:375
+msgid "Number required"
+msgstr "cần số"
+
+#: static/js/validateForm.js:380
+#, javascript-format
+msgid "Lower than minimum (%s)"
+msgstr "Thấp hơn mức tối thiểu (%s)"
+
+#: static/js/validateForm.js:385
+#, javascript-format
+msgid "Higher than maximum (%s)"
+msgstr "Cao hơn tối đa (%s)"
+
+#: static/js/validateForm.js:404
+msgid "Missing separator comma"
+msgstr "Thiếu phân cách bằng dấu phẩy"
+
+#: static/js/validateForm.js:409
+msgid "Too many separator commas"
+msgstr "Quá nhiều dấu phẩy phân cách"
+
+#: static/js/weatherStationSelectorMap.js:113
+msgid "Select station"
+msgstr "Chọn ga"
+
diff --git a/vips_messages/locale/vi/LC_MESSAGES/django.po b/vips_messages/locale/vi/LC_MESSAGES/django.po
new file mode 100644
index 0000000000000000000000000000000000000000..1cb66ba836dfe77001198dbcf84e7c9871039496
--- /dev/null
+++ b/vips_messages/locale/vi/LC_MESSAGES/django.po
@@ -0,0 +1,55 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2016-01-09 09:57+0100\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"Language: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: templates/messages/index.html:3 templates/messages/index.html.py:9
+msgid "Messages"
+msgstr ""
+
+#: templates/messages/index.html:14
+msgid "Text search"
+msgstr ""
+
+#: templates/messages/index.html:20
+msgid "All crops"
+msgstr ""
+
+#: templates/messages/index.html:31
+msgid "From"
+msgstr ""
+
+#: templates/messages/index.html:36
+msgid "To"
+msgstr ""
+
+#: templates/messages/index.html:38
+msgid "Date search"
+msgstr ""
+
+#: templates/messages/index.html:47
+msgid "Publish date"
+msgstr ""
+
+#: templates/messages/index.html:48
+msgid "Headline"
+msgstr ""
+
+#: templates/messages/index.html:49
+msgid "Author"
+msgstr ""