summaryrefslogtreecommitdiffstats
path: root/l10n-vi/calendar
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /l10n-vi/calendar
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--l10n-vi/calendar/README.txt3
-rw-r--r--l10n-vi/calendar/calendar/calendar-context-menus.ftl7
-rw-r--r--l10n-vi/calendar/calendar/calendar-ics-file-dialog.ftl29
-rw-r--r--l10n-vi/calendar/calendar/calendar-summary-dialog.ftl15
-rw-r--r--l10n-vi/calendar/calendar/calendar-uri-redirect-dialog.ftl11
-rw-r--r--l10n-vi/calendar/calendar/calendar-widgets.ftl6
-rw-r--r--l10n-vi/calendar/calendar/category-dialog.ftl7
-rw-r--r--l10n-vi/calendar/calendar/preferences.ftl186
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-alarms.properties39
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-event-dialog-attendees.properties15
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-event-dialog.dtd428
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-event-dialog.properties541
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-extract.properties294
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.dtd19
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.properties10
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd7
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.properties53
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd14
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar.dtd411
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendar.properties818
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendarCreation.dtd51
-rw-r--r--l10n-vi/calendar/chrome/calendar/calendarCreation.properties6
-rw-r--r--l10n-vi/calendar/chrome/calendar/categories.properties7
-rw-r--r--l10n-vi/calendar/chrome/calendar/dateFormat.properties146
-rw-r--r--l10n-vi/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd22
-rw-r--r--l10n-vi/calendar/chrome/calendar/global.dtd54
-rw-r--r--l10n-vi/calendar/chrome/calendar/menuOverlay.dtd50
-rw-r--r--l10n-vi/calendar/chrome/calendar/migration.dtd9
-rw-r--r--l10n-vi/calendar/chrome/calendar/migration.properties13
-rw-r--r--l10n-vi/calendar/chrome/calendar/provider-uninstall.dtd12
-rw-r--r--l10n-vi/calendar/chrome/calendar/timezones.properties488
-rw-r--r--l10n-vi/calendar/chrome/lightning/lightning-toolbar.dtd51
-rw-r--r--l10n-vi/calendar/chrome/lightning/lightning.dtd116
-rw-r--r--l10n-vi/calendar/chrome/lightning/lightning.properties201
-rw-r--r--l10n-vi/calendar/extra-jar.mn8
-rw-r--r--l10n-vi/calendar/lightning-l10n.js23
-rw-r--r--l10n-vi/calendar/sunbird-l10n.js23
37 files changed, 4193 insertions, 0 deletions
diff --git a/l10n-vi/calendar/README.txt b/l10n-vi/calendar/README.txt
new file mode 100644
index 0000000000..927fc142f2
--- /dev/null
+++ b/l10n-vi/calendar/README.txt
@@ -0,0 +1,3 @@
+For information about installing, running and configuring Sunbird
+including a list of known issues and troubleshooting information,
+refer to: http://www.mozilla.org/projects/calendar/
diff --git a/l10n-vi/calendar/calendar/calendar-context-menus.ftl b/l10n-vi/calendar/calendar/calendar-context-menus.ftl
new file mode 100644
index 0000000000..f129fdb7bf
--- /dev/null
+++ b/l10n-vi/calendar/calendar/calendar-context-menus.ftl
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-item-context-menu-modify-menuitem =
+ .label = Chỉnh sửa
+ .accesskey = E
diff --git a/l10n-vi/calendar/calendar/calendar-ics-file-dialog.ftl b/l10n-vi/calendar/calendar/calendar-ics-file-dialog.ftl
new file mode 100644
index 0000000000..5abe019aad
--- /dev/null
+++ b/l10n-vi/calendar/calendar/calendar-ics-file-dialog.ftl
@@ -0,0 +1,29 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-ics-file-window-2 =
+ .title = Nhập sự kiện và nhiệm vụ lịch
+calendar-ics-file-dialog-import-event-button-label = Nhập sự kiện
+calendar-ics-file-dialog-import-task-button-label = Nhập nhiệm vụ
+calendar-ics-file-dialog-2 =
+ .buttonlabelaccept = Nhập tất cả
+calendar-ics-file-accept-button-ok-label = OK
+calendar-ics-file-cancel-button-close-label = Đóng
+calendar-ics-file-dialog-message-2 = Nhập từ tập tin:
+calendar-ics-file-dialog-calendar-menu-label = Nhập vào lịch:
+calendar-ics-file-dialog-items-loading-message =
+ .value = Đang tải các mục…
+calendar-ics-file-dialog-progress-message = Đang nhập…
+calendar-ics-file-import-success = Nhập thành công!
+calendar-ics-file-import-error = Đã xảy ra lỗi và không thể nhập.
+calendar-ics-file-import-complete = Hoàn thành nhập.
+calendar-ics-file-import-duplicates =
+ { $duplicatesCount ->
+ *[other] { $duplicatesCount } mục đã bị bỏ qua vì chúng đã tồn tại trong lịch đích.
+ }
+calendar-ics-file-import-errors =
+ { $errorsCount ->
+ *[other] Không nhập được { $errorsCount } mục. Kiểm tra bảng điều khiển lỗi để biết chi tiết.
+ }
+calendar-ics-file-dialog-no-calendars = Không có lịch có thể nhập các sự kiện hoặc nhiệm vụ.
diff --git a/l10n-vi/calendar/calendar/calendar-summary-dialog.ftl b/l10n-vi/calendar/calendar/calendar-summary-dialog.ftl
new file mode 100644
index 0000000000..69fa2f924c
--- /dev/null
+++ b/l10n-vi/calendar/calendar/calendar-summary-dialog.ftl
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-summary-dialog-edit-button =
+ .label = Chỉnh sửa
+ .accesskey = E
+calendar-summary-dialog-edit-menu-button =
+ .label = Chỉnh sửa
+edit-button-context-menu-this-occurrence =
+ .label = Chỉ chỉnh sửa lần xuất hiện này
+ .accesskey = t
+edit-button-context-menu-all-occurrences =
+ .label = Chỉnh sửa tất cả các lần xuất hiện
+ .accesskey = a
diff --git a/l10n-vi/calendar/calendar/calendar-uri-redirect-dialog.ftl b/l10n-vi/calendar/calendar/calendar-uri-redirect-dialog.ftl
new file mode 100644
index 0000000000..728cd482c6
--- /dev/null
+++ b/l10n-vi/calendar/calendar/calendar-uri-redirect-dialog.ftl
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-uri-redirect-window =
+ .title = Chuyển hướng URI lịch
+calendar-uri-redirect-description =
+ Máy chủ đang chuyển hướng URI cho lịch "{ $calendarName }".
+ Chấp nhận chuyển hướng và bắt đầu sử dụng URI mới cho lịch này?
+calendar-uri-redirect-original-uri-label = URI hiện tại:
+calendar-uri-redirect-target-uri-label = Chuyển hướng đến URI mới:
diff --git a/l10n-vi/calendar/calendar/calendar-widgets.ftl b/l10n-vi/calendar/calendar/calendar-widgets.ftl
new file mode 100644
index 0000000000..be89f557d3
--- /dev/null
+++ b/l10n-vi/calendar/calendar/calendar-widgets.ftl
@@ -0,0 +1,6 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-deactivated-notification-events = Tất cả các lịch hiện đang bị vô hiệu hóa. Bật lịch hiện có hoặc thêm lịch mới để tạo và chỉnh sửa sự kiện.
+calendar-deactivated-notification-tasks = Tất cả các lịch hiện đang bị vô hiệu hóa. Kích hoạt lịch hiện có hoặc thêm lịch mới để tạo và chỉnh sửa tác vụ.
diff --git a/l10n-vi/calendar/calendar/category-dialog.ftl b/l10n-vi/calendar/calendar/category-dialog.ftl
new file mode 100644
index 0000000000..10cb1a0afa
--- /dev/null
+++ b/l10n-vi/calendar/calendar/category-dialog.ftl
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+category-name-label = Tên
+category-color-label =
+ .label = Dùng Màu
diff --git a/l10n-vi/calendar/calendar/preferences.ftl b/l10n-vi/calendar/calendar/preferences.ftl
new file mode 100644
index 0000000000..bdcff23ef9
--- /dev/null
+++ b/l10n-vi/calendar/calendar/preferences.ftl
@@ -0,0 +1,186 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-title = Lịch
+calendar-title-reminder = Nhắc nhở
+calendar-title-category = Thể loại
+dateformat-label =
+ .value = Định dạng văn bản ngày:
+ .accesskey = N
+# $date (String) - the formatted example date
+dateformat-long =
+ .label = Dài: { $date }
+# $date (String) - the formatted example date
+dateformat-short =
+ .label = Ngắn: { $date }
+timezone-label =
+ .value = Múi giờ:
+weekstart-label =
+ .value = Bắt đầu tuần vào:
+ .accesskey = B
+day-1-name =
+ .label = Chủ nhật
+day-2-name =
+ .label = Thứ Hai
+day-3-name =
+ .label = Thứ Ba
+day-4-name =
+ .label = Thứ Tư
+day-5-name =
+ .label = Thứ Năm
+day-6-name =
+ .label = Thứ Sáu
+day-7-name =
+ .label = Thứ Bảy
+show-weeknumber-label =
+ .label = Hiển thị số tuần trong lượt xem và tháng nhỏ
+ .accesskey = n
+workdays-label =
+ .value = Ngày làm việc:
+day-1-checkbox =
+ .label = ChN
+ .accesskey = C
+day-2-checkbox =
+ .label = Th2
+ .accesskey = 2
+day-3-checkbox =
+ .label = Th3
+ .accesskey = 3
+day-4-checkbox =
+ .label = Th4
+ .accesskey = 4
+day-5-checkbox =
+ .label = Th5
+ .accesskey = 5
+day-6-checkbox =
+ .label = Th6
+ .accesskey = 6
+day-7-checkbox =
+ .label = Th7
+ .accesskey = 7
+dayweek-legend = Hiển thị theo ngày và tuần
+visible-hours-label =
+ .value = Hiện:
+ .accesskey = H
+visible-hours-end-label =
+ .value = giờ cùng một lúc
+day-start-label =
+ .value = Ngày bắt đầu lúc:
+ .accesskey = N
+day-end-label =
+ .value = Ngày kết thúc lúc:
+ .accesskey = y
+midnight-label =
+ .label = Nửa đêm
+noon-label =
+ .label = Trưa
+location-checkbox =
+ .label = Hiển thị địa chỉ
+ .accesskey = L
+multiweek-legend = Hiển thị theo nhiều tuần
+number-of-weeks-label =
+ .value = Số lượng tuần mà bạn muốn hiển thị (bao gồm cả các tuần trước đó):
+ .accesskey = l
+week-0-label =
+ .label = không
+week-1-label =
+ .label = 1 tuần
+week-2-label =
+ .label = 2 tuần
+week-3-label =
+ .label = 3 tuần
+week-4-label =
+ .label = 4 tuần
+week-5-label =
+ .label = 5 tuần
+week-6-label =
+ .label = 6 tuần
+previous-weeks-label =
+ .value = Số lượng tuần trước đó mà bạn muốn hiển thị:
+ .accesskey = S
+todaypane-legend = Bảng ngày hôm nay
+# Note: "Upcoming" is the name of a section and the translation must match the
+# translation of that section name (calendar.upcoming.button.label). Also,
+# it should be upper case (as a proper name) if the target language permits.
+soon-label =
+ .value = Phần sắp tới cho thấy:
+ .accesskey = U
+event-task-legend = Sự kiện và nhiệm vụ
+default-length-label =
+ .value = Độ dài sự kiện và nhiệm vụ mặc định:
+ .accesskey = E
+task-start-label =
+ .value = Ngày bắt đầu:
+task-start-1-label =
+ .label = Không có
+task-start-2-label =
+ .label = Ngày bắt đầu
+task-start-3-label =
+ .label = Ngày kết thúc
+task-start-4-label =
+ .label = Ngày mai
+task-start-5-label =
+ .label = Tuần tới
+task-start-6-label =
+ .label = Liên quan đến thời gian hiện tại
+task-start-7-label =
+ .label = Liên quan đến bắt đầu
+task-start-8-label =
+ .label = Liên quan đến giờ tiếp theo
+task-due-label =
+ .value = Ngày đến hạn:
+edit-intab-label =
+ .label = Chỉnh sửa các sự kiện và tác vụ trong một thẻ thay vì trong cửa sổ hộp thoại.
+ .accesskey = t
+accessibility-legend = Trợ năng
+accessibility-colors-label =
+ .label = Tối ưu hóa màu sắc cho khả năng tiếp cận
+ .accesskey = c
+reminder-legend = Khi đổ chuông báo:
+reminder-play-checkbox =
+ .label = Phát ra âm thanh
+ .accesskey = s
+reminder-play-alarm-button =
+ .label = Phát
+ .accesskey = P
+reminder-default-sound-label =
+ .label = Sử dụng âm thanh mặc định
+ .accesskey = d
+reminder-custom-sound-label =
+ .label = Sử dụng tập tin âm thanh sau
+ .accesskey = U
+reminder-browse-sound-label =
+ .label = Duyệt…
+ .accesskey = B
+reminder-dialog-label =
+ .label = Hiển thị hộp thoại nhắc nhở
+ .accesskey = x
+missed-reminder-label =
+ .label = Hiển thị lời nhắc nhở cho lịch có thể ghi
+ .accesskey = m
+reminder-default-legend = Mặc định nhắc nhở
+default-snooze-label =
+ .value = Độ dài báo lại mặc định:
+ .accesskey = S
+event-alarm-label =
+ .value = Cài đặt nhắc nhở mặc định cho các sự kiện:
+ .accesskey = e
+alarm-on-label =
+ .label = Bật
+alarm-off-label =
+ .label = Tắt
+task-alarm-label =
+ .value = Cài đặt nhắc nhở mặc định cho các tác vụ:
+ .accesskey = a
+event-alarm-time-label =
+ .value = Thời gian mặc định một lời nhắc được đặt trước một sự kiện:
+ .accesskey = u
+task-alarm-time-label =
+ .value = Thời gian mặc định một lời nhắc được đặt trước một tác vụ:
+ .accesskey = o
+category-new-label = Phân mục mới
+category-edit-label = Chỉnh sửa Phân mục
+category-overwrite-title = Cảnh báo: Trùng tên
+category-overwrite = Đã tồn tại một phân mục có tên đó. Bạn có muốn ghi đè nó không?
+category-blank-warning = Bạn phải nhập một tên phân mục.
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-alarms.properties b/l10n-vi/calendar/chrome/calendar/calendar-alarms.properties
new file mode 100644
index 0000000000..cc37090461
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-alarms.properties
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE (reminderCustomTitle):
+# %1$S = unit, %2$S = reminderCustomOrigin
+# Example: "3 minutes" "before the task starts"
+reminderCustomTitle=%1$S %2$S
+reminderTitleAtStartEvent=Thời điểm sự kiện bắt đầu
+reminderTitleAtStartTask=Thời điểm nhiệm vụ bắt đầu
+reminderTitleAtEndEvent=Thời điểm sự kiện kết thúc
+reminderTitleAtEndTask=Thời điểm nhiệm vụ kết thúc
+
+# LOCALIZATION NOTE (reminderSnoozeOkA11y)
+# This string is not seen in the UI, it is read by screen readers when the user
+# focuses the "OK" button in the "Snooze for..." popup of the alarm dialog.
+# %1$S = any of unit*
+reminderSnoozeOkA11y=Lời nhắc báo lại cho %1$S
+
+reminderCustomOriginBeginBeforeEvent=trước khi sự kiện bắt đầu
+reminderCustomOriginBeginAfterEvent=sau khi sự kiện bắt đầu
+reminderCustomOriginEndBeforeEvent=trước khi sự kiện kết thúc
+reminderCustomOriginEndAfterEvent=sau khi sự kiện kết thúc
+reminderCustomOriginBeginBeforeTask=trước khi nhiệm vụ bắt đầu
+reminderCustomOriginBeginAfterTask=sau khi nhiệm vụ bắt đầu
+reminderCustomOriginEndBeforeTask=trước khi nhiệm vụ kết thúc
+reminderCustomOriginEndAfterTask=sau khi nhiệm vụ kết thúc
+
+reminderErrorMaxCountReachedEvent=Bộ lịch đã chọn có giới hạn #1 lời nhắc việc cho mỗi sự kiện.;Bộ lịch đã chọn có giới hạn #1 lời nhắc việc cho mỗi sự kiện.
+reminderErrorMaxCountReachedTask=Bộ lịch đã chọn có giới hạn #1 lời nhắc việc cho mỗi tác vụ.;Bộ lịch đã chọn có giới hạn #1 lời nhắc việc cho mỗi tác vụ.
+
+# LOCALIZATION NOTE (reminderReadonlyNotification)
+# This notification will be presented in the alarm dialog if reminders for not
+# writable items/calendars are displayed.
+# %1$S - localized value of calendar.alarm.snoozeallfor.label (defined in calendar.dtd)
+reminderReadonlyNotification=Lời nhắc cho lịch chỉ đọc hiện không thể được báo lại mà chỉ bỏ qua - nút '%1$S' sẽ chỉ báo lại lời nhắc cho lịch có thể ghi.
+# LOCALIZATION NOTE (reminderDisabledSnoozeButtonTooltip)
+# This tooltip is only displayed, if the button is disabled
+reminderDisabledSnoozeButtonTooltip=Báo lại lời nhắc không được hỗ trợ cho lịch chỉ đọc
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-event-dialog-attendees.properties b/l10n-vi/calendar/chrome/calendar/calendar-event-dialog-attendees.properties
new file mode 100644
index 0000000000..e5e7675419
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-event-dialog-attendees.properties
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+event.attendee.role.required = Người tham dự quan trọng
+event.attendee.role.optional = Người tham dự tùy chọn
+event.attendee.role.nonparticipant = Không có người tham dự
+event.attendee.role.chair = Chủ tọa
+event.attendee.role.unknown = Người tham dự chưa biết (%1$S)
+
+event.attendee.usertype.individual = Cá nhân
+event.attendee.usertype.group = Nhóm
+event.attendee.usertype.resource = Tài nguyên
+event.attendee.usertype.room = Phòng
+event.attendee.usertype.unknown = Kiểu không xác định (%1$S)
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-event-dialog.dtd b/l10n-vi/calendar/chrome/calendar/calendar-event-dialog.dtd
new file mode 100644
index 0000000000..0ad05495b6
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-event-dialog.dtd
@@ -0,0 +1,428 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY event.title.label "Chỉnh sửa Mục" >
+
+<!ENTITY event.dialog.keepDurationButton.tooltip "Giữ thời lượng khi thay đổi ngày kết thúc">
+<!ENTITY event.dialog.keepDurationButton.accesskey "K">
+
+<!ENTITY newevent.from.label "Từ" >
+<!ENTITY newevent.to.label "Tới" >
+
+<!ENTITY newevent.status.label "Trạng thái" >
+<!ENTITY newevent.status.accesskey "r" >
+<!ENTITY newevent.eventStatus.none.label "Không xác định" >
+<!ENTITY newevent.eventStatus.none.accesskey "K" >
+<!ENTITY newevent.todoStatus.none.label "Không xác định" >
+<!ENTITY newevent.eventStatus.cancelled.label "Đã hủy" >
+<!ENTITY newevent.eventStatus.cancelled.accesskey "n" >
+<!ENTITY newevent.todoStatus.cancelled.label "Đã hủy" >
+<!ENTITY newevent.status.tentative.label "Phân vân" >
+<!ENTITY newevent.status.tentative.accesskey "P" >
+<!ENTITY newevent.status.confirmed.label "Đã xác nhận" >
+<!ENTITY newevent.status.confirmed.accesskey "c" >
+<!ENTITY newevent.status.needsaction.label "Cần thao tác" >
+<!ENTITY newevent.status.inprogress.label "Đang xử lí" >
+<!ENTITY newevent.status.completed.label "Xong vào" >
+
+<!-- The following entity is for New Task dialog only -->
+<!ENTITY newtodo.percentcomplete.label "&#37; hoàn tất">
+
+<!-- LOCALIZATON NOTE(event.attendees.notify.label,event.attendees.notifyundisclosed.label,
+ event.attendees.disallowcounter.label)
+ - These three labels are displayed side by side in the event dialog, make sure
+ - they still fit in. -->
+<!ENTITY event.attendees.notify.label "Thông báo cho người tham dự">
+<!ENTITY event.attendees.notify.accesskey "f">
+<!ENTITY event.attendees.notifyundisclosed.label "Lời mời riêng cho mỗi người tham dự">
+<!ENTITY event.attendees.notifyundisclosed.accesskey "x">
+<!ENTITY event.attendees.notifyundisclosed.tooltip "Tùy chọn này sẽ gửi một email mời cho mỗi người tham dự. Mỗi lời mời chỉ chứa người tham dự người nhận để các danh tính người tham dự khác không được tiết lộ.">
+<!ENTITY event.attendees.disallowcounter.label "Không cho phép truy cập">
+<!ENTITY event.attendees.disallowcounter.accesskey "a">
+<!ENTITY event.attendees.disallowcounter.tooltip "Cho biết rằng bạn sẽ không chấp nhận phản đối">
+
+<!-- Keyboard Shortcuts -->
+<!ENTITY event.dialog.new.event.key2 "I">
+<!ENTITY event.dialog.new.task.key2 "D">
+<!ENTITY event.dialog.new.message.key2 "N">
+<!ENTITY event.dialog.close.key "W">
+<!ENTITY event.dialog.save.key "S">
+<!ENTITY event.dialog.saveandclose.key "L">
+<!ENTITY event.dialog.print.key "P">
+<!ENTITY event.dialog.undo.key "Z">
+<!ENTITY event.dialog.redo.key "Y">
+<!ENTITY event.dialog.cut.key "X">
+<!ENTITY event.dialog.copy.key "C">
+<!ENTITY event.dialog.paste.key "V">
+<!ENTITY event.dialog.select.all.key "A">
+
+<!-- Menubar -->
+<!ENTITY event.menu.item.new.label "Mới">
+<!ENTITY event.menu.item.new.accesskey "M">
+<!ENTITY event.menu.item.new.event.label "Sự kiện">
+<!ENTITY event.menu.item.new.event.accesskey "S">
+<!ENTITY event.menu.item.new.task.label "Tác vụ">
+<!ENTITY event.menu.item.new.task.accesskey "T">
+<!ENTITY event.menu.item.new.message.label "Thông điệp">
+<!ENTITY event.menu.item.new.message.accesskey "i">
+<!ENTITY event.menu.item.new.contact.label "Sổ địa chỉ liên hệ">
+<!ENTITY event.menu.item.new.contact.accesskey "a">
+<!ENTITY event.menu.item.close.label "Đóng">
+<!ENTITY event.menu.item.close.accesskey "g">
+
+<!-- LOCALIZATION NOTE
+ - event.menu.item.save.accesskey is used for the "Save" menu item
+ - when editing events/tasks in a dialog window.
+ - event.menu.item.save.tab.accesskey is used for the "Save" menu item
+ - when editing events/tasks in a tab. -->
+<!ENTITY event.menu.item.save.label "Lưu">
+<!ENTITY event.menu.item.save.accesskey "L">
+<!ENTITY event.menu.item.save.tab.accesskey "a">
+
+<!-- LOCALIZATION NOTE
+ - event.menu.item.saveandclose.accesskey is used for "Save and Close"
+ - menu item when editing events/tasks in a dialog window.
+ - event.menu.item.saveandclose.tab.accesskey is used for "Save and Close"
+ - when editing events/tasks in a tab. -->
+<!ENTITY event.menu.item.saveandclose.label "Lưu và Đóng">
+<!ENTITY event.menu.item.saveandclose.accesskey "v">
+<!ENTITY event.menu.item.saveandclose.tab.accesskey "z">
+
+<!ENTITY event.menu.item.delete.label "Xóa…">
+<!ENTITY event.menu.item.delete.accesskey "X">
+<!ENTITY event.menu.item.page.setup.label "Thiết lập Trang">
+<!ENTITY event.menu.item.page.setup.accesskey "p">
+<!ENTITY event.menu.item.print.label "In">
+<!ENTITY event.menu.item.print.accesskey "I">
+
+<!ENTITY event.menu.edit.label "Chỉnh sửa">
+<!ENTITY event.menu.edit.accesskey "C">
+<!ENTITY event.menu.edit.undo.label "Hoàn tác">
+<!ENTITY event.menu.edit.undo.accesskey "H">
+<!ENTITY event.menu.edit.redo.label "Làm lại">
+<!ENTITY event.menu.edit.redo.accesskey "L">
+<!ENTITY event.menu.edit.cut.label "Cắt">
+<!ENTITY event.menu.edit.cut.accesskey "t">
+<!ENTITY event.menu.edit.copy.label "Sao chép">
+<!ENTITY event.menu.edit.copy.accesskey "C">
+<!ENTITY event.menu.edit.paste.label "Dán">
+<!ENTITY event.menu.edit.paste.accesskey "D">
+<!ENTITY event.menu.edit.select.all.label "Chọn Toàn Bộ">
+<!ENTITY event.menu.edit.select.all.accesskey "B">
+
+<!ENTITY event.menu.view.label "Hiển thị">
+<!ENTITY event.menu.view.accesskey "H">
+<!ENTITY event.menu.view.toolbars.label "Thanh Công Cụ">
+<!ENTITY event.menu.view.toolbars.accesskey "C">
+<!ENTITY event.menu.view.toolbars.event.label "Thanh Sự Kiện">
+<!ENTITY event.menu.view.toolbars.event.accesskey "S">
+<!ENTITY event.menu.view.toolbars.customize.label "Tùy biến…">
+<!ENTITY event.menu.view.toolbars.customize.accesskey "y">
+<!ENTITY event.menu.view.showlink.label "Hiển thị Liên kết Liên quan">
+<!ENTITY event.menu.view.showlink.accesskey "H">
+
+<!ENTITY event.menu.options.label "Tùy chọn">
+<!ENTITY event.menu.options.accesskey "y">
+<!ENTITY event.menu.options.attendees.label "Mời khách Tham dự…">
+<!ENTITY event.menu.options.attendees.accesskey "M">
+<!ENTITY event.menu.options.timezone2.label "Hiển thị múi giờ">
+<!ENTITY event.menu.options.timezone2.accesskey "z">
+<!ENTITY event.menu.options.priority2.label "Ưu tiên">
+<!ENTITY event.menu.options.priority2.accesskey "u">
+<!ENTITY event.menu.options.priority.notspecified.label "Không xác định">
+<!ENTITY event.menu.options.priority.notspecified.accesskey "K">
+<!ENTITY event.menu.options.priority.low.label "Thấp">
+<!ENTITY event.menu.options.priority.low.accesskey "T">
+<!ENTITY event.menu.options.priority.normal.label "Bình thường">
+<!ENTITY event.menu.options.priority.normal.accesskey "B">
+<!ENTITY event.menu.options.priority.high.label "Cao">
+<!ENTITY event.menu.options.priority.high.accesskey "C">
+<!ENTITY event.menu.options.privacy.label "Riêng tư">
+<!ENTITY event.menu.options.privacy.accesskey "R">
+<!ENTITY event.menu.options.privacy.public.label "Sự kiện Công khai">
+<!ENTITY event.menu.options.privacy.public.accesskey "S">
+<!ENTITY event.menu.options.privacy.confidential.label "Chỉ hiện Ngày và Giờ">
+<!ENTITY event.menu.options.privacy.confidential.accesskey "N">
+<!ENTITY event.menu.options.privacy.private.label "Sự kiện Cá nhân">
+<!ENTITY event.menu.options.privacy.private.accesskey "C">
+<!ENTITY event.menu.options.show.time.label "Hiện tình trạng lịch trình là">
+<!ENTITY event.menu.options.show.time.accesskey "t">
+<!ENTITY event.menu.options.show.time.busy.label "Bận">
+<!ENTITY event.menu.options.show.time.busy.accesskey "B">
+<!ENTITY event.menu.options.show.time.free.label "Rảnh">
+<!ENTITY event.menu.options.show.time.free.accesskey "F">
+
+<!ENTITY event.invite.attendees.label "Mời khách Tham dự…">
+<!ENTITY event.invite.attendees.accesskey "M">
+<!ENTITY event.email.attendees.label "Gửi Email cho Tất cả Khách tham dự…">
+<!ENTITY event.email.attendees.accesskey "a">
+<!ENTITY event.email.tentative.attendees.label "Gửi Email cho các Khách tham dự Chưa quyết định…">
+<!ENTITY event.email.tentative.attendees.accesskey "u">
+<!ENTITY event.remove.attendees.label2 "Xóa tất cả những người tham dự">
+<!ENTITY event.remove.attendees.accesskey "r">
+<!ENTITY event.remove.attendee.label "Xóa người tham dự">
+<!ENTITY event.remove.attendee.accesskey "e">
+
+<!-- Toolbar -->
+<!ENTITY event.toolbar.save.label2 "Lưu">
+<!ENTITY event.toolbar.saveandclose.label "Lưu và đóng">
+<!ENTITY event.toolbar.delete.label "Xóa">
+<!ENTITY event.toolbar.attendees.label "Mời khách Tham dự">
+<!ENTITY event.toolbar.privacy.label "Riêng tư">
+
+<!ENTITY event.toolbar.save.tooltip2 "Lưu">
+<!ENTITY event.toolbar.saveandclose.tooltip "Lưu và đóng">
+<!ENTITY event.toolbar.delete.tooltip "Xóa">
+<!ENTITY event.toolbar.attendees.tooltip "Mời khách tham dự">
+<!ENTITY event.toolbar.attachments.tooltip "Thêm đính kèm">
+<!ENTITY event.toolbar.privacy.tooltip "Thay đổi quyền riêng tư">
+<!ENTITY event.toolbar.priority.tooltip "Thay đổi ưu tiên">
+<!ENTITY event.toolbar.status.tooltip "Thay đổi trạng thái">
+<!ENTITY event.toolbar.freebusy.tooltip "Thay đổi thời gian rảnh/bận">
+
+<!-- Counter box -->
+<!-- LOCALIZATON NOTE(counter.button.*)
+ - This is only visible in the UI if you have received a counterproposal before and are going to
+ - reschedule the event from the imipbar in the email view. Clicking on the buttons will only
+ - populate the form fields in the dialog, there's no other immediate action on clicking like with
+ - the imip bar. Rescheduling will happen after clicking on save&close as usual. This screenshot
+ - illustrates how it might look like: https://bugzilla.mozilla.org/attachment.cgi?id=8810121 -->
+<!ENTITY counter.button.proposal.label "Áp dụng đề xuất">
+<!ENTITY counter.button.proposal.accesskey "p">
+<!ENTITY counter.button.proposal.tooltip2 "Các trường sự kiện sẽ được điền vào bằng cách sử dụng các giá trị từ phản hồi, chỉ lưu có hoặc không có thay đổi bổ sung sẽ thông báo cho tất cả người tham dự theo đó">
+<!ENTITY counter.button.original.label "Áp dụng dữ liệu gốc">
+<!ENTITY counter.button.original.accesskey "r">
+<!ENTITY counter.button.original.tooltip2 "Các trường sẽ được đặt thành các giá trị từ sự kiện ban đầu, trước khi phản hồi được thực hiện">
+
+<!-- Main page -->
+<!ENTITY event.title.textbox.label "Tiêu đề:" >
+<!ENTITY event.title.textbox.accesskey "u">
+<!ENTITY event.location.label "Địa chỉ:" >
+<!ENTITY event.location.accesskey "L">
+<!ENTITY event.categories.label "Phân mục:">
+<!ENTITY event.categories.accesskey "n">
+<!ENTITY event.categories.textbox.label "Thêm một danh mục mới" >
+<!ENTITY event.calendar.label "Lịch:" >
+<!ENTITY event.calendar.accesskey "L">
+<!ENTITY event.attendees.label "Khách tham dự:" >
+<!ENTITY event.attendees.accesskey "a">
+<!ENTITY event.alldayevent.label "Sự kiện Cả ngày" >
+<!ENTITY event.alldayevent.accesskey "S">
+<!ENTITY event.from.label "Bắt đầu:" >
+<!ENTITY event.from.accesskey "B">
+<!ENTITY task.from.label "Bắt đầu:" >
+<!ENTITY task.from.accesskey "B">
+<!ENTITY event.to.label "Kết thúc:" >
+<!ENTITY event.to.accesskey "K">
+<!ENTITY task.to.label "Ngày đến hạn:" >
+<!ENTITY task.to.accesskey "N">
+<!ENTITY task.status.label "Trạng thái:" >
+<!ENTITY task.status.accesskey "r">
+<!ENTITY event.repeat.label "Lặp lại:" >
+<!ENTITY event.repeat.accesskey "i">
+<!ENTITY event.until.label "Cho đến khi:">
+<!ENTITY event.until.accesskey "B">
+<!ENTITY event.reminder.label "Nhắc việc:" >
+<!ENTITY event.reminder.accesskey "v">
+<!ENTITY event.description.label "Mô tả:" >
+<!ENTITY event.description.accesskey "M">
+<!ENTITY event.attachments.label "Đính kèm:" >
+<!ENTITY event.attachments.accesskey "k" >
+<!ENTITY event.attachments.menubutton.label "Đính kèm">
+<!ENTITY event.attachments.menubutton.accesskey "A">
+<!ENTITY event.attachments.url.label "Trang web…">
+<!ENTITY event.attachments.url.accesskey "W">
+<!ENTITY event.attachments.popup.remove.label "Xóa" >
+<!ENTITY event.attachments.popup.remove.accesskey "X" >
+<!ENTITY event.attachments.popup.open.label "Mở" >
+<!ENTITY event.attachments.popup.open.accesskey "M" >
+<!ENTITY event.attachments.popup.removeAll.label "Xóa tất cả" >
+<!ENTITY event.attachments.popup.removeAll.accesskey "a" >
+<!ENTITY event.attachments.popup.attachPage.label "Đính kèm Trang web…" >
+<!ENTITY event.attachments.popup.attachPage.accesskey "w" >
+<!ENTITY event.url.label "Liên kết Liên quan:" >
+<!ENTITY event.priority2.label "Ưu tiên:">
+
+<!ENTITY event.reminder.none.label "Không có nhắc việc " >
+<!ENTITY event.reminder.0minutes.before.label "0 phút trước" >
+<!ENTITY event.reminder.5minutes.before.label "5 phút trước lúc đó" >
+<!ENTITY event.reminder.15minutes.before.label "15 phút trước lúc đó" >
+<!ENTITY event.reminder.30minutes.before.label "30 phút trước lúc đó" >
+<!ENTITY event.reminder.1hour.before.label "1 tiếng trước lúc đó" >
+<!ENTITY event.reminder.2hours.before.label "2 tiếng trước lúc đó" >
+<!ENTITY event.reminder.12hours.before.label "12 giờ trước" >
+<!ENTITY event.reminder.1day.before.label "1 ngày trước lúc đó" >
+<!ENTITY event.reminder.2days.before.label "2 ngày trước lúc đó" >
+<!ENTITY event.reminder.1week.before.label "1 tuần trước lúc đó" >
+<!ENTITY event.reminder.custom.label "Tùy biến…" >
+
+<!ENTITY event.reminder.multiple.label "Nhiều lời Nhắc việc…" >
+
+<!ENTITY event.statusbarpanel.freebusy.label "Tình trạng lịch trình:">
+<!ENTITY event.statusbarpanel.privacy.label "Riêng tư:">
+
+<!-- Recurrence dialog -->
+<!ENTITY recurrence.title.label "Chỉnh sửa Việc tái diễn">
+
+<!ENTITY event.repeat.does.not.repeat.label "Không lặp lại">
+<!ENTITY event.repeat.daily.label "Hàng ngày">
+<!ENTITY event.repeat.weekly.label "Hàng tuần">
+<!ENTITY event.repeat.every.weekday.label "Mỗi ngày-làm-việc">
+<!ENTITY event.repeat.bi.weekly.label "Mỗi hai tuần">
+<!ENTITY event.repeat.monthly.label "Hàng tháng">
+<!ENTITY event.repeat.yearly.label "Hàng năm">
+<!ENTITY event.repeat.custom.label "Tùy biến…">
+
+<!ENTITY event.recurrence.pattern.label "Khuôn mẫu cho việc tái diễn">
+<!ENTITY event.recurrence.occurs.label "Lặp lại" >
+<!ENTITY event.recurrence.day.label "hàng ngày" >
+<!ENTITY event.recurrence.week.label "hàng tuần" >
+<!ENTITY event.recurrence.month.label "hàng tháng" >
+<!ENTITY event.recurrence.year.label "hàng năm" >
+
+<!ENTITY event.recurrence.pattern.every.label "Mỗi" >
+<!ENTITY repeat.units.days.both "Ngày" >
+<!ENTITY event.recurrence.pattern.every.weekday.label "Mỗi ngày-làm-việc" >
+
+<!ENTITY event.recurrence.pattern.weekly.every.label "Mỗi" >
+<!ENTITY repeat.units.weeks.both "Tuần" >
+<!ENTITY event.recurrence.on.label "Vào:" >
+
+<!ENTITY event.recurrence.pattern.monthly.every.label "Mỗi" >
+<!ENTITY repeat.units.months.both "Tháng" >
+<!ENTITY event.recurrence.monthly.every.label "Mỗi" >
+<!ENTITY event.recurrence.monthly.first.label "Tuần Đầu">
+<!ENTITY event.recurrence.monthly.second.label "Tuần Hai">
+<!ENTITY event.recurrence.monthly.third.label "Tuần Ba">
+<!ENTITY event.recurrence.monthly.fourth.label "Tuần Bốn">
+<!ENTITY event.recurrence.monthly.fifth.label "Tuần Năm">
+<!ENTITY event.recurrence.monthly.last.label "Tuần Cuối">
+<!ENTITY event.recurrence.pattern.monthly.week.1.label "Chủ nhật" >
+<!ENTITY event.recurrence.pattern.monthly.week.2.label "Thứ Hai" >
+<!ENTITY event.recurrence.pattern.monthly.week.3.label "Thứ Ba" >
+<!ENTITY event.recurrence.pattern.monthly.week.4.label "Thứ Tư" >
+<!ENTITY event.recurrence.pattern.monthly.week.5.label "Thứ Năm" >
+<!ENTITY event.recurrence.pattern.monthly.week.6.label "Thứ Sáu" >
+<!ENTITY event.recurrence.pattern.monthly.week.7.label "Thứ Bảy" >
+<!ENTITY event.recurrence.repeat.dayofmonth.label "Ngày của tháng">
+<!ENTITY event.recurrence.repeat.recur.label "Tái diễn vào ngày">
+
+<!ENTITY event.recurrence.every.label "Mỗi:" >
+<!ENTITY repeat.units.years.both "Năm" >
+<!ENTITY event.recurrence.pattern.yearly.every.month.label "Mỗi" >
+
+<!-- LOCALIZATON NOTE
+ Some languages use a preposition when describing dates:
+ Portuguese: 6 de Setembro
+ English: 6 [of] September
+ event.recurrence.pattern.yearly.of.label is "of" in
+ Edit recurrence window -> Recurrence pattern -> Repeat yearly
+-->
+<!ENTITY event.recurrence.pattern.yearly.of.label "" >
+
+<!ENTITY event.recurrence.pattern.yearly.month.1.label "Tháng Một" >
+<!ENTITY event.recurrence.pattern.yearly.month.2.label "Tháng Hai" >
+<!ENTITY event.recurrence.pattern.yearly.month.3.label "Tháng Ba" >
+<!ENTITY event.recurrence.pattern.yearly.month.4.label "Tháng Tư" >
+<!ENTITY event.recurrence.pattern.yearly.month.5.label "Tháng Năm" >
+<!ENTITY event.recurrence.pattern.yearly.month.6.label "Tháng Sáu" >
+<!ENTITY event.recurrence.pattern.yearly.month.7.label "Tháng Bảy" >
+<!ENTITY event.recurrence.pattern.yearly.month.8.label "Tháng Tám" >
+<!ENTITY event.recurrence.pattern.yearly.month.9.label "Tháng Chín" >
+<!ENTITY event.recurrence.pattern.yearly.month.10.label "Tháng Mười" >
+<!ENTITY event.recurrence.pattern.yearly.month.11.label "Tháng Mười Một" >
+<!ENTITY event.recurrence.pattern.yearly.month.12.label "Tháng Mười Hai" >
+<!ENTITY event.recurrence.yearly.every.label "Mỗi">
+<!ENTITY event.recurrence.yearly.first.label "Tuần Đầu">
+<!ENTITY event.recurrence.yearly.second.label "Tuần Hai">
+<!ENTITY event.recurrence.yearly.third.label "Tuần Ba">
+<!ENTITY event.recurrence.yearly.fourth.label "Tuần Bốn">
+<!ENTITY event.recurrence.yearly.fifth.label "Tuần Năm">
+<!ENTITY event.recurrence.yearly.last.label "Tuần Cuối">
+<!ENTITY event.recurrence.pattern.yearly.week.1.label "Chủ nhật" >
+<!ENTITY event.recurrence.pattern.yearly.week.2.label "Thứ Hai" >
+<!ENTITY event.recurrence.pattern.yearly.week.3.label "Thứ Ba" >
+<!ENTITY event.recurrence.pattern.yearly.week.4.label "Thứ Tư" >
+<!ENTITY event.recurrence.pattern.yearly.week.5.label "Thứ Năm" >
+<!ENTITY event.recurrence.pattern.yearly.week.6.label "Thứ Sáu" >
+<!ENTITY event.recurrence.pattern.yearly.week.7.label "Thứ Bảy" >
+<!ENTITY event.recurrence.pattern.yearly.day.label "ngày" >
+<!ENTITY event.recurrence.of.label "của" >
+<!ENTITY event.recurrence.pattern.yearly.month2.1.label "Tháng Một" >
+<!ENTITY event.recurrence.pattern.yearly.month2.2.label "Tháng Hai" >
+<!ENTITY event.recurrence.pattern.yearly.month2.3.label "Tháng Ba" >
+<!ENTITY event.recurrence.pattern.yearly.month2.4.label "Tháng Tư" >
+<!ENTITY event.recurrence.pattern.yearly.month2.5.label "Tháng Năm" >
+<!ENTITY event.recurrence.pattern.yearly.month2.6.label "Tháng Sáu" >
+<!ENTITY event.recurrence.pattern.yearly.month2.7.label "Tháng Bảy" >
+<!ENTITY event.recurrence.pattern.yearly.month2.8.label "Tháng Tám" >
+<!ENTITY event.recurrence.pattern.yearly.month2.9.label "Tháng Chín" >
+<!ENTITY event.recurrence.pattern.yearly.month2.10.label "Tháng Mười" >
+<!ENTITY event.recurrence.pattern.yearly.month2.11.label "Tháng Mười Một" >
+<!ENTITY event.recurrence.pattern.yearly.month2.12.label "Tháng Mười Hai" >
+
+<!ENTITY event.recurrence.range.label "Khoảng thời gian tái diễn">
+<!ENTITY event.recurrence.forever.label "Không có ngày kết thúc" >
+<!ENTITY event.recurrence.repeat.for.label "Tạo" >
+<!ENTITY event.recurrence.appointments.label "Cuộc hẹn" >
+<!ENTITY event.repeat.until.label "Lặp lại cho tới khi" >
+<!ENTITY event.recurrence.preview.label "Xem trước">
+
+<!-- Attendees dialog -->
+<!ENTITY invite.title.label "Mời khách Tham dự">
+<!ENTITY event.organizer.label "Người tổ chức">
+<!ENTITY event.freebusy.suggest.slot "Đề xuất khung thời gian:">
+<!ENTITY event.freebusy.button.next.slot "Khe tiếp theo">
+<!ENTITY event.freebusy.button.previous.slot "Khe trước">
+<!ENTITY event.freebusy.zoom "Thu phóng:">
+<!ENTITY event.freebusy.legend.free "Rảnh" >
+<!ENTITY event.freebusy.legend.busy "Bận" >
+<!ENTITY event.freebusy.legend.busy_tentative "Phân vân" >
+<!ENTITY event.freebusy.legend.busy_unavailable "Ra khỏi văn phòng" >
+<!ENTITY event.freebusy.legend.unknown "Không có thông tin" >
+<!ENTITY event.attendee.role.required "Người tham dự Quan trọng">
+<!ENTITY event.attendee.role.optional "Người tham dự Phụ">
+<!ENTITY event.attendee.role.chair "Chủ tọa">
+<!ENTITY event.attendee.role.nonparticipant "Không có Người tham dự">
+<!ENTITY event.attendee.usertype.individual "Cá nhân">
+<!ENTITY event.attendee.usertype.group "Nhóm">
+<!ENTITY event.attendee.usertype.resource "Tài nguyên">
+<!ENTITY event.attendee.usertype.room "Phòng">
+<!ENTITY event.attendee.usertype.unknown "Không rõ">
+
+<!-- Timezone dialog -->
+<!ENTITY timezone.title.label "Vui lòng Xác định Múi giờ">
+<!ENTITY event.timezone.custom.label "Hiện thêm múi giờ…">
+
+<!-- Read-Only dialog -->
+<!ENTITY read.only.general.label "Tổng quát">
+<!ENTITY read.only.title.label "Tiêu đề:">
+<!ENTITY read.only.calendar.label "Lịch:">
+<!ENTITY read.only.event.start.label "Ngày bắt đầu:">
+<!ENTITY read.only.task.start.label "Ngày bắt đầu:">
+<!ENTITY read.only.event.end.label "Ngày kết thúc:">
+<!ENTITY read.only.task.due.label "Ngày đến hạn:">
+<!ENTITY read.only.repeat.label "Lặp lại:">
+<!ENTITY read.only.location.label "Địa chỉ:">
+<!ENTITY read.only.category.label "Phân mục:">
+<!ENTITY read.only.organizer.label "Người tổ chức:">
+<!ENTITY read.only.reminder.label "Nhắc việc:">
+<!ENTITY read.only.attachments.label "Đính kèm:">
+<!ENTITY read.only.attendees.label "Khách tham dự">
+<!ENTITY read.only.description.label "Mô tả">
+<!ENTITY read.only.link.label "Liên kết Liên quan">
+
+<!-- Summary dialog -->
+<!ENTITY summary.dialog.saveclose.label "Lưu và đóng">
+<!ENTITY summary.dialog.saveclose.tooltiptext "Lưu các thay đổi và đóng cửa sổ mà không thay đổi trạng thái tham gia và gửi phản hồi">
+<!ENTITY summary.dialog.accept.label "Chấp nhận">
+<!ENTITY summary.dialog.accept.tooltiptext "Chấp nhận lời mời">
+<!ENTITY summary.dialog.tentative.label "Phân vân">
+<!ENTITY summary.dialog.tentative.tooltiptext "Dự kiến chấp nhận lời mời">
+<!ENTITY summary.dialog.decline.label "Từ chối">
+<!ENTITY summary.dialog.decline.tooltiptext "Từ chối lời mời">
+<!ENTITY summary.dialog.dontsend.label "Không gửi phản hồi">
+<!ENTITY summary.dialog.dontsend.tooltiptext "Thay đổi trạng thái tham gia của bạn mà không gửi trả lời cho người tổ chức và đóng cửa sổ">
+<!ENTITY summary.dialog.send.label "Gửi phản hồi ngay">
+<!ENTITY summary.dialog.send.tooltiptext "Gửi phản hồi cho người tổ chức và đóng cửa sổ">
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-event-dialog.properties b/l10n-vi/calendar/chrome/calendar/calendar-event-dialog.properties
new file mode 100644
index 0000000000..6b37ddf68b
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-event-dialog.properties
@@ -0,0 +1,541 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE (dailyEveryNth):
+# Edit recurrence window -> Recurrence pattern -> Daily repeat rules
+# #1 - number
+# e.g. "every 4 days"
+dailyEveryNth=mỗi ngày;mỗi #1 ngày
+repeatDetailsRuleDaily4=mỗi ngày-làm-việc
+
+# LOCALIZATION NOTE (weeklyNthOnNounclass...)
+# Edit recurrence window -> Recurrence pattern -> Weekly repeat rules
+# Translate these strings according to noun class/gender of weekday (%1$S)
+# set in 'repeadDetailsDay...Nounclass' strings.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add others strings with suffix 3, 4,... for others noun classes if your
+# language need them. In this case, corresponding strings must be added for
+# others rule strings with 'Nounclass...' suffix and corresponding values
+# "nounclass..." must be written in 'repeatDetailsDayxNounclass' strings.
+# %1$S - weekday (one or more)
+# #2 - week interval
+# e.g. "every 3 weeks on Tuesday, Wednesday and Thursday
+weeklyNthOnNounclass1=mỗi %1$S;mỗi #2 tuần vào %1$S
+weeklyNthOnNounclass2=mỗi %1$S;mỗi #2 tuần vào %1$S
+
+# LOCALIZATION NOTE (weeklyEveryNth):
+# Edit recurrence window -> Recurrence pattern -> Weekly repeat rules
+# #1 - interval
+# e.g. "every 5 weeks"
+weeklyEveryNth=mỗi tuần;mỗi #1 tuần
+
+# LOCALIZATION NOTE ('repeatDetailsDay...' and 'repeatDetailsDay...Nounclass'):
+# Week days names and week days noun classes (feminine/masculine grammatical
+# gender) for languages that need different localization when weekdays nouns
+# have different noun classes (genders).
+# For every weekday, in 'repeatDetailsDay...Nounclass' strings write:
+# "nounclass1" for languages with grammatical genders -> MASCULINE gender;
+# for languages with noun classes -> a noun class;
+# for languages without noun classes or grammatical gender.
+#
+# "nounclass2" for languages with grammatical genders -> FEMININE gender;
+# for languages with noun classes -> a different noun class.
+#
+# "nounclass3", "nounclass4" and so on for languages that need more than two
+# noun classes for weekdays. In this case add corresponding
+# rule string with "Nounclass..." suffix and ordinal string
+# "repeatOrdinalxNounclass..."
+# Will be used rule strings with "Nounclass..." suffix corresponding to the
+# following strings if there is a weekday in the rule string.
+repeatDetailsDay1=Chủ nhật
+repeatDetailsDay1Nounclass=nounclass1
+repeatDetailsDay2=Thứ Hai
+repeatDetailsDay2Nounclass=nounclass1
+repeatDetailsDay3=Thứ Ba
+repeatDetailsDay3Nounclass=nounclass1
+repeatDetailsDay4=Thứ Tư
+repeatDetailsDay4Nounclass=nounclass1
+repeatDetailsDay5=Thứ Năm
+repeatDetailsDay5Nounclass=nounclass1
+repeatDetailsDay6=Thứ Sáu
+repeatDetailsDay6Nounclass=nounclass1
+repeatDetailsDay7=Thứ Bảy
+repeatDetailsDay7Nounclass=nounclass1
+
+# LOCALIZATION NOTE (repeatDetailsAnd)
+# Used to show a number of weekdays in a list
+# i.e. "Sunday, Monday, Tuesday " + and + " Wednesday"
+repeatDetailsAnd=và
+
+# LOCALIZATION NOTE (monthlyRuleNthOfEveryNounclass...):
+# Edit recurrence window -> Recurrence pattern -> Monthly repeat rules
+# Translate these strings according to noun class/gender of weekday (%2$S)
+# set in 'repeadDetailsDay...Nounclass' strings.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add others strings with suffix 3, 4,... for others noun classes if your
+# language need them. In this case, corresponding strings must be added for
+# others rule strings with 'Nounclass...' suffix and corresponding values
+# "nounclass..." must be written in 'repeatDetailsDayxNounclass' strings.
+# %1$S - list of weekdays with ordinal, article and noun class/gender
+# (ordinal and weekday of every element in the list follow the order
+# and the rule of ordinalWeekdayOrder string)
+# #2 - interval
+# e.g. "the first Monday and the last Friday of every 3 months"
+monthlyRuleNthOfEveryNounclass1=%1$S của mỗi tháng;%1$S của mỗi #2 tháng
+monthlyRuleNthOfEveryNounclass2=%1$S của mỗi tháng;%1$S của mỗi #2 tháng
+
+# LOCALIZATION NOTE (ordinalWeekdayOrder):
+# Edit recurrence window -> Recurrence pattern -> Monthly repeat rules
+# This string allows to change the order of the elements "ordinal" and
+# "weekday" (or to insert a word between them) for the argument %1$S of the
+# string monthlyRuleNthOfEveryNounclass...
+# Without changing this string, the order is that one required from most
+# languages: ordinal + weekday (e.g. "'the first' 'Monday' of every 2 months").
+# %1$S - ordinal with article
+# %2$S - weekday noun
+# e.g. "'the first' 'Monday'"
+# DONT_TRANSLATE: Make sure there are no extra words in this property, just variables.
+ordinalWeekdayOrder=%2$S %1$S
+
+# LOCALIZATION NOTE (monthlyEveryOfEveryNounclass...):
+# Edit recurrence window -> Recurrence pattern -> Monthly repeat rules
+# Translate these strings according to noun class/gender of weekday (%1$S)
+# set in 'repeadDetailsDay...Nounclass' strings.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add others strings with suffix 3, 4,... for others noun classes if your
+# language need them. In this case, corresponding strings must be added for
+# others rule strings with 'Nounclass...' suffix and corresponding values
+# "nounclass..." must be written in 'repeatDetailsDayxNounclass' strings.
+# %1$S - list of single weekdays and/or weekdays with ordinal, article and
+# noun class/gender when rule contains also specific day in the month
+# #2 - interval
+# e.g. "every Monday, Tuesday and the second Sunday of every month"
+monthlyEveryOfEveryNounclass1=mỗi %1$S của mỗi tháng;mỗi %1$S của mỗi #2 tháng
+monthlyEveryOfEveryNounclass2=mỗi %1$S của mỗi tháng;mỗi %1$S của mỗi #2 tháng
+
+# LOCALIZATION NOTE (monthlyDaysOfNth_day):
+# Edit recurrence window -> Recurrence pattern -> Monthly repeat rules
+# %1$S - day of month or a sequence of days of month, possibly followed by an ordinal symbol
+# (depending on the string dayOrdinalSymbol in dateFormat.properties) separated with commas;
+# e.g. "days 3, 6 and 9" or "days 3rd, 6th and 9th"
+monthlyDaysOfNth_day=ngày %1$S;ngày %1$S
+
+# LOCALIZATION NOTE (monthlyDaysOfNth):
+# Edit recurrence window -> Recurrence pattern -> Monthly repeat rules
+# %1$S - it's the string monthlyDaysOfNth_day: day of month or a sequence of days
+# of month, possibly followed by an ordinal symbol, separated with commas;
+# #2 - monthly interval
+# e.g. "days 3, 6, 9 and 12 of every 3 months"
+monthlyDaysOfNth=%1$S của mỗi tháng;%1$S của mỗi #2 tháng
+
+# LOCALIZATION NOTE (monthlyLastDayOfNth):
+# Edit recurrence window -> Recurrence pattern -> Monthly repeat rules
+# %1$S - day of month
+# #2 - month interval
+# e.g. "the last day of every 3 months"
+monthlyLastDayOfNth=ngày cuối của mỗi tháng;ngày cuối của mỗi #1 tháng
+
+# LOCALIZATION NOTE (monthlyEveryDayOfNth):
+# Edit recurrence window -> Recurrence pattern -> Monthly repeat rules
+# #2 - month interval
+# e.g. "every day of the month every 4 months"
+monthlyEveryDayOfNth=mỗi ngày của mỗi tháng;mỗi ngày của mỗi #2 tháng
+
+# LOCALIZATION NOTE (repeatOrdinal...Nounclass...):
+# Ordinal numbers nouns for every noun class (grammatical genders) of weekdays
+# considered in 'repeatDetailsDayxNounclass' strings. For languages that need
+# localization according to genders or noun classes.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add 'repeatOrdinal...Nounclass' strings with suffix 3, 4 and so on for
+# languages with more than two noun classes for weekdays. In this case
+# must be added corresponding rule strings with 'Nounclass...' suffix and
+# corresponding values "nounclass..." must be written in
+# 'repeatDetailsDayxNounclass' strings.
+repeatOrdinal1Nounclass1=đầu tiên
+repeatOrdinal2Nounclass1=thứ hai
+repeatOrdinal3Nounclass1=thứ ba
+repeatOrdinal4Nounclass1=thứ tư
+repeatOrdinal5Nounclass1=thứ năm
+repeatOrdinal-1Nounclass1=cuối cùng
+repeatOrdinal1Nounclass2=đầu tiên
+repeatOrdinal2Nounclass2=thứ hai
+repeatOrdinal3Nounclass2=thứ ba
+repeatOrdinal4Nounclass2=thứ tư
+repeatOrdinal5Nounclass2=thứ năm
+repeatOrdinal-1Nounclass2=cuối cùng
+
+# LOCALIZATION NOTE (yearlyNthOn):
+# Edit recurrence window -> Recurrence pattern -> Yearly repeat rules
+# %1$S - month name
+# %2$S - day of month possibly followed by an ordinal symbol (depending on the string
+# dayOrdinalSymbol in dateFormat.properties)
+# #3 - yearly interval
+# e.g. "every 3 years on December 14"
+# "every 2 years on December 8th"
+yearlyNthOn=mỗi %2$S %1$S;mỗi #3 năm một lần vào %2$S %1$S
+
+# LOCALIZATION NOTE (yearlyNthOnNthOfNounclass...):
+# Edit recurrence window -> Recurrence pattern -> Yearly repeat rules
+# Translate these strings according to noun class/gender of weekday (%2$S)
+# set in 'repeadDetailsDay...Nounclass' strings.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add others strings with suffix 3, 4,... for others noun classes if your
+# language need them. In this case, corresponding strings must be added for
+# others rule strings with 'Nounclass...' suffix and corresponding values
+# "nounclass..." must be written in 'repeatDetailsDayxNounclass' strings.
+# %1$S - ordinal with article and noun class/gender corresponding to weekday
+# %2$S - weekday
+# %3$S - month
+# #4 - yearly interval
+# e.g. "the second Monday of every March"
+# e.g "every 3 years the second Monday of March"
+yearlyNthOnNthOfNounclass1=%2$S %1$S của mỗi %3$S;mỗi #4 năm một lần vào %2$S %1$S của %3$S
+yearlyNthOnNthOfNounclass2=%2$S %1$S của mỗi %3$S;mỗi #4 năm một lần vào %2$S %1$S của %3$S
+
+# LOCALIZATION NOTE (yearlyOnEveryNthOfNthNounclass...):
+# Edit recurrence window -> Recurrence pattern -> Yearly repeat rules
+# Translate these strings according to noun class/gender of weekday (%1$S)
+# set in 'repeadDetailsDay...Nounclass' strings.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add others strings with suffix 3, 4,... for others noun classes if your
+# language need them. In this case, corresponding strings must be added for
+# others rule strings with 'Nounclass...' suffix and corresponding values
+# "nounclass..." must be written in 'repeatDetailsDayxNounclass' strings.
+# %1$S - weekday
+# %2$S - month
+# #3 - yearly interval
+# e.g. "every Thursday of March"
+# e.g "every 3 years on every Thursday of March"
+yearlyOnEveryNthOfNthNounclass1=mỗi %1$S của %2$S;mỗi #3 năm vào mỗi %1$S của %2$S
+yearlyOnEveryNthOfNthNounclass2=mỗi %1$S của %2$S;mỗi #3 năm vào mỗi %1$S của %2$S
+
+#LOCALIZATION NOTE (yearlyEveryDayOf):
+# Edit recurrence window -> Recurrence pattern -> Yearly repeat rules
+# This string describes part of a yearly rule which includes every day of a month.
+# %1$S - month
+# #2 - yearly interval
+# e.g. "every day of December"
+# e.g. "every 3 years every day of December"
+yearlyEveryDayOf=mỗi ngày của %1$S, cứ sau 2 năm mỗi ngày của %1$S
+
+repeatDetailsMonth1=Tháng Một
+repeatDetailsMonth2=Tháng Hai
+repeatDetailsMonth3=Tháng Ba
+repeatDetailsMonth4=Tháng Tư
+repeatDetailsMonth5=Tháng Năm
+repeatDetailsMonth6=Tháng Sáu
+repeatDetailsMonth7=Tháng Bảy
+repeatDetailsMonth8=Tháng Tám
+repeatDetailsMonth9=Tháng Chín
+repeatDetailsMonth10=Tháng Mười
+repeatDetailsMonth11=Tháng Mười Một
+repeatDetailsMonth12=Tháng Mười Hai
+
+# LOCALIZATION NOTE (repeatCount):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# %1%$ - A rule string (see above). This is the first line of the link
+# %2%$ - event start date (e.g. mm/gg/yyyy)
+# %3$S - event start time (e.g. hh:mm (PM/AM))
+# %4$S - event end time (e.g. hh:mm (PM/AM))
+# #5 - event occurrence times: number
+# e.g. with monthlyRuleNthOfEvery:
+# "Occurs the first Sunday of every 3 month
+# only on 1/1/2009"
+# from 5:00 PM to 6:00 PM"
+# "Occurs the first Sunday of every 3 month
+# effective 1/1/2009 for 5 times
+# from 5:00 PM to 6:00 PM"
+repeatCount=Diễn ra %1$S\nhiệu lực %2$S trong #5 lần\ntừ %3$S tới %4$S.;Diễn ra %1$S\nhiệu lực %2$S trong #5 lần\ntừ %3$S tới %4$S.
+
+# LOCALIZATION NOTE (repeatCountAllDay):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# %1%$ - A rule string (see above). This is the first line of the link
+# %2%$ - event start date (e.g. mm/gg/yyyy)
+# #3 - event occurrence times: number
+# e.g. with monthlyRuleNthOfEvery:
+# "Occurs the first Sunday of every 3 month
+# only on 1/1/2009"
+# "Occurs the first Sunday of every 3 month
+# effective 1/1/2009 for 5 times"
+repeatCountAllDay=Diễn ra %1$S\nhiệu lực %2$S trong #3 lần.;Diễn ra %1$S\nhiệu lực %2$S trong #3 lần.
+
+# LOCALIZATION NOTE (repeatDetailsUntil):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# %1%$ - A rule string (see above). This is the first line of the link
+# %2%$ - event start date (e.g. mm/gg/yyyy)
+# %3$S - event end date (e.g. mm/gg/yyyy)
+# %4$S - event start time (e.g. hh:mm (PM/AM))
+# %5$S - event end time (e.g. hh:mm (PM/AM))
+# e.g. with weeklyNthOn:
+# "Occurs every 2 weeks on Sunday and Friday
+# effective 1/1/2009 until 1/1/2010
+# from 5:00 PM to 6:00 PM"
+repeatDetailsUntil=Diễn ra %1$S\nhiệu lực %2$S cho tới %3$S\ntừ %4$S tới %5$S.
+
+# LOCALIZATION NOTE (repeatDetailsUntilAllDay):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# %1%$ - A rule string (see above). This is the first line of the link
+# %2%$ - event start date (e.g. mm/gg/yyyy)
+# %3$S - event end date (e.g. mm/gg/yyyy)
+# e.g. with monthlyDaysOfNth and all day event:
+# "Occurs day 3 of every 5 month
+# effective 1/1/2009 until 1/1/2010"
+repeatDetailsUntilAllDay=Diễn ra %1$S\nhiệu lực %2$S cho tới %3$S.
+
+# LOCALIZATION NOTE (repeatDetailsInfinite):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# %1%$ - A rule string (see above). This is the first line of the link
+# %2%$ - event start date (e.g. mm/gg/yyyy)
+# %3$S - event start time (e.g. hh:mm (PM/AM))
+# %4$S - event end time (e.g. hh:mm (PM/AM))
+# e.g. with monthlyDaysOfNth:
+# "Occurs day 3 of every 5 month
+# effective 1/1/2009
+# from 5:00 PM to 6:00 PM"
+repeatDetailsInfinite=Diễn ra %1$S\nhiệu lực %2$S\ntừ %3$S tới %4$S.
+
+# LOCALIZATION NOTE (repeatDetailsInfiniteAllDay):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# %1%$ - A rule string (see above). This is the first line of the link
+# %2%$ - event start date (e.g. mm/gg/yyyy)
+# e.g. with monthlyDaysOfNth and all day event:
+# "Occurs day 3 of every 5 month
+# effective 1/1/2009"
+repeatDetailsInfiniteAllDay=Diễn ra %1$S\nhiệu lực %2$S.
+
+# LOCALIZATION NOTE (monthlyLastDay):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# A monthly rule with one or more days of the month (monthlyDaysOfNth) and the
+# string "the last day" of the month.
+# e.g.: "Occurs day 15, 20, 25 and the last day of every 3 months"
+monthlyLastDay=ngày cuối cùng
+
+# LOCALIZATION NOTE (ruleTooComplex):
+# This string is shown in the repeat details area if our code can't handle the
+# complexity of the recurrence rule yet.
+ruleTooComplex=Nhấn vào đây để biết thêm chi tiết
+
+# LOCALIZATION NOTE (ruleTooComplexSummary):
+# This string is shown in the event summary dialog if our code can't handle the
+# complexity of the recurrence rule yet.
+ruleTooComplexSummary=Không xác định lặp lại chi tiết
+
+# differences between the dialog for an Event or a Task
+newEvent=Sự kiện Mới
+newTask=Tác vụ Mới
+itemMenuLabelEvent=Sự kiện
+itemMenuAccesskeyEvent2=F
+itemMenuLabelTask=Tác vụ
+itemMenuAccesskeyTask2=F
+
+emailSubjectReply=TL: %1$S
+
+# Link Location Dialog
+specifyLinkLocation=Vui lòng xác định địa chỉ liên kết
+enterLinkLocation=Nhập một trang web, hoặc địa chỉ tài liệu.
+
+summaryDueTaskLabel=Đến hạn:
+
+# Attach File Dialog
+attachViaFilelink=Tập tin sử dụng %1$S
+selectAFile=Vui lòng chọn tập tin đính kèm
+removeCalendarsTitle=Xóa phần Đính kèm
+
+# LOCALIZATION NOTE (removeAttachmentsText): Semi-colon list of plural forms for
+# prompting attachment removal.
+# See http://developer.mozilla.org/en/Localization_and_Plurals
+removeAttachmentsText=Bạn có thực sự muốn xóa #1 đính kèm không?
+
+# Recurrence Dialog Widget Order
+# LOCALIZATION NOTE: You can change the order of below params
+# Edit recurrence window -> Recurrence pattern -> Repeat monthly
+# %1$S - ordinal with article, %2$S - weekday
+# e.g. "the First Saturday"
+# DONT_TRANSLATE: Make sure there are no extra words in this property, just variables.
+monthlyOrder=%1$S %2$S
+
+# Edit recurrence window -> Recurrence pattern -> Repeat yearly
+# %1$S - day of month, %2$S - of, %3$S - month
+# e.g. "6 [of] September"
+# If you don't need %2$S in your locale - please put this on the third place.
+# DONT_TRANSLATE: Make sure there are no extra words in this property, just variables.
+yearlyOrder=%1$S %3$S %2$S
+
+# Edit recurrence window -> Recurrence pattern -> Repeat yearly
+# %1$S - ordinal with article, %2$S - weekday, %3$S - of, %4$S - month
+# e.g. "the First Saturday of September"
+# If you don't need %3$S in your locale - please put this on the third place.
+# DONT_TRANSLATE: Make sure there are no extra words in this property, just variables.
+yearlyOrder2=%1$S %2$S %3$S %4$S
+
+# LOCALIZATION NOTE (pluralForWeekdays):
+# This string allows to set the use of weekdays nouns in plural form for
+# languages that need them in sentences like "every Monday" or "every Sunday
+# of March" etc.
+# Rule strings involved by this setting are:
+# - weeklyNthOn (only the first part) e.g. "every Sunday"
+# - monthlyEveryOfEvery
+# e.g. "every Monday of every month;every Monday every 2 months"
+# - yearlyOnEveryNthOfNth
+# e.g. "every Friday of March;every 2 years on every Friday of March"
+# In your local write:
+# "true" if sentences like those above need weekday in plural form;
+# "false" if sentences like those above don't need weekday in plural form;
+pluralForWeekdays=false
+
+# LOCALIZATION NOTE (repeatDetailsDayxxxPlural):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# Weekdays in plural form used inside sentences like "every Monday" or
+# "every Sunday of May" etc. for languages that need them.
+# These plurals will be used inside the following rule strings only if string
+# 'pluralForWeekdays' (see above) is set to "true":
+# - weeklyNthOn (only the first part) e.g. "every Sunday"
+# - monthlyEveryOfEvery
+# e.g. "every Monday of every month;every Monday every 2 months"
+# - yearlyOnEveryNthOfNth
+# e.g. "every Friday of March;every 2 years on every Friday of March"
+repeatDetailsDay1Plural=Chủ nhật
+repeatDetailsDay2Plural=Thứ Hai
+repeatDetailsDay3Plural=Thứ Ba
+repeatDetailsDay4Plural=Thứ Tư
+repeatDetailsDay5Plural=Thứ Năm
+repeatDetailsDay6Plural=Thứ Sáu
+repeatDetailsDay7Plural=Thứ Bảy
+
+# LOCALIZATION NOTE (eventRecurrenceForeverLabel):
+# Edit/New Event dialog -> datepicker that sets the until date.
+# For recurring rules that repeat forever, this labels appears in the
+# datepicker, below the minimonth, as an option for the until date.
+eventRecurrenceForeverLabel=Mãi mãi
+
+# LOCALIZATION NOTE (eventRecurrenceMonthlyLastDayLabel):
+# Edit dialog recurrence -> Monthly Recurrence pattern -> Monthly daypicker
+# The label on the monthly daypicker's last button that allows to select
+# the last day of the month inside a BYMONTHDAY rule.
+eventRecurrenceMonthlyLastDayLabel=Ngày cuối
+
+# LOCALIZATION NOTE (counterSummaryAccepted) - this is only visible when opening the dialog from the
+# email summary view after receiving a counter message
+# %1$S - the name or email address of the replying attendee
+counterSummaryAccepted=%1$S đã chấp nhận lời mời, nhưng đưa ra đề xuất phản đối:
+
+# LOCALIZATION NOTE (counterSummaryDeclined) - this is only visible when opening the dialog from the
+# email summary view after receiving a counter message
+# %1$S - the name or email address of the replying attendee
+counterSummaryDeclined=%1$S đã từ chối lời mời, nhưng đưa ra đề xuất phản đối:
+
+# LOCALIZATION NOTE (counterSummaryDelegated) - this is only visible when opening the dialog from the
+# email summary view after receiving a counter message
+# %1$S - the name or email address of the replying attendee
+counterSummaryDelegated=%1$S đã ủy quyền lời mời, nhưng đưa ra đề xuất phản đối:
+
+# LOCALIZATION NOTE (counterSummaryNeedsAction) - this is only visible when opening the dialog from the
+# email summary view after receiving a counter message
+# %1$S - the name or email address of the replying attendee
+counterSummaryNeedsAction=%1$S chưa quyết định có tham gia hay không và đưa ra đề xuất phản đối:
+
+# LOCALIZATION NOTE (counterSummaryTentative) - this is only visible when opening the dialog from the
+# email summary view after receiving a counter message
+# %1$S - the name or email address of the replying attendee
+counterSummaryTentative=%1$S chỉ chấp nhận tạm thời lời mời và đưa ra đề xuất phản đối:
+
+# LOCALIZATION NOTE (counterOnPreviousVersionNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnPreviousVersionNotification=Đây là một đề xuất phản đối cho một phiên bản trước của sự kiện này.
+
+# LOCALIZATION NOTE (counterOnCounterDisallowedNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnCounterDisallowedNotification=Bạn không được phép phản đối khi gửi lời mời.
+
+# LOCALIZATION NOTE (eventAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation
+eventAccepted=Bạn đã chấp nhận lời mời này
+
+# LOCALIZATION NOTE (eventTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation tentatively
+eventTentative=Bạn đã chấp nhận tạm thời lời mời này
+
+# LOCALIZATION NOTE (eventDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the event invitation
+eventDeclined=Bạn đã từ chối lời mời này
+
+# LOCALIZATION NOTE (eventDelegated) - this will be displayed as notification
+# in the summary dialog if the user has delegated his/her participation to one
+# or more other participants (without attending / working on it his/herself)
+eventDelegated=Bạn đã ủy quyền lời mời này
+
+# LOCALIZATION NOTE (eventNeedsAction) - this will be displayed as notification
+# in the summary dialog if the user hasn't yet responded to an invitation
+eventNeedsAction=Bạn chưa trả lời lời mời này
+
+# LOCALIZATION NOTE (taskAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the assigned task
+taskAccepted=Bạn đã chấp nhận để làm nhiệm vụ này
+
+# LOCALIZATION NOTE (taskTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted tentatively the assigned task
+taskTentative=Bạn đã chấp nhận tạm thời để làm nhiệm vụ này
+
+# LOCALIZATION NOTE (taskDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the assigned task
+taskDeclined=Bạn đã từ chối làm nhiệm vụ này
+
+# LOCALIZATION NOTE (taskDelegated) - this will be displayed as notification
+# in the summary dialog if the user has delegated his/her assignment to one or
+# more others (without attending / working on it his/herself)
+taskDelegated=Bạn đã ủy quyền công việc cho nhiệm vụ này
+
+# LOCALIZATION NOTE (taskNeedsAction) - this will be displayed as notification
+# in the summary dialog if the user hasn't yet responded to the task assignment
+taskNeedsAction=Bạn chưa trả lời cho nhiệm vụ này
+
+# LOCALIZATION NOTE (taskInProgress) - this will be displayed as notification
+# in the summary dialog if the user is working on an assigned task
+taskInProgress=Bạn đã bắt đầu làm việc với nhiệm vụ được giao này
+
+# LOCALIZATION NOTE (taskCompleted) - this will be displayed as notification
+# in the summary dialog if the user has completed the work on this assigned task
+taskCompleted=Bạn đã hoàn thành công việc của mình trong nhiệm vụ được giao này
+
+# LOCALIZATION NOTE (sendandcloseButtonLabel) - this is a runtime replacement for
+# event.toolbar.saveandclose.label in the event dialog/tab toolbar if attendees
+# will be notified on saving & closing
+sendandcloseButtonLabel=Gửi và đóng
+
+# LOCALIZATION NOTE (sendandcloseButtonTooltip) - this is a runtime replacement for
+# event.toolbar.saveandclose.tooltip in the event dialog/tab toolbar if attendees
+# will be notified on saving & closing
+sendandcloseButtonTooltip=Thông báo cho người tham dự và đóng
+
+# LOCALIZATION NOTE (saveandsendButtonLabel) - this is a runtime replacement for
+# event.toolbar.save.label2 in the event dialog/tab toolbar if attendees
+# will be notified on saving
+saveandsendButtonLabel=Lưu và gửi
+
+# LOCALIZATION NOTE (saveandsendButtonTooltip) - this is a runtime replacement
+# for event.toolbar.save.tooltip2 in the event dialog/tab toolbar if attendees
+# will be notified on saving
+saveandsendButtonTooltip=Lưu và thông báo cho người tham dự
+
+# LOCALIZATION NOTE (saveandsendMenuLabel) - this is a runtime replacement for
+# event.menu.item.save.label in the event dialog/tab toolbar if attendees
+# will be notified on saving
+saveandsendMenuLabel=Lưu và gửi
+
+# LOCALIZATION NOTE (sendandcloseMenuLabel) - this is a runtime replacement for
+# event.menu.item.saveandclose.label in the event dialog/tab toolbar if attendees
+# will be notified on saving
+sendandcloseMenuLabel=Gửi và đóng
+
+# LOCALIZATION NOTE (attendeesTabLabel) - this is a runtime replacement for
+# event.attendees.label defined in calendar-event-dialog.dtd and used in the
+# event dialog/tab as attendee tab label if an event has at least one attendee
+# %1$S - the number of attendee (1-n)
+attendeesTabLabel=Người tham dự (%1$S):
+
+# LOCALIZATION NOTE (attachmentsTabLabel) - this is a runtime replacement for
+# event.attachments.label defined in calendar-event-dialog.dtd and used in the
+# event dialog/tab as attendee tab label if an event has at least one attachment
+# %1$S - the number of attachments (1-n)
+attachmentsTabLabel=Đính kèm (%1$S):
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-extract.properties b/l10n-vi/calendar/chrome/calendar/calendar-extract.properties
new file mode 100644
index 0000000000..ba5ea830a6
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-extract.properties
@@ -0,0 +1,294 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE:
+# Strings here are used to create events and tasks with start and end times
+# based on email content.
+# None of the strings are displayed in the user interface.
+#
+# You don't have to fill all from.*, until.*, *.prefix and *.suffix patterns.
+# It's ok to leave some empty.
+# Please consider declensions and gender if your language has them.
+# Don't just translate directly. The number of variants doesn't have to be
+# the same as in en-US. All of 0, 1, 2, etc is allowed in patterns except alphabet
+# pattern. You can and should add language specific variants.
+#
+# There are two different ways to find a start time text in email:
+# 1) it matches a from.* pattern and does not have end.prefix or end.suffix next to it
+# 2) it matches until.* pattern and has start.prefix or start.suffix next to it
+# Similar inverse logic applies to end times.
+# These rules enable using prefix and suffix values with only start.* or only until.*
+# patterns localized for some languages and thus not having to repeat the same
+# values in both.
+#
+# Patterns are partially space-insensitive.
+# "deadline is" pattern will find both "deadlineis" and "deadline is"
+# but "deadlineis" won't find "deadline is" or "deadline is".
+# Therefore you should include all spaces that are valid within a pattern.
+
+# LOCALIZATION NOTE (start.prefix):
+# datetimes with these in front are extracted as start times
+# can be a list of values, separate variants by |
+start.prefix =
+
+# LOCALIZATION NOTE (start.suffix):
+# datetimes followed by these are extracted as start times
+start.suffix = bởi | cho đến khi | đến | - | đến | đến | và
+
+# LOCALIZATION NOTE (end.prefix):
+# datetimes with these in front are extracted as end times
+end.prefix = bởi | cho đến khi | đến | - | đến | đến | và | đến hạn: | đến hạn | kết thúc | hạn chót là | hạn chót:
+
+# LOCALIZATION NOTE (end.suffix):
+# datetimes followed by these are extracted as end times
+# can be a list of values, separate variants by |
+end.suffix =
+
+# LOCALIZATION NOTE (no.datetime.prefix):
+# datetimes with these in front won't be used
+# specify full words here
+no.datetime.prefix = tuần trước | đã gửi | email | email | thay vì | > | thật không may | trong | không phải
+
+# LOCALIZATION NOTE (no.datetime.suffix):
+# datetimes followed by these won't be used
+no.datetime.suffix = floor | flr | : | email | e-mail | > | % | usd | dollars | $
+
+# LOCALIZATION NOTE (from.*):
+# can be a list of values, separate variants by |
+
+# LOCALIZATION NOTE (from.today):
+# must not be empty!
+from.today = hôm nay
+
+from.tomorrow = ngày mai
+# LOCALIZATION NOTE (until.*):
+# can be a list of values, separate variants by |
+until.tomorrow =
+
+# LOCALIZATION NOTE (from.ordinal.date):
+# #1 = matches numbers 1-31 and number.x
+# should not have "#1" as this would match any single number in email to a time
+from.ordinal.date = #1 | #1 | #1 | #1
+
+# LOCALIZATION NOTE (until.ordinal.date):
+# #1 = matches numbers 1-31 and number.x
+until.ordinal.date =
+
+from.noon = trưa
+until.noon =
+
+# LOCALIZATION NOTE (from.hour):
+# #1 = matches numbers 0-23 and number.0-number.23
+# should not have "#1" as this would match any single number in email to a time
+from.hour = lúc #1 | khoảng #1 | #1 - | #1 đến
+
+# LOCALIZATION NOTE (until.hour):
+# #1 = matches numbers 0-23 and number.0-number.23
+# should also list how to find end of a timeframe
+until.hour = - #1 | đến #1 | cho đến #1 | bởi #1
+
+# LOCALIZATION NOTE (from.hour.am):
+# #1 = matches numbers 0-23 and number.0-number.23
+from.hour.am = #1 sáng | #1 sáng
+
+# LOCALIZATION NOTE (until.hour.am):
+# #1 = matches numbers 0-23 and number.0-number.23
+# should also list how to find end of a timeframe
+until.hour.am =
+
+# LOCALIZATION NOTE (from.hour.pm):
+# #1 = matches numbers 0-23 and number.0-number.23
+from.hour.pm = #1 chiều | #1 chiều | #1 chiều
+
+# LOCALIZATION NOTE (until.hour.pm):
+# #1 = matches numbers 0-23 and number.0-number.23
+# should also list how to find end of a timeframe
+until.hour.pm =
+
+# LOCALIZATION NOTE (from.half.hour.before):
+# denotes times 30 minutes before next full hour
+from.half.hour.before = #1 giờ kém 30 phút
+
+# LOCALIZATION NOTE (until.half.hour.before):
+# denotes times 30 minutes before next full hour
+until.half.hour.before =
+
+# LOCALIZATION NOTE (from.half.hour.after):
+# denotes times 30 minutes after last full hour
+from.half.hour.after = #1 giờ rưỡi
+
+# LOCALIZATION NOTE (until.half.hour.after):
+# denotes times 30 minutes after last full hour
+until.half.hour.after =
+
+# LOCALIZATION NOTE (from.hour.minutes):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+from.hour.minutes = #1:#2 | lúc #1#2
+
+# LOCALIZATION NOTE (until.hour.minutes):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+until.hour.minutes =
+
+# LOCALIZATION NOTE (from.hour.minutes.am):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+from.hour.minutes.am = #1:#2 sáng | #1:#2 sáng
+
+# LOCALIZATION NOTE (until.hour.minutes.am):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+until.hour.minutes.am =
+
+# LOCALIZATION NOTE (from.hour.minutes.pm):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+from.hour.minutes.pm = #1:#2 chiều | #1:#2 chiều | #1:#2 chiều
+
+# LOCALIZATION NOTE (until.hour.minutes.pm):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+until.hour.minutes.pm =
+
+# LOCALIZATION NOTE (from.monthname.day):
+# #1 = matches numbers 1-31 and number.x
+# #2 = matches monthname
+from.monthname.day = ngày #1 #2
+
+# LOCALIZATION NOTE (until.monthname.day):
+# #1 = matches numbers 1-31
+# #2 = matches monthname
+until.monthname.day =
+
+# LOCALIZATION NOTE (from.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+from.month.day = #1/#2
+
+# LOCALIZATION NOTE (until.month.day):
+# #1 = matches numbers 1-31 and number.x
+# #2 = matches numbers 1-12
+until.month.day =
+
+# LOCALIZATION NOTE (from.year.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+# #3 = matches 2/4 numbers
+from.year.month.day = #1/#2/#3 | #1/#2/#3 | #1-#2-#3
+
+# LOCALIZATION NOTE (until.year.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+# #3 = matches 2/4 numbers
+until.year.month.day =
+
+# LOCALIZATION NOTE (from.year.monthname.day):
+# #1 = matches numbers 1-31
+# #2 = matches monthname
+# #3 = matches 2/4 numbers
+from.year.monthname.day = ngày #1 #2 năm #3
+
+# LOCALIZATION NOTE (until.year.monthname.day):
+# #1 = matches numbers 1-31
+# #2 = matches monthname
+# #3 = matches 2/4 numbers
+until.year.monthname.day =
+
+# LOCALIZATION NOTE (duration.*):
+# can be a list of values, separate variants by |
+
+# LOCALIZATION NOTE (duration.minutes):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.minutes = #1 phút | #1 phút | #1 phút
+
+# LOCALIZATION NOTE (duration.hours):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.hours = #1 giờ | #1 giờ
+
+# LOCALIZATION NOTE (duration.days):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.days = #1 ngày
+
+# LOCALIZATION NOTE (month.*):
+# can be a list of values, separate variants by |
+month.1 = tháng một | tg1
+month.2 = tháng hai | tg2
+month.3 = tháng ba | tg3
+month.4 = tháng tư | tg4
+month.5 = tháng năm | tg5
+month.6 = tháng sáu | tg6
+month.7 = tháng bảy | tg7
+month.8 = tháng tám | tg8
+month.9 = tháng chín | tg9
+month.10 = tháng mười | tg10
+month.11 = tháng mười một | tg11
+month.12 = tháng mười hai | tg12
+
+# LOCALIZATION NOTE (from.weekday.*):
+# used to derive start date based on weekdays mentioned
+# can be a list of values, separate variants by |
+# LOCALIZATION NOTE (from.weekday.0):
+# Regardless of what the first day of the week is in your country, 0 is Sunday here.
+from.weekday.0 = chủ nhật | chủ nhật
+from.weekday.1 = thứ hai | thứ hai
+from.weekday.2 = thứ ba | thứ ba
+from.weekday.3 = thứ tư | thứ tư
+from.weekday.4 = thứ năm | thứ năm
+from.weekday.5 = thứ sáu | thứ sáu
+from.weekday.6 = thứ bảy | thứ bảy
+
+# LOCALIZATION NOTE (until.weekday.*):
+# used to derive end date based on weekdays mentioned
+# can be a list of values, separate variants by |
+# LOCALIZATION NOTE (until.weekday.0):
+# Regardless of what the first day of the week is in your country, 0 is Sunday here.
+until.weekday.0 =
+until.weekday.1 =
+until.weekday.2 =
+until.weekday.3 =
+until.weekday.4 =
+until.weekday.5 =
+until.weekday.6 =
+
+# LOCALIZATION NOTE (number.*):
+# used within other patterns to understand dates where day of month isn't written with digits
+# can be a list of values, separate variants by |
+number.0 = không
+number.1 = một | đầu
+number.2 = hai
+number.3 = ba
+number.4 = bốn
+number.5 = năm
+number.6 = sáu
+number.7 = bảy
+number.8 = tám
+number.9 = chín
+number.10 = mười
+number.11 = mười một
+number.12 = mười hai
+number.13 = mười ba
+number.14 = mười bốn
+number.15 = mười lăm
+number.16 = mười sáu
+number.17 = mười bảy
+number.18 = mười tám
+number.19 = mười chín
+number.20 = hai mươi
+number.21 = hai mươi mốt
+number.22 = hai mươi hai
+number.23 = hai mươi ba
+number.24 = hai mươi bốn
+number.25 = hai mươi lăm
+number.26 = hai mươi sáu
+number.27 = hai mươi bảy
+number.28 = hai mươi tám
+number.29 = hai mươi chín
+number.30 = ba mươi
+number.31 = ba mươi mốt
+
+# LOCALIZATION NOTE (alphabet):
+# list all lower and uppercase letters if your language has an alphabet
+# otherwise leave it empty
+alphabet = aăâbcdđeêghiklmnopqrstuưvxyAĂÂBCDĐEÊGHIJKMNOPQRSTUƯVXY
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.dtd b/l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.dtd
new file mode 100644
index 0000000000..4050714c07
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.dtd
@@ -0,0 +1,19 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-->
+
+<!-- Calendar Invitations Dialog -->
+<!ENTITY calendar.invitations.dialog.invitations.text "Thư mời">
+<!ENTITY calendar.invitations.dialog.statusmessage.updating.text "Cập nhật danh sách thư mời.">
+<!ENTITY calendar.invitations.dialog.statusmessage.noinvitations.text "Không tìm thấy các thư mời chưa có xác nhận.">
+
+<!-- Calendar Invitations List -->
+<!ENTITY calendar.invitations.list.accept.button.label "Chấp nhận">
+<!ENTITY calendar.invitations.list.decline.button.label "Từ chối">
+<!ENTITY calendar.invitations.list.recurrentevent.text "Lặp lại sự kiện">
+<!ENTITY calendar.invitations.list.alldayevent.text "Sự kiện cả ngày">
+<!ENTITY calendar.invitations.list.location.text "Địa chỉ: ">
+<!ENTITY calendar.invitations.list.organizer.text "Người tổ chức: ">
+<!ENTITY calendar.invitations.list.attendee.text "Người tham dự: ">
+<!ENTITY calendar.invitations.list.none.text "Không có">
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.properties b/l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.properties
new file mode 100644
index 0000000000..bd62014996
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-invitations-dialog.properties
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+allday-event=Sự kiện cả ngày
+recurrent-event=Sự kiện lặp lại
+location=Địa chỉ: %S
+organizer=Đơn vị tổ chức: %S
+attendee=Người tham dự: %S
+none=Không có
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd b/l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd
new file mode 100644
index 0000000000..5864a9335f
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd
@@ -0,0 +1,7 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY buttons.occurrence.accesskey "t">
+<!ENTITY buttons.allfollowing.accesskey "f">
+<!ENTITY buttons.parent.accesskey "a">
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.properties b/l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.properties
new file mode 100644
index 0000000000..f72df5c499
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-occurrence-prompt.properties
@@ -0,0 +1,53 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+header.isrepeating.event.label=là một sự kiện lặp lại
+header.isrepeating.task.label=là một nhiệm vụ lặp lại
+header.containsrepeating.event.label=chứa các sự kiện lặp lại
+header.containsrepeating.task.label=chứa các nhiệm vụ lặp lại
+header.containsrepeating.mixed.label=chứa các mục lặp lại của các loại khác nhau
+
+windowtitle.event.copy=Sao chép sự kiện lặp lại
+windowtitle.task.copy=Sao chép nhiệm vụ lặp lại
+windowtitle.mixed.copy=Sao chép các mục lặp lại
+windowtitle.event.cut=Cắt sự kiện lặp lại
+windowtitle.task.cut=Cắt nhiệm vụ lặp lại
+windowtitle.mixed.cut=Cắt các mục lặp lại
+windowtitle.event.delete=Xóa sự kiện lặp lại
+windowtitle.task.delete=Xóa nhiệm vụ lặp lại
+windowtitle.mixed.delete=Xóa các mục lặp lại
+windowtitle.event.edit=Chỉnh sửa sự kiện lặp lại
+windowtitle.task.edit=Chỉnh sửa nhiệm vụ lặp lại
+windowtitle.mixed.edit=Chỉnh sửa các mục lặp lại
+windowtitle.multipleitems=Các mục đã chọn
+
+buttons.single.occurrence.copy.label=Chỉ sao chép lần xuất hiện này
+buttons.single.occurrence.cut.label=Chỉ cắt lần xuất hiện này
+buttons.single.occurrence.delete.label=Chỉ xóa lần xuất hiện này
+buttons.single.occurrence.edit.label=Chỉ chỉnh sửa lần xuất hiện này
+
+buttons.multiple.occurrence.copy.label=Chỉ sao chép các lần xuất hiện đã chọn
+buttons.multiple.occurrence.cut.label=Chỉ cắt các lần xuất hiện đã chọn
+buttons.multiple.occurrence.delete.label=Chỉ xóa các lần xuất hiện đã chọn
+buttons.multiple.occurrence.edit.label=Chỉ chỉnh sửa các lần xuất hiện đã chọn
+
+buttons.single.allfollowing.copy.label=Sao chép lần xuất hiện này và tất cả cái khác ở tương lai
+buttons.single.allfollowing.cut.label=Cắt lần xuất hiện này và tất cả cái khác ở tương lai
+buttons.single.allfollowing.delete.label=Xóa lần xuất hiện này và tất cả cái khác ở tương lai
+buttons.single.allfollowing.edit.label=Chỉnh sửa lần xuất hiện này và tất cả cái khác ở tương lai
+
+buttons.multiple.allfollowing.copy.label=Sao chép các lần xuất hiện được chọn và tất cả cái khác ở tương lai
+buttons.multiple.allfollowing.cut.label=Cắt các lần xuất hiện được chọn và tất cả cái khác ở tương lai
+buttons.multiple.allfollowing.delete.label=Xóa các lần xuất hiện được chọn và tất cả cái khác ở tương lai
+buttons.multiple.allfollowing.edit.label=Chỉnh sửa các lần xuất hiện được chọn và tất cả cái khác ở tương lai
+
+buttons.single.parent.copy.label=Sao chép tất cả các lần xuất hiện
+buttons.single.parent.cut.label=Cắt tất cả các lần xuất hiện
+buttons.single.parent.delete.label=Xóa tất cả các lần xuất hiện
+buttons.single.parent.edit.label=Chỉnh sửa tất cả các lần xuất hiện
+
+buttons.multiple.parent.copy.label=Sao chép tất cả các lần xuất hiện của các mục đã chọn
+buttons.multiple.parent.cut.label=Cắt tất cả các lần xuất hiện của các mục đã chọn
+buttons.multiple.parent.delete.label=Xóa tất cả các lần xuất hiện của các mục đã chọn
+buttons.multiple.parent.edit.label=Chỉnh sửa tất cả các lần xuất hiện của các mục đã chọn
diff --git a/l10n-vi/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd b/l10n-vi/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd
new file mode 100644
index 0000000000..eaf7d2197d
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd
@@ -0,0 +1,14 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-->
+
+<!-- Calendar Subscriptions Dialog -->
+<!ENTITY calendar.subscriptions.dialog.title "Theo dõi Lịch">
+<!ENTITY calendar.subscriptions.dialog.search.label.value "Hiện các lịch có:">
+<!ENTITY calendar.subscriptions.dialog.search.button.label "Tìm kiếm">
+<!ENTITY calendar.subscriptions.dialog.select.label.value "Chọn các lịch để theo dõi:">
+<!ENTITY calendar.subscriptions.dialog.subscribe.button.label "Theo dõi">
+<!ENTITY calendar.subscriptions.dialog.unsubscribe.button.label "Dừng theo dõi">
+<!ENTITY calendar.subscriptions.dialog.statusmessage.busy.label "Tìm kiếm…">
+<!ENTITY calendar.subscriptions.dialog.statusmessage.nomatches.label "Không có kết quả phù hợp.">
diff --git a/l10n-vi/calendar/chrome/calendar/calendar.dtd b/l10n-vi/calendar/chrome/calendar/calendar.dtd
new file mode 100644
index 0000000000..ee2ec0368e
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar.dtd
@@ -0,0 +1,411 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- General -->
+<!ENTITY calendar.calendar.label "Lịch">
+<!ENTITY calendar.calendar.accesskey "C">
+
+<!ENTITY calendar.newevent.button.tooltip "Tạo một sự kiện mới" >
+<!ENTITY calendar.newtask.button.tooltip "Tạo một nhiệm vụ mới" >
+
+<!ENTITY calendar.unifinder.todoitems.label "Nhiệm vụ" >
+
+<!ENTITY calendar.unifinder.showcompletedtodos.label "Hiện các nhiệm vụ đã hoàn tất">
+
+<!ENTITY calendar.today.button.label "Hôm nay">
+<!ENTITY calendar.tomorrow.button.label "Ngày mai">
+<!ENTITY calendar.upcoming.button.label "Sắp tới">
+
+<!ENTITY calendar.events.filter.all.label "Tất cả sự kiện">
+<!ENTITY calendar.events.filter.today.label "Sự kiện hôm nay">
+<!ENTITY calendar.events.filter.future.label "Tất cả các sự kiện trong tương lai">
+<!ENTITY calendar.events.filter.current.label "Ngày được chọn">
+<!ENTITY calendar.events.filter.currentview.label "Sự kiện trong chế độ xem hiện tại">
+<!ENTITY calendar.events.filter.next7Days.label "Sự kiện trong 7 ngày tới">
+<!ENTITY calendar.events.filter.next14Days.label "Sự kiện trong 14 ngày tới">
+<!ENTITY calendar.events.filter.next31Days.label "Sự kiện trong 31 ngày tới">
+<!ENTITY calendar.events.filter.thisCalendarMonth.label "Sự kiện trong tháng này">
+
+<!-- LOCALIZATION NOTE(calendar.unifinder.tree.done.tooltip)
+ - This label and tooltip is used for the column with the checkbox in the
+ - task tree view. -->
+<!ENTITY calendar.unifinder.tree.done.label "Xong">
+<!ENTITY calendar.unifinder.tree.done.tooltip2 "Sắp xếp theo hoàn thành">
+<!ENTITY calendar.unifinder.tree.priority.label "Ưu tiên">
+<!ENTITY calendar.unifinder.tree.priority.tooltip2 "Sắp xếp theo mức độ ưu tiên">
+<!ENTITY calendar.unifinder.tree.title.label "Tiêu đề">
+<!ENTITY calendar.unifinder.tree.title.tooltip2 "Sắp xếp theo tiêu đề">
+<!ENTITY calendar.unifinder.tree.percentcomplete.label "Hoàn tất &#37;">
+<!ENTITY calendar.unifinder.tree.percentcomplete.tooltip2 "Sắp xếp theo hoàn tất &#37;">
+<!ENTITY calendar.unifinder.tree.startdate.label "Bắt đầu">
+<!ENTITY calendar.unifinder.tree.startdate.tooltip2 "Sắp xếp theo ngày bắt đầu">
+<!ENTITY calendar.unifinder.tree.enddate.label "Kết thúc">
+<!ENTITY calendar.unifinder.tree.enddate.tooltip2 "Sắp xếp theo ngày kết thúc">
+<!ENTITY calendar.unifinder.tree.duedate.label "Đến hạn">
+<!ENTITY calendar.unifinder.tree.duedate.tooltip2 "Sắp xếp theo ngày đến hạn">
+<!ENTITY calendar.unifinder.tree.completeddate.label "Hoàn tất">
+<!ENTITY calendar.unifinder.tree.completeddate.tooltip2 "Sắp xếp theo ngày hoàn tất">
+<!ENTITY calendar.unifinder.tree.categories.label "Danh mục">
+<!ENTITY calendar.unifinder.tree.categories.tooltip2 "Sắp xếp theo danh mục">
+<!ENTITY calendar.unifinder.tree.location.label "Địa điểm">
+<!ENTITY calendar.unifinder.tree.location.tooltip2 "Sắp xếp theo địa chỉ">
+<!ENTITY calendar.unifinder.tree.status.label "Trạng thái">
+<!ENTITY calendar.unifinder.tree.status.tooltip2 "Sắp xếp theo trạng thái">
+<!ENTITY calendar.unifinder.tree.calendarname.label "Tên Lịch">
+<!ENTITY calendar.unifinder.tree.calendarname.tooltip2 "Sắp xếp theo tên lịch">
+<!ENTITY calendar.unifinder.tree.duration.label "Đến hạn trong">
+<!ENTITY calendar.unifinder.tree.duration.tooltip2 "Sắp xếp theo thời gian cho đến khi đến hạn">
+<!ENTITY calendar.unifinder.close.tooltip "Đóng tìm kiếm và danh sách sự kiện">
+
+<!ENTITY calendar.today.button.tooltip "Nhảy tới Hôm nay" >
+<!ENTITY calendar.todaypane.button.tooltip "Hiện Bảng Ngày Hôm Nay" >
+
+<!ENTITY calendar.day.button.tooltip "Chuyển sang xem theo ngày" >
+<!ENTITY calendar.week.button.tooltip "Chuyển sang xem theo tuần" >
+<!ENTITY calendar.month.button.tooltip "Chuyển sang xem theo tháng" >
+<!ENTITY calendar.multiweek.button.tooltip "Chuyển sang xem theo nhiều tuần" >
+
+<!ENTITY calendar.nextday.label "Ngày Sau" >
+<!ENTITY calendar.prevday.label "Ngày Trước" >
+<!ENTITY calendar.nextday.accesskey "x" >
+<!ENTITY calendar.prevday.accesskey "s" >
+<!ENTITY calendar.nextweek.label "Tuần Sau" >
+<!ENTITY calendar.prevweek.label "Tuần Trước" >
+<!ENTITY calendar.nextweek.accesskey "x" >
+<!ENTITY calendar.prevweek.accesskey "s" >
+<!ENTITY calendar.nextmonth.label "Tháng Sau" >
+<!ENTITY calendar.prevmonth.label "Tháng Trước" >
+<!ENTITY calendar.nextmonth.accesskey "x" >
+<!ENTITY calendar.prevmonth.accesskey "s" >
+
+<!ENTITY calendar.navigation.nextday.tooltip "Tiến Một Ngày" >
+<!ENTITY calendar.navigation.prevday.tooltip "Lùi một ngày" >
+<!ENTITY calendar.navigation.nextweek.tooltip "Tiến Một Tuần" >
+<!ENTITY calendar.navigation.prevweek.tooltip "Lùi một tuần" >
+<!ENTITY calendar.navigation.nextmonth.tooltip "Tiến Một Tháng" >
+<!ENTITY calendar.navigation.prevmonth.tooltip "Lùi một tháng" >
+
+<!ENTITY calendar.newevent.button.label "Sự kiện Mới" >
+<!ENTITY calendar.newtask.button.label "Tác vụ Mới" >
+<!ENTITY calendar.print.button.label "In" >
+<!ENTITY calendar.print.button.accesskey "P">
+
+<!ENTITY calendar.day.button.label "Ngày" >
+<!ENTITY calendar.week.button.label "Tuần" >
+<!ENTITY calendar.month.button.label "Tháng" >
+<!ENTITY calendar.multiweek.button.label "Nhiều Tuần" >
+<!ENTITY calendar.onlyworkday.checkbox.label "Chỉ hiện các ngày làm việc" >
+<!ENTITY calendar.onlyworkday.checkbox.accesskey "l" >
+<!ENTITY calendar.displaytodos.checkbox.label "Tác vụ trong Trang lịch" >
+<!ENTITY calendar.displaytodos.checkbox.accesskey "v" >
+<!ENTITY calendar.completedtasks.checkbox.label "Hiện các Tác vụ đã hoàn tất" >
+<!ENTITY calendar.completedtasks.checkbox.accesskey "H" >
+
+<!ENTITY calendar.orientation.label "Xoay bố cục Trang lịch" >
+<!ENTITY calendar.orientation.accesskey "X" >
+
+<!ENTITY calendar.search.options.searchfor " chứa">
+
+<!ENTITY calendar.list.header.label "Lịch">
+
+<!ENTITY calendar.task.filter.title.label "Hiện">
+<!ENTITY calendar.task.filter.all.label "Tất cả">
+<!ENTITY calendar.task.filter.all.accesskey "T">
+<!ENTITY calendar.task.filter.today.label "Hôm nay">
+<!ENTITY calendar.task.filter.today.accesskey "H">
+<!ENTITY calendar.task.filter.next7days.label "Bảy Ngày Tới">
+<!ENTITY calendar.task.filter.next7days.accesskey "B">
+<!ENTITY calendar.task.filter.notstarted.label "Tác vụ Chưa bắt đầu">
+<!ENTITY calendar.task.filter.notstarted.accesskey "a">
+<!ENTITY calendar.task.filter.overdue.label "Tác vụ Quá hạn">
+<!ENTITY calendar.task.filter.overdue.accesskey "Q">
+<!ENTITY calendar.task.filter.completed.label "Tác vụ Đã hoàn tất">
+<!ENTITY calendar.task.filter.completed.accesskey "o">
+<!ENTITY calendar.task.filter.open.label "Tác vụ Chưa hoàn tất">
+<!ENTITY calendar.task.filter.open.accesskey "v">
+
+<!-- LOCALIZATION NOTE(calendar.task.filter.current.label)
+ "Current Tasks" will show all tasks, except those with a start date set
+ that is after today and after the selected date. If a task repeats, a
+ separate entry will be shown for each of the occurrences that happen on or
+ before today (or the selected date, whichever is later). -->
+<!ENTITY calendar.task.filter.current.label "Nhiệm vụ hiện tại">
+<!ENTITY calendar.task.filter.current.accesskey "u">
+
+<!ENTITY calendar.task-details.title.label "tiêu đề">
+<!ENTITY calendar.task-details.organizer.label "từ">
+<!ENTITY calendar.task-details.priority.label "ưu tiên">
+<!ENTITY calendar.task-details.priority.low.label "Thấp">
+<!ENTITY calendar.task-details.priority.normal.label "Bình thường">
+<!ENTITY calendar.task-details.priority.high.label "Cao">
+<!ENTITY calendar.task-details.status.label "trạng thái">
+<!ENTITY calendar.task-details.category.label "phân mục">
+<!ENTITY calendar.task-details.repeat.label "lặp lại">
+<!ENTITY calendar.task-details.attachments.label "đính kèm">
+<!ENTITY calendar.task-details.start.label "ngày bắt đầu">
+<!ENTITY calendar.task-details.due.label "ngày đến hạn">
+
+<!ENTITY calendar.task.category.button.tooltip "Phân loại tác vụ">
+<!ENTITY calendar.task.complete.button.tooltip "Đánh dấu các tác vụ đã chọn là hoàn tất">
+<!ENTITY calendar.task.priority.button.tooltip "Thay đổi mức ưu tiên">
+
+<!ENTITY calendar.task.text-filter.textbox.emptytext.base1 "Lọc nhiệm vụ #1">
+<!ENTITY calendar.task.text-filter.textbox.emptytext.keylabel.nonmac "&lt;Ctrl+Shift+K&gt;">
+<!ENTITY calendar.task.text-filter.textbox.emptytext.keylabel.mac "&lt;&#x21E7;&#x2318;K&gt;">
+
+<!-- Context Menu -->
+<!ENTITY calendar.context.modifyorviewitem.label "Mở">
+<!ENTITY calendar.context.modifyorviewitem.accesskey "M">
+<!ENTITY calendar.context.modifyorviewtask.label "Mở Tác Vụ…">
+<!ENTITY calendar.context.modifyorviewtask.accesskey "M">
+<!ENTITY calendar.context.newevent.label "Sự kiện Mới…">
+<!ENTITY calendar.context.newevent.accesskey "S">
+<!ENTITY calendar.context.newtodo.label "Tác vụ Mới…">
+<!ENTITY calendar.context.newtodo.accesskey "v">
+<!ENTITY calendar.context.deletetask.label "Xóa Tác Vụ">
+<!ENTITY calendar.context.deletetask.accesskey "X">
+<!ENTITY calendar.context.deleteevent.label "Xóa Sự Kiện">
+<!ENTITY calendar.context.deleteevent.accesskey "a">
+<!ENTITY calendar.context.cutevent.label "Cắt">
+<!ENTITY calendar.context.cutevent.accesskey "t">
+<!ENTITY calendar.context.copyevent.label "Sao chép">
+<!ENTITY calendar.context.copyevent.accesskey "C">
+<!ENTITY calendar.context.pasteevent.label "Dán">
+<!ENTITY calendar.context.pasteevent.accesskey "D">
+<!ENTITY calendar.context.button.label "Bảng Ngày Hôm Nay">
+<!ENTITY calendar.context.button.accesskey "B">
+
+<!ENTITY calendar.context.attendance.menu.label "Tham dự">
+<!ENTITY calendar.context.attendance.menu.accesskey "d">
+<!ENTITY calendar.context.attendance.occurrence.label "Lần xuất hiện này">
+<!ENTITY calendar.context.attendance.all2.label "Tất cả các chuỗi sự kiện">
+<!ENTITY calendar.context.attendance.send.label "Gửi thông báo ngay bây giờ">
+<!ENTITY calendar.context.attendance.send.accesskey "S">
+<!ENTITY calendar.context.attendance.dontsend.label "Không gửi thông báo">
+<!ENTITY calendar.context.attendance.dontsend.accesskey "D">
+
+<!ENTITY calendar.context.attendance.occ.accepted.accesskey "A">
+<!ENTITY calendar.context.attendance.occ.accepted.label "Đã chấp nhận">
+<!ENTITY calendar.context.attendance.occ.tentative.accesskey "y">
+<!ENTITY calendar.context.attendance.occ.tentative.label "Đã chấp nhận tạm thời">
+<!ENTITY calendar.context.attendance.occ.declined.accesskey "c">
+<!ENTITY calendar.context.attendance.occ.declined.label "Đã từ chối">
+<!ENTITY calendar.context.attendance.occ.delegated.accesskey "g">
+<!ENTITY calendar.context.attendance.occ.delegated.label "Đã ủy quyền">
+<!ENTITY calendar.context.attendance.occ.needsaction.accesskey "S">
+<!ENTITY calendar.context.attendance.occ.needsaction.label "Vẫn cần hành động">
+<!ENTITY calendar.context.attendance.occ.inprogress.accesskey "I">
+<!ENTITY calendar.context.attendance.occ.inprogress.label "Trong tiến trình">
+<!ENTITY calendar.context.attendance.occ.completed.accesskey "C">
+<!ENTITY calendar.context.attendance.occ.completed.label "Đã hoàn tất">
+
+<!ENTITY calendar.context.attendance.all.accepted.accesskey "e">
+<!ENTITY calendar.context.attendance.all.accepted.label "Đã chấp nhận">
+<!ENTITY calendar.context.attendance.all.tentative.accesskey "v">
+<!ENTITY calendar.context.attendance.all.tentative.label "Đã chấp nhận tạm thời">
+<!ENTITY calendar.context.attendance.all.declined.accesskey "d">
+<!ENTITY calendar.context.attendance.all.declined.label "Đã từ chối">
+<!ENTITY calendar.context.attendance.all.delegated.accesskey "l">
+<!ENTITY calendar.context.attendance.all.delegated.label "Đã ủy quyền">
+<!ENTITY calendar.context.attendance.all.needsaction.accesskey "l">
+<!ENTITY calendar.context.attendance.all.needsaction.label "Vẫn cần hành động">
+<!ENTITY calendar.context.attendance.all.inprogress.accesskey "p">
+<!ENTITY calendar.context.attendance.all.inprogress.label "Trong tiến trình">
+<!ENTITY calendar.context.attendance.all.completed.accesskey "m">
+<!ENTITY calendar.context.attendance.all.completed.label "Đã hoàn tất">
+
+<!-- Task Context Menu -->
+<!ENTITY calendar.context.progress.label "Tiến trình">
+<!ENTITY calendar.context.progress.accesskey "i">
+<!ENTITY calendar.context.priority.label "Ưu tiên">
+<!ENTITY calendar.context.priority.accesskey "u">
+<!ENTITY calendar.context.postpone.label "Hoãn nhiệm vụ">
+<!ENTITY calendar.context.postpone.accesskey "s">
+
+<!ENTITY percnt "&#38;#37;" ><!--=percent sign-->
+
+<!ENTITY calendar.context.markcompleted.label "Đánh dấu Đã hoàn tất">
+<!ENTITY calendar.context.markcompleted.accesskey "o">
+
+<!ENTITY progress.level.0 "Xong 0&percnt;">
+<!ENTITY progress.level.0.accesskey "0">
+<!ENTITY progress.level.25 "Xong 25&percnt;">
+<!ENTITY progress.level.25.accesskey "2">
+<!ENTITY progress.level.50 "Xong 50&percnt;">
+<!ENTITY progress.level.50.accesskey "5">
+<!ENTITY progress.level.75 "Xong 75&percnt;">
+<!ENTITY progress.level.75.accesskey "7">
+<!ENTITY progress.level.100 "Xong 100&percnt;">
+<!ENTITY progress.level.100.accesskey "1">
+
+<!ENTITY priority.level.none "Không xác định">
+<!ENTITY priority.level.none.accesskey "K">
+<!ENTITY priority.level.low "Thấp">
+<!ENTITY priority.level.low.accesskey "T">
+<!ENTITY priority.level.normal "Bình thường">
+<!ENTITY priority.level.normal.accesskey "B">
+<!ENTITY priority.level.high "Cao">
+<!ENTITY priority.level.high.accesskey "C">
+
+<!ENTITY calendar.context.postpone.1hour.label "1 giờ">
+<!ENTITY calendar.context.postpone.1hour.accesskey "H">
+<!ENTITY calendar.context.postpone.1day.label "1 ngày">
+<!ENTITY calendar.context.postpone.1day.accesskey "D">
+<!ENTITY calendar.context.postpone.1week.label "1 tuần">
+<!ENTITY calendar.context.postpone.1week.accesskey "W">
+
+<!ENTITY calendar.copylink.label "Sao chép địa chỉ liên kết">
+<!ENTITY calendar.copylink.accesskey "C">
+
+<!-- Task View -->
+<!-- Note that the above *.context.* strings are currently used for the other
+ task action buttons -->
+<!ENTITY calendar.taskview.delete.label "Xóa">
+
+<!-- Server Context Menu -->
+<!ENTITY calendar.context.newserver.label "Lịch Mới…">
+<!ENTITY calendar.context.newserver.accesskey "L">
+<!ENTITY calendar.context.findcalendar.label "Tìm Lịch…" >
+<!ENTITY calendar.context.findcalendar.accesskey "T" >
+<!ENTITY calendar.context.deleteserver2.label "Xóa lịch…">
+<!ENTITY calendar.context.deleteserver2.accesskey "D">
+
+<!-- LOCALIZATION NOTE (calendar.context.removeserver.label): Removing the
+ calendar is the general action of removing it, while deleting means to
+ clear the data and unsubscribing means just taking it out of the calendar
+ list. -->
+<!ENTITY calendar.context.removeserver.label "Xóa lịch…">
+<!ENTITY calendar.context.removeserver.accesskey "R">
+<!ENTITY calendar.context.unsubscribeserver.label "Hủy đăng ký lịch…">
+<!ENTITY calendar.context.unsubscribeserver.accesskey "U">
+<!ENTITY calendar.context.synccalendars.label "Đồng bộ hóa lịch">
+<!ENTITY calendar.context.synccalendars.accesskey "S">
+<!ENTITY calendar.context.publish.label "Xuất bản Lịch…">
+<!ENTITY calendar.context.publish.accesskey "b">
+<!ENTITY calendar.context.export.label "Xuất lịch…">
+<!ENTITY calendar.context.export.accesskey "X">
+<!ENTITY calendar.context.properties.label "Thuộc tính">
+<!ENTITY calendar.context.properties.accesskey "T">
+
+<!-- LOCALIZATION NOTE (calendar.context.showcalendar.accesskey)
+ This is the access key used for the showCalendar string -->
+<!ENTITY calendar.context.showcalendar.accesskey "h">
+
+<!-- LOCALIZATION NOTE (calendar.context.hidecalendar.accesskey)
+ This is the access key used for the hideCalendar string -->
+<!ENTITY calendar.context.hidecalendar.accesskey "H">
+
+<!-- LOCALIZATION NOTE (calendar.context.showonly.accesskey)
+ This is the access key used for the showOnlyCalendar string -->
+<!ENTITY calendar.context.showonly.accesskey "O">
+<!ENTITY calendar.context.showall.label "Hiển thị tất cả các lịch">
+<!ENTITY calendar.context.showall.accesskey "A">
+
+<!ENTITY calendar.context.convertmenu.label "Chuyển đổi Thành">
+<!ENTITY calendar.context.convertmenu.accesskey.mail "n">
+<!ENTITY calendar.context.convertmenu.accesskey.calendar "h">
+<!ENTITY calendar.context.convertmenu.event.label "Sự kiện…">
+<!ENTITY calendar.context.convertmenu.event.accesskey "S">
+<!ENTITY calendar.context.convertmenu.message.label "Thư tin…">
+<!ENTITY calendar.context.convertmenu.message.accesskey "T">
+<!ENTITY calendar.context.convertmenu.task.label "Tác vụ…">
+<!ENTITY calendar.context.convertmenu.task.accesskey "v">
+
+<!ENTITY calendar.tasks.view.minimonth.label "Tháng Mini">
+<!ENTITY calendar.tasks.view.minimonth.accesskey "M">
+
+<!ENTITY calendar.tasks.view.calendarlist.label "Danh sách Lịch">
+<!ENTITY calendar.tasks.view.calendarlist.accesskey "L">
+
+<!ENTITY calendar.tasks.view.filtertasks.label "Lọc các Tác vụ">
+<!ENTITY calendar.tasks.view.filtertasks.accesskey "L">
+
+<!-- Calendar Alarm Dialog -->
+
+<!ENTITY calendar.alarm.location.label "Địa chỉ:" >
+<!ENTITY calendar.alarm.details.label "Chi tiết…" >
+
+<!ENTITY calendar.alarm.snoozefor.label "Tạm im trong" >
+<!ENTITY calendar.alarm.snoozeallfor.label "Tạm im Tất cả trong" >
+<!ENTITY calendar.alarm.title.label "Chuông báo Lịch" >
+<!ENTITY calendar.alarm.dismiss.label "Bỏ qua" >
+<!ENTITY calendar.alarm.dismissall.label "Bỏ qua tất cả" >
+
+<!ENTITY calendar.alarm.snooze.5minutes.label "5 Phút" >
+<!ENTITY calendar.alarm.snooze.10minutes.label "10 Phút" >
+<!ENTITY calendar.alarm.snooze.15minutes.label "15 Phút" >
+<!ENTITY calendar.alarm.snooze.30minutes.label "30 Phút" >
+<!ENTITY calendar.alarm.snooze.45minutes.label "45 Phút" >
+<!ENTITY calendar.alarm.snooze.1hour.label "1 Tiếng" >
+<!ENTITY calendar.alarm.snooze.2hours.label "2 Tiếng" >
+<!ENTITY calendar.alarm.snooze.1day.label "1 Ngày" >
+
+<!-- LOCALIZATION NOTE (calendar.alarm.snooze.cancel)
+ This string is not seen in the UI, it is read by screen readers when the
+ user focuses the "Cancel" button in the "Snooze for..." popup of the alarm
+ dialog. -->
+<!ENTITY calendar.alarm.snooze.cancel "Hủy báo lại">
+
+<!-- Calendar Server Dialog -->
+<!ENTITY calendar.server.dialog.title.edit "Chỉnh sửa Lịch">
+<!ENTITY calendar.server.dialog.name.label "Tên Lịch:">
+
+<!-- Calendar Properties -->
+<!ENTITY calendarproperties.color.label "Màu sắc:">
+<!ENTITY calendarproperties.webdav.label "iCalendar (ICS)">
+<!ENTITY calendarproperties.caldav.label "CalDAV">
+<!ENTITY calendarproperties.wcap.label "Máy chủ Lịch Hệ thống Sun Java (WCAP)">
+<!ENTITY calendarproperties.format.label "Định dạng:">
+<!ENTITY calendarproperties.location.label "Địa chỉ:">
+<!ENTITY calendarproperties.refreshInterval.label "Làm mới lịch:">
+<!ENTITY calendarproperties.refreshInterval.manual.label "Thủ công">
+<!ENTITY calendarproperties.name.label "Tên:">
+<!ENTITY calendarproperties.readonly.label "Chỉ Đọc">
+<!ENTITY calendarproperties.firealarms.label "Hiện các Chuông báo">
+<!ENTITY calendarproperties.cache3.label "Hỗ trợ ngoại tuyến">
+<!ENTITY calendarproperties.enabled.label "Kích hoạt bộ lịch này">
+<!ENTITY calendarproperties.enabled2.label "Kích hoạt lịch này">
+<!ENTITY calendarproperties.forceDisabled.label "Không thể tìm thấy nhà cung cấp bộ lịch này. Điều này thường xảy ra khi bạn vô hiệu hóa hoặc gỡ bỏ tiện ích nào đó.">
+<!ENTITY calendarproperties.unsubscribe.label "Dừng theo dõi">
+<!ENTITY calendarproperties.unsubscribe.accesskey "D">
+
+<!-- Calendar Publish Dialog -->
+<!ENTITY calendar.publish.dialog.title "Xuất bản Lịch">
+<!ENTITY calendar.publish.url.label "Địa chỉ Xuất bản:">
+<!ENTITY calendar.publish.publish.button "Xuất bản">
+<!ENTITY calendar.publish.close.button "Đóng">
+
+<!ENTITY calendar.publish.example.url.description "Ví dụ như http://www.tênmáychủ.com/webdav/test.ics">
+
+<!-- Select Calendar Dialog -->
+<!ENTITY calendar.select.dialog.title "Chọn Lịch">
+
+<!-- Calendar Printing -->
+<!ENTITY calendar.print.window.title "In Lịch">
+<!ENTITY calendar.print.title.label "Tiêu đề:">
+<!ENTITY calendar.print.layout.label "Bố cục:">
+<!ENTITY calendar.print.range.label "Thông tin để In ra">
+<!ENTITY calendar.print.currentView2.label "Phần đang hiển thị">
+<!ENTITY calendar.print.selectedEventsAndTasks.label "Tác vụ/sự kiện đã chọn">
+<!ENTITY calendar.print.tasks.label "Tác vụ">
+<!ENTITY calendar.print.events.label "Sự kiện">
+<!ENTITY calendar.print.custom.label "Khoảng ngày tùy biến:">
+<!ENTITY calendar.print.from.label "Từ:">
+<!ENTITY calendar.print.to.label "Tới:">
+<!ENTITY calendar.print.settingsGroup.label "Thiết lập In">
+<!ENTITY calendar.print.optionsGroup.label "Tùy chọn">
+<!ENTITY calendar.print.taskswithnoduedate.label "Tác vụ không có ngày đến hạn">
+<!ENTITY calendar.print.completedtasks.label "Tác vụ đã hoàn tất">
+
+<!-- Error reporting -->
+<!ENTITY calendar.error.detail "Chi tiết…">
+<!ENTITY calendar.error.code "Mã lỗi:">
+<!ENTITY calendar.error.description "Mô tả:">
+<!ENTITY calendar.error.title "Một lỗi đã xảy ra">
+
+<!-- Extract buttons in message header -->
+<!ENTITY calendar.extract.event.button "Thêm dưới dạng sự kiện">
+<!ENTITY calendar.extract.task.button "Thêm dưới dạng nhiệm vụ">
+<!ENTITY calendar.extract.event.button.tooltip "Trích xuất thông tin lịch từ tin nhắn và thêm nó vào lịch của bạn như một sự kiện">
+<!ENTITY calendar.extract.task.button.tooltip "Trích xuất thông tin lịch từ tin nhắn và thêm nó vào lịch của bạn như là một nhiệm vụ">
diff --git a/l10n-vi/calendar/chrome/calendar/calendar.properties b/l10n-vi/calendar/chrome/calendar/calendar.properties
new file mode 100644
index 0000000000..ae508f4c06
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendar.properties
@@ -0,0 +1,818 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Misc. strings in JS
+
+# LOCALIZATION NOTE (PrintPreviewWindowTitle):
+# %1$S will be replaced with the title of a html frame
+PrintPreviewWindowTitle=Xem trước Bản in của %1$S
+Untitled=Trống
+
+# Default name for new events
+newEvent=Sự kiện Mới
+
+# Titles for the event/task dialog
+newEventDialog=Sự kiện Mới
+editEventDialog=Chỉnh sửa Sự kiện
+newTaskDialog=Tác vụ Mới
+editTaskDialog=Chỉnh sửa Tác vụ
+
+# Do you want to save changes?
+askSaveTitleEvent=Lưu Sự Kiện
+askSaveTitleTask=Lưu Tác Vụ
+askSaveMessageEvent=Sự kiện chưa được lưu. Bạn có muốn lưu sự kiện không?
+askSaveMessageTask=Tác vụ chưa được lưu. Bạn có muốn lưu tác vụ không?
+
+# Event Dialog Warnings
+warningEndBeforeStart=Ngày kết thúc bạn nhập đã xảy ra trước ngày bắt đầu
+warningUntilDateBeforeStart=Ngày kết thúc đã đến trước ngày bắt đầu
+
+# The name of the calendar provided with the application by default
+homeCalendarName=Chính
+
+# The name given to a calendar if an opened calendar has an empty filename
+untitledCalendarName=Lịch Tạm
+
+# Event status: Tentative, Confirmed, Cancelled
+# ToDo task status: NeedsAction, InProcess, Completed, Cancelled
+statusTentative =Phân vân
+statusConfirmed =Đã xác nhận
+eventStatusCancelled=Đã hủy
+todoStatusCancelled =Đã hủy
+statusNeedsAction =Cần thao tác
+statusInProcess =Đang xử lí
+statusCompleted =Hoàn tất
+
+# Task priority, these should match the priority.level.* labels in calendar.dtd
+highPriority=Cao
+normalPriority=Bình thường
+lowPriority=Thấp
+
+importPrompt=Bạn muốn chọn bộ lịch nào để nhập các mục này?
+exportPrompt=Bạn muốn chọn bộ lịch nào để xuất?
+pastePrompt=Bạn muốn dán vào lịch nào hiện tại?
+publishPrompt=Bạn muốn chọn bộ lịch nào để xuất bản?
+
+# LOCALIZATION NOTE (pasteEventAlso): The users pasting operation includes among
+# others also a meeting invitation - this is used as a affix in
+# pasteNotifyAbout
+pasteEventAlso=Dán bao gồm một cuộc họp
+# LOCALIZATION NOTE (pasteEventsAlso): The users pasting operation includes among
+# others also several meeting invitations - this is used as a affix in
+# pasteNotifyAbout
+pasteEventsAlso=Dán bao gồm các cuộc họp
+# LOCALIZATION NOTE (pasteTaskAlso): The users pasting operation includes among
+# others also an assigned task - this is used as a affix in pasteNotifyAbout
+pasteTaskAlso=Dán bao gồm một nhiệm vụ được giao
+# LOCALIZATION NOTE (pasteTasksAlso): The users pasting operation include among
+# others also several assigned tasks - this is used as a affix in
+# pasteNotifyAbout
+pasteTasksAlso=Dán bao gồm các nhiệm vụ được giao
+# LOCALIZATION NOTE (pasteItemsAlso): The users pasting operation includes among
+# others also assigned task(s) and meeting invitation(s) - this is used as a affix
+# in pasteNotifyAbout
+pasteItemsAlso=Dán bao gồm các cuộc họp và nhiệm vụ được giao
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting a meeting -
+# this is used as a affix in pasteNotifyAbout
+pasteEventOnly=Bạn đang dán một cuộc họp
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several meetings -
+# this is used as a affix in pasteNotifyAbout
+pasteEventsOnly=Bạn đang dán các cuộc họp
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting an assigned task -
+# this is used as a affix in pasteNotifyAbout
+pasteTaskOnly=Bạn đang dán một nhiệm vụ được giao
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several assigned
+# tasks - this is used as a affix in pasteNotifyAbout
+pasteTasksOnly=Bạn đang dán các nhiệm vụ được giao
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting assigned task(s) and
+# meeting(s) - this is used as a affix in pasteNotifyAbout
+pasteItemsOnly=Bạn đang dán các cuộc họp và nhiệm vụ được giao
+
+# LOCALIZATION NOTE (pasteNotifyAbout): Text displayed if pasting an invitation
+# or assigned task
+# %1$S - pasteEvent* or pasteTask*
+pasteNotifyAbout=%1$S - bạn có muốn gửi bản cập nhật cho mọi người liên quan không?
+
+# LOCALIZATION NOTE (pasteAndNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteAndNotifyLabel=Dán và gửi ngay
+# LOCALIZATION NOTE (pasteDontNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteDontNotifyLabel=Dán mà không gửi
+
+# LOCALIZATION NOTE (importItemsFailed):
+# %1$S will be replaced with number of failed items
+# %2$S will be replaced with last error code / error string
+importItemsFailed=%1$S mục không nhập được. Lỗi cuối cùng là: %2$S
+# LOCALIZATION NOTE (noItemsInCalendarFile):
+# %1$S will be replaced with file path
+noItemsInCalendarFile=Không thể nhập từ %1$S. Không có mục nhập trong tập tin này.
+
+# LOCALIZATION NOTE (noItemsInCalendarFile2):
+# %1$S will be replaced with file path
+noItemsInCalendarFile2=Không thể nhập từ %1$S. Không có mục nhập trong tập tin này.
+
+#spaces needed at the end of the following lines
+eventDescription=Mô tả:
+
+unableToRead=Không thể đọc từ tập tin:
+unableToWrite=Không thể ghi vào tập tin:
+defaultFileName=MozillaLich
+HTMLTitle=Mozilla Lịch
+
+# LOCALIZATION NOTE (timezoneError):
+# used for an error message like 'An unknown and undefined timezone was found while reading c:\Mycalendarfile.ics'
+# %1$S will be replaced with the path to a file
+timezoneError=Nhận thấy một múi giờ chưa rõ và chưa được định nghĩa khi đang đọc %1$S.
+
+# LOCALIZATION NOTE (duplicateError):
+# %1$S will be replaced with number of duplicate items
+# %2$S will be replaced with a file path pointing to a calendar
+duplicateError=%1$S mục đã bị bỏ qua vì chúng tồn tại trong cả hai bộ lịch đích và %2$S.
+
+unableToCreateProvider=Một lỗi đã xảy ra khi đang chuẩn bị dùng bộ lịch nằm tại %1$S. Nó sẽ không hiện hữu.
+unknownTimezonesError=Một lỗi đã xảy ra khi đang chuẩn bị dùng bộ lịch nằm tại %1$S. Bộ lịch có thể trỏ tới các múi giờ chưa được biết tới. Vui lòng cài đặt gói calendar-timezones.xpi mới nhất.
+missingCalendarTimezonesError=Không tìm thấy múi giờ! Vui lòng cài đặt gói calendar-timezones.xpi.
+
+# Sample: Unknown timezone "USPacific" in "Dentist Appt". Using the 'floating' local timezone instead: 2008/02/28 14:00:00
+unknownTimezoneInItem=Không biết múi giờ "%1$S" trong "%2$S". Sẽ coi như là múi giờ địa phương 'trôi nổi': %3$S
+TimezoneErrorsAlertTitle=Lỗi Múi Giờ
+TimezoneErrorsSeeConsole=Hãy xem Bảng kiểm soát Lỗi: Các múi giờ không được biết tới sẽ được coi như là múi giờ địa phương 'trôi nổi'.
+
+# The following strings are for the prompt to delete/unsubscribe from the calendar
+removeCalendarTitle=Xóa lịch
+removeCalendarButtonDelete=Xóa lịch
+removeCalendarButtonUnsubscribe=Dừng theo dõi
+
+# LOCALIZATION NOTE (removeCalendarMessageDeleteOrUnsubscribe): Shown for
+# calendar where both deleting and unsubscribing is possible.
+# %1$S: The name of a calendar
+removeCalendarMessageDeleteOrUnsubscribe=Bạn có muốn xóa lịch "%1$S" không? Hủy đăng ký sẽ xóa lịch khỏi danh sách, xóa cũng sẽ xóa vĩnh viễn dữ liệu của nó.
+
+# LOCALIZATION NOTE (removeCalendarMessageDelete): Shown for calendar where
+# deleting is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageDelete=Bạn có muốn xóa vĩnh viễn lịch "%1$S" không?
+
+# LOCALIZATION NOTE (removeCalendarMessageUnsubscribe): Shown for calendar
+# where unsubscribing is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageUnsubscribe=Bạn có muốn hủy đăng ký từ lịch "%1$S" không?
+
+WeekTitle=Tuần %1$S
+None=Không có
+
+# Error strings
+## @name UID_NOT_FOUND
+## @loc none
+tooNewSchemaErrorBoxTitle=Lịch của bạn không tương thích với phiên bản này của %1$S
+
+# LOCALIZATION NOTE (tooNewSchemaErrorBoxTextLightning):
+# %1$S will be replaced with the name of the calendar application e.g. 'Lightning'
+# %2$S will be replaced with the name of the host application 'calendar'
+tooNewSchemaErrorBoxTextLightning=Dữ liệu lịch trong hồ sơ của bạn đã được cập nhật bởi phiên bản mới của %1$S, và việc tiếp tục có thể sẽ khiến thông tin bị mất hoặc hư hại. %1$S bây giờ sẽ bị vô hiệu hóa và %2$S sẽ khởi động lại.
+
+# LOCALIZATION NOTE (tooNewSchemaButtonRestart):
+# %1$S will be replaced with the name of the host application 'Calendar'
+tooNewSchemaButtonRestart=Khởi động lại %1$S
+
+# LOCALIZATION NOTE (tooNewSchemaButtonQuit):
+# %1$S will be replaced with the name of the host application 'Calendar'
+tooNewSchemaButtonQuit=Thoát %1$S
+
+# Error strings
+## @name UID_NOT_FOUND
+## @loc none
+
+# LOCALIZATION NOTE (tooNewSchemaErrorText):
+# %1$S will be replaced with the name of the host application, e.g. 'Thunderbird'
+# %2$S will be replaced with the name of the new copy of the file, e.g. 'local-2020-05-11T21-30-17.sqlite'
+tooNewSchemaErrorText=Dữ liệu lịch của bạn không tương thích với phiên bản %1$S này. Dữ liệu lịch trong hồ sơ của bạn đã được cập nhật bởi phiên bản mới hơn của %1$S. Một bản sao lưu của dữ liệu đã được tạo, được đặt tên là "%2$S". Tiếp tục với một dữ liệu mới vừa được tạo.
+
+# List of events or todos (unifinder)
+eventUntitled=Trống
+
+# Tooltips of events or todos
+tooltipTitle=Tiêu đề:
+tooltipLocation=Địa chỉ:
+# event date, usually an interval, such as
+# Date: 7:00--8:00 Thu 9 Oct 2011
+# Date: Thu 9 Oct 2000 -- Fri 10 Oct 2000
+tooltipDate=Ngày tháng:
+# event calendar name
+tooltipCalName=Tên Lịch:
+# event status: tentative, confirmed, cancelled
+tooltipStatus=Trạng thái:
+# event organizer
+tooltipOrganizer=Đơn vị tổ chức:
+# task/todo fields
+# start date time, due date time, task priority number, completed date time
+tooltipStart=Bắt đầu:
+tooltipDue=Đến hạn:
+tooltipPriority=Ưu tiên:
+tooltipPercent=% Hoàn tất:
+tooltipCompleted=Hoàn tất:
+
+# Tooltips for attendees and organizer in event and summary dialog
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendee.combined): tooltip for itip icon in summary/event dialog.
+# Given an attendee loungeexample.org of type room is a mandatory participant and has accepted the
+# invitation, the tooltip would be:
+# lounge@example.org (room) is a required participant. lounge@example.org has confirmed attendance.
+# %1$S - value of dialog.tooltip.attendeeRole2.*
+# %2$S - value of dialog.tooltip.attendeePartStat2.*
+dialog.tooltip.attendee.combined=%1$S %2$S
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.CHAIR): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.CHAIR=%1$S chủ trì sự kiện.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.NON-PARTICIPANT): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.NON-PARTICIPANT=%1$S là người không tham gia.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.OPT-PARTICIPANT): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.OPT-PARTICIPANT=%1$S là người tham dự tùy chọn.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.REQ-PARTICIPANT): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.REQ-PARTICIPANT=%1$S là người tham gia bắt buộc.
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.ACCEPTED): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.ACCEPTED=%1$S đã xác nhận tham dự.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.DECLINED): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.DECLINED=%1$S đã từ chối tham dự.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.DELEGATED): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.DELEGATED=%1$S đã ủy quyền tham dự.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.NEEDS-ACTION): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.NEEDS-ACTION=%1$S vẫn cần trả lời.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.TENTATIVE): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.TENTATIVE=%1$S đã xác nhận tham dự dự kiến.
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.INDIVIDUAL): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing individual attendee
+dialog.tooltip.attendeeUserType2.INDIVIDUAL=%1$S
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.GROUP): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a group (e.g. a distribution list)
+dialog.tooltip.attendeeUserType2.GROUP=%1$S (nhóm)
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.RESOURCE): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a resource (e.g. projector)
+dialog.tooltip.attendeeUserType2.RESOURCE=%1$S (tài nguyên)
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.ROOM): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a room
+dialog.tooltip.attendeeUserType2.ROOM=%1$S (phòng)
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.UNKNOWN): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing an attendee of unknown type
+dialog.tooltip.attendeeUserType2.UNKNOWN=%1$S
+
+#File commands and dialogs
+New=Mới
+Open=Mở
+filepickerTitleImport=Nhập
+filepickerTitleExport=Xuất
+
+# Filters for export/import/open file picker. %1$S will be replaced with
+# wildmat used to filter files by extension, such as (*.html; *.htm).
+filterIcs=iCalendar (%1$S)
+filterXml=Tài liệu XML (%1$S)
+filterHtml=Trang Web (%1$S)
+filterOutlookCsv=Giá trị Phân tách bằng Dấu phẩy từ Outlook (%1$S)
+
+# Remote calendar errors
+genericErrorTitle=Một lỗi đã xảy ra
+httpPutError=Việc xuất bản lịch bị thất bại.\nMã trạng thái: %1$S: %2$S
+otherPutError=Việc xuất bản tập tin lịch bị thất bại.\nMã trạng thái: 0x%1$S
+
+# LOCALIZATION NOTE (readOnlyMode):
+# used for an message like 'There has been an error reading data for calendar: Home. It has been...'
+# %1$S will be replaced with the name of a calendar
+readOnlyMode=Có lỗi khi đang đọc dữ liệu cho bộ lịch: %1$S. Nó đã được đặt trong chế độ chỉ-đọc, vì các thay đổi trên bộ lịch này có lẽ sẽ dẫn tới việc mất dữ liệu. Bạn có thể thay đổi thiết lập này bằng cách chọn 'Chỉnh sửa Bộ lịch'.
+
+# LOCALIZATION NOTE (disabledMode):
+# used for an message like 'There has been an error reading data for calendar: Home. It has been...'
+# %1$S will be replaced with the name of a calendar
+disabledMode=Có lỗi khi đang đọc dữ liệu cho bộ lịch: %1$S. Nó đã bị vô hiệu hóa cho tới khi có thể sử dụng an toàn.
+
+# LOCALIZATION NOTE (minorError):
+# used for an message like 'There has been an error reading data for calendar: Home. However this...'
+# %1$S will be replaced with the name of a calendar
+minorError=Có lỗi khi đang đọc dữ liệu cho bộ lịch: %1$S. Tuy nhiên, đây chỉ là lỗi nhỏ, cho nên chương trình vẫn sẽ cố gắng tiếp tục.
+
+# LOCALIZATION NOTE (stillReadOnlyError):
+# used for an message like 'There has been an error reading data for calendar: Home.'
+# %1$S will be replaced with the name of a calendar
+stillReadOnlyError=Có lỗi khi đang đọc dữ liệu cho bộ lịch: %1$S.
+utf8DecodeError=Một lỗi đã xảy ra khi đang giải mã một tập tin iCalendar (ics) dưới dạng UTF-8. Hãy kiểm tra tập tin đó, bao gồm biểu tượng và các kí tự có dấu, đã được mã hóa bằng bộ mã UTF-8.
+icsMalformedError=Việc phân tích tập tin iCalendar (ics) bị thất bại. Hãy kiểm tra xem tập tin có tuân theo cú pháp của tập tin iCalendar (ics) chưa.
+itemModifiedOnServerTitle=Mục đã bị thay đổi trên máy chủ
+itemModifiedOnServer=Mục này vừa bị thay đổi trên máy chủ.\n
+modifyWillLoseData=Gửi thay đổi của bạn sẽ ghi đè lên các thay đổi đã thực hiện trên máy chủ.
+deleteWillLoseData=Xóa mục này sẽ làm mất các thay đổi đã thực hiện trên máy chủ.
+updateFromServer=Bỏ thay đổi của tôi và tải lại
+proceedModify=Vẫn gửi thay đổi của tôi
+proceedDelete=Vẫn xóa
+dav_notDav=Tài nguyên tại %1$S không phải là một bộ sưu tập DAV hoặc không hiện hữu
+dav_davNotCaldav=Tài nguyên tại %1$S là một bộ sưu tập DAV nhưng không phải là một bộ lịch CalDAV
+itemPutError=Có lỗi khi đang lưu trữ mục này trên máy chủ.
+itemDeleteError=Có lỗi khi đang lưu trữ mục này xóa mục này khỏi máy chủ.
+caldavRequestError=Một lỗi xảy ra khi đang gửi thư mời.
+caldavResponseError=Một lỗi xảy ra khi đang gửi phản hồi.
+caldavRequestStatusCode=Mã trạng thái: %1$S
+caldavRequestStatusCodeStringGeneric=Yêu cầu không thể được xử lý.
+caldavRequestStatusCodeString400=Yêu cầu chứa cú pháp sai và không thể được xử lý.
+caldavRequestStatusCodeString403=Người dùng thiếu sự cho phép cần thiết để thực hiện yêu cầu.
+caldavRequestStatusCodeString404=Không tìm thấy tài nguyên.
+caldavRequestStatusCodeString409=Xung đột tài nguyên.
+caldavRequestStatusCodeString412=Điều kiện tiên quyết không thành công.
+caldavRequestStatusCodeString500=Lỗi máy chủ nội bộ.
+caldavRequestStatusCodeString502=Không đúng cổng (Cấu hình proxy?).
+caldavRequestStatusCodeString503=Lỗi máy chủ nội bộ (Mất máy chủ tạm thời?).
+caldavRedirectTitle=Cập nhật địa chỉ cho lịch %1$S?
+caldavRedirectText=Các yêu cầu cho %1$S đang được chuyển hướng đến một vị trí mới. Bạn có muốn thay đổi vị trí thành giá trị sau?
+caldavRedirectDisableCalendar=Vô hiệu hóa lịch
+
+
+# LOCALIZATION NOTE (likelyTimezone):
+# Translators, please put the most likely timezone(s) where the people using
+# your locale will be. Use the Olson ZoneInfo timezone name *in English*,
+# ie "Europe/Paris", (continent or ocean)/(largest city in timezone).
+# Order does not matter, except if two historically different zones now match,
+# such as America/New_York and America/Toronto, will only find first listed.
+# (Particularly needed to guess the most relevant timezones if there are
+# similar timezones at the same June/December GMT offsets with alphabetically
+# earlier ZoneInfo timezone names. Sample explanations for English below.)
+# for english-US:
+# America/Los_Angeles likelier than America/Dawson
+# America/New_York likelier than America/Detroit (NY for US-EasternTime)
+# for english:
+# Europe/London likelier than Atlantic/Canary
+# Europe/Paris likelier than Africa/Ceuta (for WestEuropeanTime)
+# America/Halifax likelier than America/Glace_Bay (Canada-AtlanticTime)
+# America/Mexico_City likelier than America/Cancun
+# America/Argentina/Buenos_Aires likelier than America/Araguaina
+# America/Sao_Paolo (may not recognize: summer-time dates change every year)
+# Asia/Singapore likelier than Antarctica/Casey
+# Asia/Tokyo likelier than Asia/Dili
+# Africa/Lagos likelier than Africa/Algiers (for WestAfricanTime)
+# Africa/Johannesburg likelier than Africa/Blantyre (for SouthAfricanStdTime)
+# Africa/Nairobi likelier than Africa/Addis_Ababa (for EastAfricanTime)
+# Australia/Brisbane likelier than Antarctica/DumontDUrville
+# Australia/Sydney likelier than Australia/Currie or Australia/Hobart
+# Pacific/Auckland likelier than Antarctica/McMurdo
+likelyTimezone=Asia/Ho_Chi_Minh
+
+# Guessed Timezone errors and warnings.
+# Testing note:
+# * remove preference for calendar.timezone.default in userprofile/prefs.js
+# * repeat
+# - set OS timezone to a city (windows: click right on clock in taskbar)
+# - restart
+# - observe guess in error console and verify whether guessed timezone city
+# makes sense for OS city.
+#
+# 'Warning: Operating system timezone "E. South America Standard Time"
+# no longer matches ZoneInfo timezone "America/Sao_Paulo".'
+# Testing notes:
+# - Brasil DST change dates are set every year by decree, so likely out of sync.
+# - Only appears on OSes from which timezone can be obtained
+# (windows; or TZ env var, /etc/localtime target path, or line in
+# /etc/timezone or /etc/sysconfig/clock contains ZoneInfo timezone id).
+# - Windows: turning off "Automatically adjust clock for daylight saving time"
+# can also trigger this warning.
+WarningOSTZNoMatch=Cảnh báo: Múi giờ hệ điều hành "%1$S"\nkhông còn phù hợp với múi giờ ZoneInfo nội bộ "%2$S".
+
+# "Skipping Operating System timezone 'Pacific/New_Country'."
+# Testing note: not easily testable. May occur someday if (non-windows)
+# OS uses different version of ZoneInfo database which has a timezone name
+# that is not included in our current ZoneInfo database (or if the mapping
+# mapping from windows to ZoneInfo timezone ids does).
+SkippingOSTimezone=Bỏ qua Múi giờ Hệ điều hành '%1$S'.
+
+# "Skipping locale timezone 'America/New_Yawk'."
+# Testing note: Skipping occurs if a likelyTimezone id is unknown or misspelled.
+SkippingLocaleTimezone=Bỏ qua múi giờ bản địa '%1$S'.
+
+# Testing note: "No match" timezones include Bucharest on W2k.
+# Brazil timezones may be "No match" (change every year, so often out of date,
+# and changes are often more than a week different).
+warningUsingFloatingTZNoMatch=Cảnh báo: Đang dùng múi giờ 'trôi nổi'.\nKhông có dữ liệu múi giờ ZoneInfo phù hợp với dữ liệu múi giờ hệ điều hành.
+
+# "Warning: Using guessed timezone
+# America/New York (UTC-0500/-0400).
+# [rfc2445 summer daylight saving shift rules for timezone]
+# This ZoneInfo timezone almost matches/seems to match..."
+# This ZoneInfo timezone was chosen based on ... "
+WarningUsingGuessedTZ=Cảnh báo: Đang dùng múi giờ đoán tạm\n %1$S (UTC%2$S).\n%3$S\n%4$S
+
+# Testing note: "Almost match" timezones include Cairo on W2k.
+TZAlmostMatchesOSDifferAtMostAWeek=Múi giờ ZoneInfo này khá phù hợp với múi giờ hệ điều hành.\nĐối với quy luật này, các lần đổi giờ tiếp theo từ giờ mùa hè sang giờ chuẩn\nsẽ lệch ít nhất một tuần so với lần đổi giờ của hệ điều hành.\nCó thể dữ liệu sẽ không nhất quán, ví dụ sẽ khác ngày bắt đầu,\nhoặc khác về quy luật, hoặc mức xấp xỉ cho các quy luật của những bộ lịch không thuộc hệ thống lịch Gregory.
+
+TZSeemsToMatchOS=Múi giờ ZoneInfo này có vẻ phù hợp với múi giờ hệ điều hành trong năm nay.
+
+# LOCALIZATION NOTE (TZFromOS):
+# used for a display of a chosen timezone
+# %1$S will be replaced with the name of a timezone
+TZFromOS=Múi giờ ZoneInfo này được chọn dựa trên múi giờ hệ điều hành\nxác định "%1$S".
+
+# Localization note (TZFromLocale): Substitute name of your locale language.
+TZFromLocale=Múi giờ ZoneInfo này được chọn dựa trên việc phù hợp múi giờ hệ điều hành\nvới múi giờ cho người dùng internet sử dụng tiếng Việt.
+
+TZFromKnownTimezones=Múi giờ ZoneInfo này được chọn dựa trên việc phù hợp múi giờ hệ điều hành\nvới các múi giờ theo thứ tự bảng chữ cái của id múi giờ.
+
+# Print Layout
+formatListName = Danh sách
+weekPrinterName = Kế hoạch Hàng tuần
+monthPrinterName = Kẻ ô Hàng tháng
+tasksWithNoDueDate = Tác vụ không có ngày đến hạn
+
+# Providers
+caldavName=CalDAV
+compositeName=Ghép
+icsName=iCalendar (ICS)
+memoryName=Tạm thời (bộ nhớ)
+storageName=Nội bộ (SQLite)
+
+# Used in created html code for list layout print and html export
+htmlPrefixTitle=Tiêu đề
+htmlPrefixWhen=Khi nào
+htmlPrefixLocation=Địa chỉ
+htmlPrefixDescription=Mô tả
+htmlTaskCompleted=%1$S (hoàn tất)
+
+# Categories
+addCategory=Thêm Phân Mục
+multipleCategories=Nhiều danh mục
+
+today=Hôm nay
+tomorrow=Ngày mai
+yesterday=Hôm qua
+
+#Today pane
+eventsonly=Sự kiện
+eventsandtasks=Sự kiện và Tác vụ
+tasksonly=Tác vụ
+shortcalendarweek=Tuần
+
+go=Duyệt xem
+
+# Some languages have different conjugations of 'next' and 'last'. If yours
+# does not, simply repeat the value. This will be used with day names, as in
+# 'next Sunday'.
+next1=tiếp
+next2=tiếp
+last1=trước
+last2=trước
+
+# Alarm Dialog
+# LOCALIZATION NOTE (alarmWindowTitle.label): Semi-colon list of plural
+# forms. See: http://developer.mozilla.org/en/Localization_and_Plurals
+alarmWindowTitle.label=#1 lời nhắc
+
+# LOCALIZATION NOTE (alarmStarts):
+# used for a display the start of an alarm like 'Starts: Thu 2 Oct 2008 13:21'
+# %1$S will be replaced with a date-time
+alarmStarts=Bắt đầu: %1$S
+
+# LOCALIZATION NOTE (alarmTodayAt):
+# used for a display the date-time of an alarm like 'Today at Thu 2 Oct 2008 13:21'
+# %1$S will be replaced with a date-time
+alarmTodayAt=Hôm nay lúc %1$S
+
+# LOCALIZATION NOTE (alarmTomorrowAt):
+# used for a display the date-time of an alarm like 'Tomorrow at Thu 2 Oct 2008 13:21'
+# %1$S will be replaced with a date-time
+alarmTomorrowAt=Ngày mai lúc %1$S
+
+# LOCALIZATION NOTE (alarmYesterdayAt):
+# used for a display the date-time of an alarm like 'Yesterday at Thu 2 Oct 2008 13:21'
+# %1$S will be replaced with a date-time
+alarmYesterdayAt=Hôm qua lúc %1$S
+
+# Alarm interface strings
+# LOCALIZATION NOTE: These strings do not get displayed. They are only visible
+# when exporting an item with i.e a DISPLAY alarm, that doesn't have a
+# description set, or an EMAIL alarm that doesn't have a summary set.
+alarmDefaultDescription=Mô tả Mozilla Mặc định
+alarmDefaultSummary=Tóm tắt Mozilla Mặc định
+
+# LOCALIZATION NOTE (alarmSnoozeLimitExceeded): Semi-colon list of plural
+# forms.
+alarmSnoozeLimitExceeded=Bạn không thể báo thức trong hơn #1 tháng.
+
+taskDetailsStatusNeedsAction=Cần thao tác
+
+# LOCALIZATION NOTE (taskDetailsStatusInProgress):
+# used for a display of how much of a task is completed '25% Complete'
+# %1$S will be replaced with the number of percentage completed
+taskDetailsStatusInProgress=%1$S%% Hoàn tất
+taskDetailsStatusCompleted=Hoàn tất
+
+# LOCALIZATION NOTE (taskDetailsStatusCompletedOn):
+# used for a display of completion date like 'Completed on Thu 2 Oct 2008 13:21'
+# %1$S will be replaced with the completion date-time of the task
+taskDetailsStatusCompletedOn=Hoàn tất lúc %1$S
+taskDetailsStatusCancelled=Đã hủy
+
+gettingCalendarInfoCommon=Đang kiểm tra Lịch…
+
+# LOCALIZATION NOTE (gettingCalendarInfoDetail):
+# used for a progress-display of processed like 'Checking Calendar 5 of 10'
+# %1$S will be replaced with the index of the currently processed calendar
+# %2$S will be replaced with the total numbers of calendars
+gettingCalendarInfoDetail=Đang kiểm tra Lịch %1$S trên tổng %2$S
+
+# LOCALIZATION NOTE (errorCode):
+# %1$S will be replaced with the number of an error code
+errorCode=Mã lỗi: %1$S
+
+# LOCALIZATION NOTE (errorDescription):
+# %1$S will be replaced with the description of an error
+errorDescription=Mô tả: %1$S
+
+# LOCALIZATION NOTE (errorWriting):
+# used for an message like 'An error occurred when writing to the calendar Home!'
+# %1$S will be replaced with the name of a calendar
+errorWriting2=Đã xảy ra lỗi khi ghi vào lịch %1$S! Xin vui lòng xem bên dưới để biết thêm thông tin.
+
+# LOCALIZATION NOTE (errorWritingDetails):
+# This will be displayed in the detail section of the error dialog
+errorWritingDetails=Nếu bạn đang thấy thông báo này sau khi báo lại hoặc bỏ qua lời nhắc và đây là lịch bạn không muốn thêm hoặc chỉnh sửa sự kiện, bạn có thể đánh dấu lịch này là chỉ đọc để tránh trải nghiệm đó trong tương lai. Để làm như vậy, hãy truy cập vào các thuộc tính lịch bằng cách nhấp chuột phải vào lịch này trong danh sách trong chế độ xem lịch hoặc tác vụ.
+
+# LOCALIZATION NOTE (tooltipCalendarDisabled):
+# used for an alert-message like 'The calendar Home is momentarily not available'
+# %1$S will be replaced with the name of a calendar
+tooltipCalendarDisabled=Bộ lịch %1$S tạm thời không hiện hữu
+
+# LOCALIZATION NOTE (tooltipCalendarReadOnly):
+# used for an message like 'The calendar Home is readonly'
+# %1$S will be replaced with the name of a calendar
+tooltipCalendarReadOnly=Bộ lịch %1$S có thuộc tính chỉ-đọc
+
+taskEditInstructions=Nhấn vào đây để Thêm Tác Vụ Mới
+taskEditInstructionsReadonly=Vui lòng chọn một Bộ lịch Có thể Ghi
+taskEditInstructionsCapability=Vui lòng chọn một Bộ lịch Hỗ trợ Tác vụ
+
+eventDetailsStartDate=Bắt đầu:
+eventDetailsEndDate=Kết thúc:
+
+# LOCALIZATION NOTE (datetimeWithTimezone):
+# used for a display of a date-time with timezone 'Thu 2 Oct 2008 13:21', Europe/Paris
+# %1$S will be replaced with the completion date-time
+# %2$S will be replaced with the name of the timezone
+datetimeWithTimezone=%1$S, %2$S
+
+# LOCALIZATION NOTE (singleLongCalendarWeek):
+# used for display of calendar weeks in short form like 'Calendar Week 43'
+# %1$S will be replaced with the index of the week
+singleLongCalendarWeek=Tuần: %1$S
+
+# LOCALIZATION NOTE (severalLongCalendarWeeks):
+# used for display of calendar weeks in short form like 'Calendar Weeks 43 - 45'
+# %1$S will be replaced with the index of the start-week
+# %2$S will be replaced with the index of the end-week
+severalLongCalendarWeeks=Tuần %1$S-%2$S
+
+# LOCALIZATION NOTE (singleShortCalendarWeek):
+# used for display of calendar weeks in short form like 'CW 43'
+# %1$S will be replaced with the index of the week
+singleShortCalendarWeek=Tuần: %1$S
+
+# LOCALIZATION NOTE (severalShortCalendarWeeks):
+# used for display of calendar weeks in short form like 'CWs 43 - 45'
+# %1$S will be replaced with the index of the start-week
+# %2$S will be replaced with the index of the end-week
+severalShortCalendarWeeks=Tuần: %1$S–%2$S
+
+# LOCALIZATION NOTE (abbreviationOfWeek):
+# Used for displaying the week number in the first day box of every week
+# in multiweek and month views.
+# It allows to localize the label with the week number in case your locale
+# requires it.
+# Take into account that this label is placed in the same room of the day label
+# inside the day boxes, exactly on left side, hence a possible string shouldn't
+# be too long otherwise it will create confusion between the week number and
+# the day number other than a possible crop when the window is resized.
+#
+# %1$S is a number from 1 to 53 that represents the week number.
+abbreviationOfWeek=%1$S
+
+# Task tree, "Due In" column.
+# LOCALIZATION NOTE (dueInDays, dueInHours): Semi-colon list of plural
+# forms. See: http://developer.mozilla.org/en/Localization_and_Plurals
+dueInDays=#1 ngày
+dueInHours=#1 giờ;#1 giờ
+dueInLessThanOneHour=< 1 giờ
+
+# LOCALIZATION NOTE (monthInYear):
+# used for display of Month-dates like 'December 2008'
+# %1$S will be replaced with name of the month
+# %2$S will be replaced with the year
+monthInYear=%1$S %2$S
+
+# LOCALIZATION NOTE (monthInYear.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+monthInYear.monthFormat=genitive
+
+# LOCALIZATION NOTE (formatDateLong):
+# used for display dates in long format like 'Mon 15 Oct 2008' when it's
+# impossible to retrieve the formatatted date from the OS.
+# %1$S will be replaced with name of the day in short format;
+# %2$S will be replaced with the day-index of the month, possibly followed by an ordinal symbol
+# (depending on the string dayOrdinalSymbol in dateFormat.properties);
+# %3$S will be replaced with the name of the month in short format;
+# %4$S will be replaced with the year.
+formatDateLong=%1$S %2$S %3$S %4$S
+
+# LOCALIZATION NOTE (dayHeaderLabel):
+# used for display the labels in the header of the days in day/week views in short
+# or long format. For example: 'Monday 6 Oct.' or 'Mon. 6 Oct.'
+# %1$S will be replaced with name of the day in short or long format
+# %2$S will be replaced with the day-index of the month, possibly followed by an ordinal symbol
+# (depending on the string dayOrdinalSymbol in dateFormat.properties), plus the name
+# of the month in short format (the day/month order depends on the OS settings).
+dayHeaderLabel=%1$S %2$S
+
+# LOCALIZATION NOTE (daysIntervalInMonth):
+# used for display of intervals in the form of 'March 3 - 9, 2008'
+# %1$S will be replaced with name of the month of the start date
+# %2$S will be replaced with the day-index of the start date possibly followed by an ordinal symbol
+# %3$S will be replaced with the day-index of the end date possibly followed by an ordinal symbol
+# %4$S will be replaced with the common year of both dates
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalInMonth=%1$S %2$S – %3$S, %4$S
+
+# LOCALIZATION NOTE (daysIntervalInMonth.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalInMonth.monthFormat=nominative
+
+# LOCALIZATION NOTE (daysIntervalBetweenMonths):
+# used for display of intervals in the form 'September 29 - October 5, 2008'
+# %1$S will be replaced with name of the month of the start date
+# %2$S will be replaced with the day-index of the start date possibly followed by an ordinal symbol
+# %3$S will be replaced with name of the month of the end date
+# %4$S will be replaced with the day-index of the end date possibly followed by an ordinal symbol
+# %5$S will be replaced with the common year of both dates
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalBetweenMonths=%1$S %2$S – %3$S %4$S, %5$S
+
+# LOCALIZATION NOTE (daysIntervalBetweenMonths.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalBetweenMonths.monthFormat=nominative
+
+# LOCALIZATION NOTE (daysIntervalBetweenYears):
+# used for display of intervals in the form 'December 29, 2008 - January 4, 2009'
+# %1$S will be replaced with name of the month of the start date
+# %2$S will be replaced with the day-index of the start date possibly followed by an ordinal symbol
+# %3$S will be replaced with the year of the start date
+# %4$S will be replaced with name of the month of the end date
+# %5$S will be replaced with the day-index of the end date possibly followed by an ordinal symbol
+# %6$S will be replaced with the year of the end date
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalBetweenYears=%1$S %2$S, %3$S – %4$S %5$S, %6$S
+
+# LOCALIZATION NOTE (daysIntervalBetweenYears.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalBetweenYears.monthFormat=nominative
+
+# LOCALIZATION NOTE (datetimeIntervalOnSameDateTime):
+# used for intervals where end is equals to start
+# displayed form is '5 Jan 2006 13:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+datetimeIntervalOnSameDateTime=%1$S %2$S
+
+# LOCALIZATION NOTE (datetimeIntervalOnSameDay):
+# used for intervals where end is on the same day as start, so we can leave out the
+# end date but still include end time
+# displayed form is '5 Jan 2006 13:00 - 17:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+# %3$S will be replaced with the time of the end date
+datetimeIntervalOnSameDay=%1$S %2$S–%3$S
+
+# LOCALIZATION NOTE (datetimeIntervalOnSeveralDays):
+# used for intervals spanning multiple days by including date and time
+# displayed form is '5 Jan 2006 13:00 - 7 Jan 2006 9:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+# %3$S will be replaced with the date of the end date
+# %4$S will be replaced with the time of the end date
+datetimeIntervalOnSeveralDays=%1$S %2$S – %3$S %4$S
+
+# LOCALIZATION NOTE (datetimeIntervalTaskWithoutDate):
+# used for task without start and due date
+# (showed only in exported calendar in Html format)
+datetimeIntervalTaskWithoutDate= không có ngày bắt đầu hoặc đến hạn
+# LOCALIZATION NOTE (datetimeIntervalTaskWithoutDueDate):
+# used for intervals in task with only start date
+# displayed form is 'start date 5 Jan 2006 13:00'
+# (showed only in exported calendar in Html format)
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+datetimeIntervalTaskWithoutDueDate=ngày bắt đầu %1$S %2$S
+# LOCALIZATION NOTE (datetimeIntervalTaskWithoutStartDate):
+# used for intervals in task with only due date
+# displayed form is 'due date 5 Jan 2006 13:00'
+# (showed only in exported calendar in Html format)
+# %1$S will be replaced with the date of the due date
+# %2$S will be replaced with the time of the due date
+datetimeIntervalTaskWithoutStartDate=ngày đến hạn %1$S %2$S
+
+# LOCALIZATION NOTE (dragLabelTasksWithOnlyEntryDate
+# dragLabelTasksWithOnlyDueDate)
+# Labels that appear while dragging a task with only
+# entry date OR due date
+dragLabelTasksWithOnlyEntryDate=Thời gian bắt đầu
+dragLabelTasksWithOnlyDueDate=Đến hạn tại
+
+deleteTaskLabel=Xóa Tác Vụ
+deleteTaskMessage=Bạn có thật sự muốn xóa Tác vụ này không?
+deleteTaskAccesskey=X
+deleteItemLabel=Xóa
+deleteItemMessage=Bạn có thật sự muốn xóa Mục này không?
+deleteItemAccesskey=X
+deleteEventLabel=Xóa Sự Kiện
+deleteEventMessage=Bạn có thật sự muốn xóa Sự kiện này không?
+deleteEventAccesskey=X
+
+calendarPropertiesEveryMinute=Mỗi #1 phút
+
+# LOCALIZATION NOTE (extractUsing)
+# Used in message header
+# %1$S will be replaced with language name from languageNames.properties
+extractUsing=Sử dụng %1$S
+
+# LOCALIZATION NOTE (extractUsingRegion)
+# Used in message header
+# %1$S will be replaced with language name from languageNames.properties
+# %2$S will be replaced with region like US in en-US
+extractUsingRegion=Sử dụng %1$S (%2$S)
+
+# LOCALIZATION NOTE (unit)
+# Used to determine the correct plural form of a unit
+unitMinutes=#1 phút
+unitHours=#1 giờ
+unitDays=#1 ngày
+unitWeeks=#1 tuần
+
+# LOCALIZATION NOTE (showCalendar)
+# Used in calendar list context menu
+# %1$S will be replaced with the calendar name
+# uses the access key calendar.context.togglevisible.accesskey
+showCalendar=Hiển thị %1$S
+hideCalendar=Ẩn %1$S
+# uses the access key calendar.context.showonly.accesskey
+showOnlyCalendar=Chỉ hiển thị %1$S
+
+# LOCALIZATION NOTE (modifyConflict)
+# Used by the event dialog to resolve item modification conflicts.
+modifyConflictPromptTitle=Xung đột sửa đổi mục
+modifyConflictPromptMessage=Mục đang được chỉnh sửa trong hộp thoại đã được sửa đổi kể từ khi nó được mở.
+modifyConflictPromptButton1=Ghi đè các thay đổi khác
+modifyConflictPromptButton2=Hủy bỏ những thay đổi này
+
+# LOCALIZATION_NOTE(dialog.attendee.append.delegatedFrom): this is appended behind an attendee name
+# in the tooltip and the visible name for an attendee in the event summary dialog - don't add
+# leading or trailing whitespaces here
+# %1$S - a single delegatee or a comma separated list of delegatees
+# delegation is different from simple invitation forwarding - in case of delegation the original
+# invited attendee gets replaced
+dialog.attendee.append.delegatedFrom=(được ủy quyền từ %1$S)
+# LOCALIZATION_NOTE(dialog.attendee.append.delegatedTo): this is appended behind an attendee name
+# in the tooltip for an attendee in the event summary dialog - don't add leading or trailing
+# whitespaces here
+# delegation is different from simple invitation forwarding - in case of delegation the original
+# invited attendee gets replaced
+dialog.attendee.append.delegatedTo=(được ủy quyền cho %1$S)
+
+# Accessible description of a grid calendar with no selected date
+minimonthNoSelectedDate=Không có ngày nào được chọn
diff --git a/l10n-vi/calendar/chrome/calendar/calendarCreation.dtd b/l10n-vi/calendar/chrome/calendar/calendarCreation.dtd
new file mode 100644
index 0000000000..742aee0ecd
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendarCreation.dtd
@@ -0,0 +1,51 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY wizard.title "Tạo lịch mới" >
+<!ENTITY wizard.label "Tạo một bộ lịch mới" >
+<!ENTITY wizard.description "Khởi tạo bộ lịch của bạn" >
+
+<!ENTITY initialpage.description "Bộ lịch của bạn có thể được lưu trữ trên máy tính hoặc trên một máy chủ để có thể truy cập nó từ xa hoặc chia sẻ nó với bạn bè hoặc đồng nghiệp." >
+<!ENTITY initialpage.computer.label "Trên máy tính của tôi">
+<!ENTITY initialpage.network.label "Trên mạng">
+
+<!ENTITY locationpage.description "Cung cấp thông tin về những thứ cần thiết để truy cập bộ lịch từ xa của bạn" >
+<!ENTITY locationpage.login.description "Tùy chọn: nhập tên đăng nhập và mật khẩu" >
+<!ENTITY locationpage.username.label "Tên đăng nhập:" >
+<!ENTITY locationpage.password.label "Mật khẩu:" >
+
+<!ENTITY custompage.shortdescription "Tùy biến lịch của bạn" >
+<!ENTITY custompage.longdescription "Bạn có thể đặt biệt danh cho bộ lịch của bạn và tô màu các sự kiện của bộ lịch này." >
+
+<!ENTITY finishpage.shortdescription "Đã tạo lịch" >
+<!ENTITY finishpage.longdescription "Bộ lịch của bạn đã được tạo." >
+
+<!-- Below are new strings for the revised new calendar dialog. The above strings should be
+ removed/renamed later on -->
+
+<!ENTITY sourcetabs.other.label "Khác">
+
+<!ENTITY buttons.create.label "Tạo lịch">
+<!ENTITY buttons.create.accesskey "r">
+
+<!ENTITY buttons.find.label "Tìm lịch">
+<!ENTITY buttons.find.accesskey "F">
+
+<!ENTITY buttons.back.label "Quay lại">
+<!ENTITY buttons.back.accesskey "B">
+
+<!ENTITY buttons.subscribe.label "Đăng kí">
+<!ENTITY buttons.subscribe.accesskey "S">
+
+<!ENTITY calendartype.label "Kiểu lịch:">
+<!ENTITY location.label "Địa chỉ:">
+<!ENTITY location.placeholder "URL hoặc tên máy chủ của máy chủ lịch">
+
+<!ENTITY network.nocredentials.label "Vị trí này không yêu cầu thông tin đăng nhập">
+<!ENTITY network.loading.description "Xin vui lòng chờ trong khi lịch của bạn đang được phát hiện.">
+<!ENTITY network.notfound.description "Không thể tìm thấy lịch tại địa chỉ này. Vui lòng kiểm tra cài đặt của bạn.">
+<!ENTITY network.authfail.description "Thông tin đăng nhập bạn đã nhập không được chấp nhận. Vui lòng kiểm tra cài đặt của bạn.">
+
+<!ENTITY network.subscribe.single.description "Vui lòng chọn lịch bạn muốn đăng ký.">
+<!ENTITY network.subscribe.multiple.description "Nhiều loại lịch có sẵn cho địa chỉ này. Vui lòng chọn kiểu lịch, sau đó đánh dấu các lịch bạn muốn đăng ký.">
diff --git a/l10n-vi/calendar/chrome/calendar/calendarCreation.properties b/l10n-vi/calendar/chrome/calendar/calendarCreation.properties
new file mode 100644
index 0000000000..335eb4f3d4
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/calendarCreation.properties
@@ -0,0 +1,6 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+error.invalidUri=Vui lòng nhập một địa chỉ hợp lệ.
+error.alreadyExists=Bạn đã đăng kí theo dõi trang lịch tại địa chỉ này rồi.
diff --git a/l10n-vi/calendar/chrome/calendar/categories.properties b/l10n-vi/calendar/chrome/calendar/categories.properties
new file mode 100644
index 0000000000..1dc7ce36b2
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/categories.properties
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# default categories
+
+categories2=Lễ kỉ niệm,Sinh nhật,Kinh doanh,Cuộc gọi,Khách hàng,Thi thố,Ưa thích,Theo dõi,Quà tặng,Ngày lễ,Ý kiến,Vấn đề,Họp mặt,Linh tinh,Cá nhân,Dự án,Ngày lễ Công cộng,Trạng thái,Nhà cung cấp,Du lịch,Tham quan
diff --git a/l10n-vi/calendar/chrome/calendar/dateFormat.properties b/l10n-vi/calendar/chrome/calendar/dateFormat.properties
new file mode 100644
index 0000000000..1183f57846
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/dateFormat.properties
@@ -0,0 +1,146 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# In case you are looking for the note about different declensions on date
+# formats, here it is. If your language doesn't use different declensions of
+# month names, you shouldn't have much work. Just leave the *.monthFormat
+# string on "nominative" and the string month.*.name will be filled in.
+#
+# If you need a different form for a string, you can change the
+# *.monthFormat to a different value. Supported values are currently:
+# nominative (default), genitive
+# The modified month name form will then be filled in accordingly. If this
+# system does not suit your needs, please file a bug!
+
+# LOCALIZATION NOTE (month.*.name):
+# Some languages require different declensions of month names.
+# These values will be used if *.monthFormat is set to "nominative" or in places
+# where using a different declension is not yet supported.
+month.1.name=Tháng 1
+month.2.name=Tháng 2
+month.3.name=Tháng 3
+month.4.name=Tháng 4
+month.5.name=Tháng 5
+month.6.name=Tháng 6
+month.7.name=Tháng 7
+month.8.name=Tháng 8
+month.9.name=Tháng 9
+month.10.name=Tháng 10
+month.11.name=Tháng 11
+month.12.name=Tháng 12
+
+# LOCALIZATION NOTE (month.*.genitive):
+# Some languages require different declensions of month names.
+# These values will be used if *.monthFormat is set to "genitive"
+# If your language doesn't use different declensions, just set the same
+# values as for month.*.name.
+month.1.genitive=Tháng 1
+month.2.genitive=Tháng 2
+month.3.genitive=Tháng 3
+month.4.genitive=Tháng 4
+month.5.genitive=Tháng 5
+month.6.genitive=Tháng 6
+month.7.genitive=Tháng 7
+month.8.genitive=Tháng 8
+month.9.genitive=Tháng 9
+month.10.genitive=Tháng 10
+month.11.genitive=Tháng 11
+month.12.genitive=Tháng 12
+
+month.1.Mmm=Thg01
+month.2.Mmm=Thg02
+month.3.Mmm=Thg03
+month.4.Mmm=Thg04
+month.5.Mmm=Thg05
+month.6.Mmm=Thg06
+month.7.Mmm=Thg07
+month.8.Mmm=Thg08
+month.9.Mmm=Thg09
+month.10.Mmm=Thg10
+month.11.Mmm=Thg11
+month.12.Mmm=Thg12
+
+day.1.name=Chủ nhật
+day.2.name=Thứ hai
+day.3.name=Thứ ba
+day.4.name=Thứ tư
+day.5.name=Thứ năm
+day.6.name=Thứ sáu
+day.7.name=Thứ bảy
+
+day.1.Mmm=ChN
+day.2.Mmm=Th2
+day.3.Mmm=Th3
+day.4.Mmm=Th4
+day.5.Mmm=Th5
+day.6.Mmm=Th6
+day.7.Mmm=Th7
+
+# Can someone tell me why we're not counting from zero?
+day.1.short=CN
+day.2.short=T2
+day.3.short=T3
+day.4.short=T4
+day.5.short=T5
+day.6.short=T6
+day.7.short=T7
+
+# Localizable day's date
+day.1.number=1
+day.2.number=2
+day.3.number=3
+day.4.number=4
+day.5.number=5
+day.6.number=6
+day.7.number=7
+day.8.number=8
+day.9.number=9
+day.10.number=10
+day.11.number=11
+day.12.number=12
+day.13.number=13
+day.14.number=14
+day.15.number=15
+day.16.number=16
+day.17.number=17
+day.18.number=18
+day.19.number=19
+day.20.number=20
+day.21.number=21
+day.22.number=22
+day.23.number=23
+day.24.number=24
+day.25.number=25
+day.26.number=26
+day.27.number=27
+day.28.number=28
+day.29.number=29
+day.30.number=30
+day.31.number=31
+
+# LOCALIZATION NOTE (dayOrdinalSymbol):
+# Allows to insert a string, a character or a symbol after the number of a
+# monthday in order to give it the meaning of ordinal number e.g. 1 -> 1st etc.
+# It's mainly used when formatting dates with both monthday and month name. It
+# affects the following localizable strings that hence must be localized *without*
+# any ordinal symbol for the monthday number:
+# dayHeaderLabel, monthlyDaysOfNth_day,
+# yearlyNthOn, daysIntervalBetweenYears,
+# daysIntervalBetweenMonths, daysIntervalInMonth.
+# Write only a single string if the ordinal symbol is the same for every monthday, otherwise
+# write a sequence of _31_ strings (one for each monthday) separated with commas.
+# If your language doesn't require that in the mentioned strings, leave it empty.
+# e.g.
+# dayOrdinalSymbol=.
+# -> daysIntervalInMonth: 'March 3. - 9., 2008'
+# dayOrdinalSymbol=st,nd,rd,th,th,th,th,th,th,th,th,th,th,th,th,
+# th,th,th,th,th,st,nd,rd,th,th,th,th,th,th,th,st
+# -> daysIntervalBetweenMonths: 'September 29th - November 1st, 2008'
+dayOrdinalSymbol=
+
+noon=Trưa
+midnight=Nửa đêm
+
+AllDay=Cả ngày
+Repeating=(Đang lặp lại)
diff --git a/l10n-vi/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd b/l10n-vi/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd
new file mode 100644
index 0000000000..115f4bb7ac
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd
@@ -0,0 +1,22 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY reminderdialog.title "Thiết lập Nhắc việc">
+<!ENTITY reminder.add.label "Thêm">
+<!ENTITY reminder.add.accesskey "T">
+<!ENTITY reminder.remove.label "Xóa">
+<!ENTITY reminder.remove.accesskey "X">
+
+<!ENTITY reminder.reminderDetails.label "Chi tiết Nhắc việc">
+<!ENTITY reminder.action.label "Chọn một Thao tác Nhắc việc">
+
+<!ENTITY reminder.relation.before.label "trước" >
+<!ENTITY reminder.relation.after.label "sau" >
+
+<!ENTITY reminder.action.alert.label "Hiện một Cảnh báo">
+<!ENTITY reminder.action.email.label "Gửi một Email">
+
+<!ENTITY alarm.units.minutes "phút" >
+<!ENTITY alarm.units.hours "giờ" >
+<!ENTITY alarm.units.days "ngày" >
diff --git a/l10n-vi/calendar/chrome/calendar/global.dtd b/l10n-vi/calendar/chrome/calendar/global.dtd
new file mode 100644
index 0000000000..29ffa16813
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/global.dtd
@@ -0,0 +1,54 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY time.midnight "Nửa đêm" >
+<!ENTITY time.noon "Trưa" >
+
+<!-- Day Names -->
+<!-- LOCALIZATION NOTE : Accesskeys for day.1.Ddd to day.7.Ddd are currently
+ only used in Preferences > Views > Workweek groupbox -->
+<!ENTITY day.1.Ddd "ChN" >
+<!ENTITY day.1.Ddd.accesskey "C">
+<!ENTITY day.2.Ddd "Th2" >
+<!ENTITY day.2.Ddd.accesskey "2">
+<!ENTITY day.3.Ddd "Th3" >
+<!ENTITY day.3.Ddd.accesskey "3">
+<!ENTITY day.4.Ddd "Th4" >
+<!ENTITY day.4.Ddd.accesskey "4">
+<!ENTITY day.5.Ddd "Th5" >
+<!ENTITY day.5.Ddd.accesskey "5">
+<!ENTITY day.6.Ddd "Th6" >
+<!ENTITY day.6.Ddd.accesskey "6">
+<!ENTITY day.7.Ddd "Th7" >
+<!ENTITY day.7.Ddd.accesskey "7">
+
+<!ENTITY day.1.name "Chủ nhật" >
+<!ENTITY day.2.name "Thứ Hai" >
+<!ENTITY day.3.name "Thứ Ba" >
+<!ENTITY day.4.name "Thứ Tư" >
+<!ENTITY day.5.name "Thứ Năm" >
+<!ENTITY day.6.name "Thứ Sáu" >
+<!ENTITY day.7.name "Thứ Bảy" >
+
+<!ENTITY month.1.name "Tháng Một" >
+<!ENTITY month.2.name "Tháng Hai" >
+<!ENTITY month.3.name "Tháng Ba" >
+<!ENTITY month.4.name "Tháng Tư" >
+<!ENTITY month.5.name "Tháng Năm" >
+<!ENTITY month.6.name "Tháng Sáu" >
+<!ENTITY month.7.name "Tháng Bảy" >
+<!ENTITY month.8.name "Tháng Tám" >
+<!ENTITY month.9.name "Tháng Chín" >
+<!ENTITY month.10.name "Tháng Mười" >
+<!ENTITY month.11.name "Tháng Mười Một" >
+<!ENTITY month.12.name "Tháng Mười Hai" >
+
+<!ENTITY onemonthbackward.tooltip "Lùi một tháng" >
+<!ENTITY onemonthforward.tooltip "Tiến Một Tháng" >
+<!ENTITY oneyearbackward.tooltip "Một năm trước" >
+<!ENTITY oneyearforward.tooltip "Một năm tiếp" >
+<!ENTITY showToday.tooltip "Nhảy tới Hôm nay">
+<!ENTITY onedayforward.tooltip "Tiến Một Ngày">
+<!ENTITY onedaybackward.tooltip "Lùi một ngày">
+<!ENTITY showselectedday.tooltip "Hiện các sự kiện của ngày đã chọn">
diff --git a/l10n-vi/calendar/chrome/calendar/menuOverlay.dtd b/l10n-vi/calendar/chrome/calendar/menuOverlay.dtd
new file mode 100644
index 0000000000..dd31743b91
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/menuOverlay.dtd
@@ -0,0 +1,50 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- Event Menu -->
+<!ENTITY event.new.event "Sự kiện Mới…">
+<!ENTITY event.new.event.accesskey "S">
+
+<!ENTITY event.new.task "Nhiệm vụ mới…">
+<!ENTITY event.new.task.accesskey "k">
+
+<!ENTITY calendar.import.label "Nhập…">
+<!ENTITY calendar.import.accesskey "N">
+
+<!ENTITY calendar.export.label "Xuất…">
+<!ENTITY calendar.export.accesskey "X">
+
+<!ENTITY calendar.publish.label "Xuất bản…">
+<!ENTITY calendar.publish.accesskey "b">
+
+<!ENTITY calendar.deletecalendar.label "Xóa Lịch Đã Chọn…">
+<!ENTITY calendar.deletecalendar.accesskey "X">
+<!ENTITY calendar.unsubscribecalendar.label "Hủy đăng ký lịch đã chọn…">
+<!ENTITY calendar.unsubscribecalendar.accesskey "U">
+
+<!-- LOCALIZATION NOTE (calendar.removecalendar.label): Removing the calendar
+ is the general action of removing it, while deleting means to clear the
+ data and unsubscribing means just taking it out of the calendar list. -->
+<!ENTITY calendar.removecalendar.label "Xóa lịch đã chọn…">
+<!ENTITY calendar.removecalendar.accesskey "R">
+
+
+<!ENTITY calendar.menu.customize.label "Tùy biến…">
+<!ENTITY calendar.menu.customize.accesskey "T">
+
+<!ENTITY showUnifinderCmd.label "Tìm Sự Kiện">
+<!ENTITY showUnifinderCmd.accesskey "m">
+<!ENTITY showUnifinderCmd.tooltip "Chuyển đến khung tìm sự kiện">
+
+<!ENTITY calendar.displaytodos.checkbox.label "Hiện các Tác vụ trong Lịch">
+<!ENTITY calendar.displaytodos.checkbox.accesskey "v">
+
+<!ENTITY goTodayCmd.label "Hôm nay">
+<!ENTITY goTodayCmd.accesskey "H">
+
+<!ENTITY showCurrentView.label "Hiển thị Hiện tại">
+<!ENTITY showCurrentView.accesskey "H">
+
+<!ENTITY calendar.properties.label "Thuộc tính Lịch…">
+<!ENTITY calendar.properties.accesskey "c">
diff --git a/l10n-vi/calendar/chrome/calendar/migration.dtd b/l10n-vi/calendar/chrome/calendar/migration.dtd
new file mode 100644
index 0000000000..4de0695eca
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/migration.dtd
@@ -0,0 +1,9 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY migration.title "&brandFullName;: Nhập Dữ Liệu">
+<!ENTITY migration.welcome "Chào mừng">
+<!ENTITY migration.importing "Nhập">
+<!ENTITY migration.list.description "&brandShortName; có thể nhập dữ liệu lịch từ nhiều chương trình thông dụng. Đã tìm thấy dữ liệu từ các chương trình sau trên máy tính của bạn. Vui lòng chọn chương trình mà bạn muốn nhập dữ liệu.">
+<!ENTITY migration.progress.description "Nhập dữ liệu đã chọn">
diff --git a/l10n-vi/calendar/chrome/calendar/migration.properties b/l10n-vi/calendar/chrome/calendar/migration.properties
new file mode 100644
index 0000000000..21f57d5aec
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/migration.properties
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+migratingApp = Đang di chuyển %1$S…
+
+# The next two lines are duplicated from migration.dtd until there is branding
+# for lightning
+migrationTitle = %1$S: Nhập Dữ Liệu
+migrationDescription=%1$S có thể nhập dữ liệu lịch từ nhiều chương trình thông dụng. Đã tìm thấy dữ liệu từ các chương trình sau trên máy tính của bạn. Vui lòng chọn chương trình mà bạn muốn nhập dữ liệu.
+finished = Hoàn tất
+disableExtTitle = Tìm thấy tiện ích mở rộng không tương thích
+disableExtText = Máy bạn đã có tiện ích mở rộng Mozilla Calendar, không tương thích với Lightning. Nó sẽ bị vô hiệu hóa và %1$S sẽ khởi động lại.
diff --git a/l10n-vi/calendar/chrome/calendar/provider-uninstall.dtd b/l10n-vi/calendar/chrome/calendar/provider-uninstall.dtd
new file mode 100644
index 0000000000..8bb0452a7c
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/provider-uninstall.dtd
@@ -0,0 +1,12 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY providerUninstall.title "Gỡ bỏ Nhà cung cấp">
+<!ENTITY providerUninstall.accept.label "Dừng theo dõi Phần đã chọn">
+<!ENTITY providerUninstall.accept.accesskey "D">
+<!ENTITY providerUninstall.cancel.label "Giữ tiện ích">
+<!ENTITY providerUninstall.cancel.accesskey "K">
+<!ENTITY providerUninstall.preName.label "Bạn đã yêu cầu gỡ bỏ hoặc vô hiệu hóa:">
+<!ENTITY providerUninstall.postName.label "Việc này sẽ làm vô hiệu hóa các bộ lịch bên dưới.">
+<!ENTITY providerUninstall.reinstallNote.label "Trừ khi bạn đang định cài lại nhà cung cấp này, bạn có thể chọn dừng theo dõi các bộ lịch từ họ.">
diff --git a/l10n-vi/calendar/chrome/calendar/timezones.properties b/l10n-vi/calendar/chrome/calendar/timezones.properties
new file mode 100644
index 0000000000..04b68c2bcd
--- /dev/null
+++ b/l10n-vi/calendar/chrome/calendar/timezones.properties
@@ -0,0 +1,488 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# extension:
+extensions.calendar-timezones@mozilla.org.name=Định nghĩa múi giờ cho Mozilla Calendar
+extensions.calendar-timezones@mozilla.org.description=Định nghĩa múi giờ theo yêu cầu của Lightning
+extensions.calendar-timezones@mozilla.org.creator=Dự án Mozilla Calendar
+
+pref.timezone.floating=Giờ địa phương
+pref.timezone.UTC=UTC/GMT
+
+# I've derived this list out of timezones.dtd
+# - replaced '_' with ' ' on value side
+# - corrected 'St xyz' to 'St. xyz'
+
+# timezone names:
+pref.timezone.Africa.Abidjan=Châu Phi/Abidjan
+pref.timezone.Africa.Accra=Châu Phi/Accra
+pref.timezone.Africa.Addis_Ababa=Châu Phi/Addis Ababa
+pref.timezone.Africa.Algiers=Châu Phi/Algiers
+pref.timezone.Africa.Asmara=Châu Phi/Asmara
+pref.timezone.Africa.Bamako=Châu Phi/Bamako
+pref.timezone.Africa.Bangui=Châu Phi/Bangui
+pref.timezone.Africa.Banjul=Châu Phi/Banjul
+pref.timezone.Africa.Bissau=Châu Phi/Bissau
+pref.timezone.Africa.Blantyre=Châu Phi/Blantyre
+pref.timezone.Africa.Brazzaville=Châu Phi/Brazzaville
+pref.timezone.Africa.Bujumbura=Châu Phi/Bujumbura
+pref.timezone.Africa.Cairo=Châu Phi/Cairo
+pref.timezone.Africa.Casablanca=Châu Phi/Casablanca
+pref.timezone.Africa.Ceuta=Châu Phi/Ceuta
+pref.timezone.Africa.Conakry=Châu Phi/Conakry
+pref.timezone.Africa.Dakar=Châu Phi/Dakar
+pref.timezone.Africa.Dar_es_Salaam=Châu Phi/Dar es Salaam
+pref.timezone.Africa.Djibouti=Châu Phi/Djibouti
+pref.timezone.Africa.Douala=Châu Phi/Douala
+pref.timezone.Africa.El_Aaiun=Châu Phi/El Aaiun
+pref.timezone.Africa.Freetown=Châu Phi/Freetown
+pref.timezone.Africa.Gaborone=Châu Phi/Gaborone
+pref.timezone.Africa.Harare=Châu Phi/Harare
+pref.timezone.Africa.Johannesburg=Châu Phi/Johannesburg
+pref.timezone.Africa.Kampala=Châu Phi/Kampala
+pref.timezone.Africa.Khartoum=Châu Phi/Khartoum
+pref.timezone.Africa.Kigali=Châu Phi/Kigali
+pref.timezone.Africa.Kinshasa=Châu Phi/Kinshasa
+pref.timezone.Africa.Lagos=Châu Phi/Lagos
+pref.timezone.Africa.Libreville=Châu Phi/Libreville
+pref.timezone.Africa.Lome=Châu Phi/Lome
+pref.timezone.Africa.Luanda=Châu Phi/Luanda
+pref.timezone.Africa.Lubumbashi=Châu Phi/Lubumbashi
+pref.timezone.Africa.Lusaka=Châu Phi/Lusaka
+pref.timezone.Africa.Malabo=Châu Phi/Malabo
+pref.timezone.Africa.Maputo=Châu Phi/Maputo
+pref.timezone.Africa.Maseru=Châu Phi/Maseru
+pref.timezone.Africa.Mbabane=Châu Phi/Mbabane
+pref.timezone.Africa.Mogadishu=Châu Phi/Mogadishu
+pref.timezone.Africa.Monrovia=Châu Phi/Monrovia
+pref.timezone.Africa.Nairobi=Châu Phi/Nairobi
+pref.timezone.Africa.Ndjamena=Châu Phi/Ndjamena
+pref.timezone.Africa.Niamey=Châu Phi/Niamey
+pref.timezone.Africa.Nouakchott=Châu Phi/Nouakchott
+pref.timezone.Africa.Ouagadougou=Châu Phi/Ouagadougou
+pref.timezone.Africa.Porto-Novo=Châu Phi/Porto-Novo
+pref.timezone.Africa.Sao_Tome=Châu Phi/Sao Tome
+pref.timezone.Africa.Tripoli=Châu Phi/Tripoli
+pref.timezone.Africa.Tunis=Châu Phi/Tunis
+pref.timezone.Africa.Windhoek=Châu Phi/Windhoek
+pref.timezone.America.Adak=Châu Mỹ/Adak
+pref.timezone.America.Anchorage=Châu Mỹ/Anchorage
+pref.timezone.America.Anguilla=Châu Mỹ/Anguilla
+pref.timezone.America.Antigua=Châu Mỹ/Antigua
+pref.timezone.America.Araguaina=Châu Mỹ/Araguaina
+pref.timezone.America.Argentina.Buenos_Aires=Châu Mỹ/Argentina/Buenos Aires
+pref.timezone.America.Argentina.Catamarca=Châu Mỹ/Argentina/Catamarca
+pref.timezone.America.Argentina.Cordoba=Châu Mỹ/Argentina/Cordoba
+pref.timezone.America.Argentina.Jujuy=Châu Mỹ/Argentina/Jujuy
+pref.timezone.America.Argentina.La_Rioja=Châu Mỹ/Argentina/La Rioja
+pref.timezone.America.Argentina.Mendoza=Châu Mỹ/Argentina/Mendoza
+pref.timezone.America.Argentina.Rio_Gallegos=Châu Mỹ/Argentina/Rio Gallegos
+pref.timezone.America.Argentina.San_Juan=Châu Mỹ/Argentina/San Juan
+pref.timezone.America.Argentina.Tucuman=Châu Mỹ/Argentina/Tucuman
+pref.timezone.America.Argentina.Ushuaia=Châu Mỹ/Argentina/Ushuaia
+pref.timezone.America.Aruba=Châu Mỹ/Aruba
+pref.timezone.America.Asuncion=Châu Mỹ/Asuncion
+pref.timezone.America.Atikokan=Châu Mỹ/Atikokan
+pref.timezone.America.Bahia=Châu Mỹ/Bahia
+pref.timezone.America.Barbados=Châu Mỹ/Barbados
+pref.timezone.America.Belem=Châu Mỹ/Belem
+pref.timezone.America.Belize=Châu Mỹ/Belize
+pref.timezone.America.Blanc-Sablon=Châu Mỹ/Blanc-Sablon
+pref.timezone.America.Boa_Vista=Châu Mỹ/Boa Vista
+pref.timezone.America.Bogota=Châu Mỹ/Bogota
+pref.timezone.America.Boise=Châu Mỹ/Boise
+pref.timezone.America.Cambridge_Bay=Châu Mỹ/Cambridge Bay
+pref.timezone.America.Campo_Grande=Châu Mỹ/Campo Grande
+pref.timezone.America.Cancun=Châu Mỹ/Cancun
+pref.timezone.America.Caracas=Châu Mỹ/Caracas
+pref.timezone.America.Cayenne=Châu Mỹ/Cayenne
+pref.timezone.America.Cayman=Châu Mỹ/Cayman
+pref.timezone.America.Chicago=Châu Mỹ/Chicago
+pref.timezone.America.Chihuahua=Châu Mỹ/Chihuahua
+pref.timezone.America.Costa_Rica=Châu Mỹ/Costa Rica
+pref.timezone.America.Cuiaba=Châu Mỹ/Cuiaba
+pref.timezone.America.Curacao=Châu Mỹ/Curacao
+pref.timezone.America.Danmarkshavn=Châu Mỹ/Danmarkshavn
+pref.timezone.America.Dawson=Châu Mỹ/Dawson
+pref.timezone.America.Dawson_Creek=Châu Mỹ/Dawson Creek
+pref.timezone.America.Denver=Châu Mỹ/Denver
+pref.timezone.America.Detroit=Châu Mỹ/Detroit
+pref.timezone.America.Dominica=Châu Mỹ/Dominica
+pref.timezone.America.Edmonton=Châu Mỹ/Edmonton
+pref.timezone.America.Eirunepe=Châu Mỹ/Eirunepe
+pref.timezone.America.El_Salvador=Châu Mỹ/El Salvador
+pref.timezone.America.Fortaleza=Châu Mỹ/Fortaleza
+pref.timezone.America.Glace_Bay=Châu Mỹ/Glace Bay
+pref.timezone.America.Godthab=Châu Mỹ/Godthab
+pref.timezone.America.Goose_Bay=Châu Mỹ/Goose Bay
+pref.timezone.America.Grand_Turk=Châu Mỹ/Grand Turk
+pref.timezone.America.Grenada=Châu Mỹ/Grenada
+pref.timezone.America.Guadeloupe=Châu Mỹ/Guadeloupe
+pref.timezone.America.Guatemala=Châu Mỹ/Guatemala
+pref.timezone.America.Guayaquil=Châu Mỹ/Guayaquil
+pref.timezone.America.Guyana=Châu Mỹ/Guyana
+pref.timezone.America.Halifax=Châu Mỹ/Halifax
+pref.timezone.America.Havana=Châu Mỹ/Havana
+pref.timezone.America.Hermosillo=Châu Mỹ/Hermosillo
+pref.timezone.America.Indiana.Indianapolis=Châu Mỹ/Indiana/Indianapolis
+pref.timezone.America.Indiana.Knox=Châu Mỹ/Indiana/Knox
+pref.timezone.America.Indiana.Marengo=Châu Mỹ/Indiana/Marengo
+pref.timezone.America.Indiana.Petersburg=Châu Mỹ/Indiana/Petersburg
+pref.timezone.America.Indiana.Vevay=Châu Mỹ/Indiana/Vevay
+pref.timezone.America.Indiana.Vincennes=Châu Mỹ/Indiana/Vincennes
+pref.timezone.America.Inuvik=Châu Mỹ/Inuvik
+pref.timezone.America.Iqaluit=Châu Mỹ/Iqaluit
+pref.timezone.America.Jamaica=Châu Mỹ/Jamaica
+pref.timezone.America.Juneau=Châu Mỹ/Juneau
+pref.timezone.America.Kentucky.Louisville=Châu Mỹ/Kentucky/Louisville
+pref.timezone.America.Kentucky.Monticello=Châu Mỹ/Kentucky/Monticello
+pref.timezone.America.La_Paz=Châu Mỹ/La Paz
+pref.timezone.America.Lima=Châu Mỹ/Lima
+pref.timezone.America.Los_Angeles=Châu Mỹ/Los Angeles
+pref.timezone.America.Maceio=Châu Mỹ/Maceio
+pref.timezone.America.Managua=Châu Mỹ/Managua
+pref.timezone.America.Manaus=Châu Mỹ/Manaus
+pref.timezone.America.Martinique=Châu Mỹ/Martinique
+pref.timezone.America.Mazatlan=Châu Mỹ/Mazatlan
+pref.timezone.America.Menominee=Châu Mỹ/Menominee
+pref.timezone.America.Merida=Châu Mỹ/Merida
+pref.timezone.America.Mexico_City=Châu Mỹ/Mexico City
+pref.timezone.America.Miquelon=Châu Mỹ/Miquelon
+pref.timezone.America.Moncton=Châu Mỹ/Moncton
+pref.timezone.America.Monterrey=Châu Mỹ/Monterrey
+pref.timezone.America.Montevideo=Châu Mỹ/Montevideo
+pref.timezone.America.Montreal=Châu Mỹ/Montreal
+pref.timezone.America.Montserrat=Châu Mỹ/Montserrat
+pref.timezone.America.Nassau=Châu Mỹ/Nassau
+pref.timezone.America.New_York=Châu Mỹ/New York
+pref.timezone.America.Nipigon=Châu Mỹ/Nipigon
+pref.timezone.America.Nome=Châu Mỹ/Nome
+pref.timezone.America.Noronha=Châu Mỹ/Noronha
+pref.timezone.America.North_Dakota.Center=Châu Mỹ/North Dakota/Center
+pref.timezone.America.North_Dakota.New_Salem=Châu Mỹ/North Dakota/New Salem
+pref.timezone.America.Panama=Châu Mỹ/Panama
+pref.timezone.America.Pangnirtung=Châu Mỹ/Pangnirtung
+pref.timezone.America.Paramaribo=Châu Mỹ/Paramaribo
+pref.timezone.America.Phoenix=Châu Mỹ/Phoenix
+pref.timezone.America.Port-au-Prince=Châu Mỹ/Port-au-Prince
+pref.timezone.America.Port_of_Spain=Châu Mỹ/Port of Spain
+pref.timezone.America.Porto_Velho=Châu Mỹ/Porto Velho
+pref.timezone.America.Puerto_Rico=Châu Mỹ/Puerto Rico
+pref.timezone.America.Rainy_River=Châu Mỹ/Rainy River
+pref.timezone.America.Rankin_Inlet=Châu Mỹ/Rankin Inlet
+pref.timezone.America.Recife=Châu Mỹ/Recife
+pref.timezone.America.Regina=Châu Mỹ/Regina
+pref.timezone.America.Rio_Branco=Châu Mỹ/Rio Branco
+pref.timezone.America.Santiago=Châu Mỹ/Santiago
+pref.timezone.America.Santo_Domingo=Châu Mỹ/Santo Domingo
+pref.timezone.America.Sao_Paulo=Châu Mỹ/Sao Paulo
+pref.timezone.America.Scoresbysund=Châu Mỹ/Scoresbysund
+pref.timezone.America.Shiprock=Châu Mỹ/Shiprock
+pref.timezone.America.St_Johns=Châu Mỹ/St. Johns
+pref.timezone.America.St_Kitts=Châu Mỹ/St. Kitts
+pref.timezone.America.St_Lucia=Châu Mỹ/St. Lucia
+pref.timezone.America.St_Thomas=Châu Mỹ/St. Thomas
+pref.timezone.America.St_Vincent=Châu Mỹ/St. Vincent
+pref.timezone.America.Swift_Current=Châu Mỹ/Swift Current
+pref.timezone.America.Tegucigalpa=Châu Mỹ/Tegucigalpa
+pref.timezone.America.Thule=Châu Mỹ/Thule
+pref.timezone.America.Thunder_Bay=Châu Mỹ/Thunder Bay
+pref.timezone.America.Tijuana=Châu Mỹ/Tijuana
+pref.timezone.America.Toronto=Châu Mỹ/Toronto
+pref.timezone.America.Tortola=Châu Mỹ/Tortola
+pref.timezone.America.Vancouver=Châu Mỹ/Vancouver
+pref.timezone.America.Whitehorse=Châu Mỹ/Whitehorse
+pref.timezone.America.Winnipeg=Châu Mỹ/Winnipeg
+pref.timezone.America.Yakutat=Châu Mỹ/Yakutat
+pref.timezone.America.Yellowknife=Châu Mỹ/Yellowknife
+pref.timezone.Antarctica.Casey=Châu Nam Cực/Casey
+pref.timezone.Antarctica.Davis=Châu Nam Cực/Davis
+pref.timezone.Antarctica.DumontDUrville=Châu Nam Cực/DumontDUrville
+pref.timezone.Antarctica.Mawson=Châu Nam Cực/Mawson
+pref.timezone.Antarctica.McMurdo=Châu Nam Cực/McMurdo
+pref.timezone.Antarctica.Palmer=Châu Nam Cực/Palmer
+pref.timezone.Antarctica.Rothera=Châu Nam Cực/Rothera
+pref.timezone.Antarctica.South_Pole=Châu Nam Cực/South Pole
+pref.timezone.Antarctica.Syowa=Châu Nam Cực/Syowa
+pref.timezone.Antarctica.Vostok=Châu Nam Cực/Vostok
+pref.timezone.Arctic.Longyearbyen=Châu Bắc Cực/Longyearbyen
+pref.timezone.Asia.Aden=Châu Á/Aden
+pref.timezone.Asia.Almaty=Châu Á/Almaty
+pref.timezone.Asia.Amman=Châu Á/Amman
+pref.timezone.Asia.Anadyr=Châu Á/Anadyr
+pref.timezone.Asia.Aqtau=Châu Á/Aqtau
+pref.timezone.Asia.Aqtobe=Châu Á/Aqtobe
+pref.timezone.Asia.Ashgabat=Châu Á/Ashgabat
+pref.timezone.Asia.Baghdad=Châu Á/Baghdad
+pref.timezone.Asia.Bahrain=Châu Á/Bahrain
+pref.timezone.Asia.Baku=Châu Á/Baku
+pref.timezone.Asia.Bangkok=Châu Á/Băng Cốc
+pref.timezone.Asia.Beirut=Châu Á/Beirut
+pref.timezone.Asia.Bishkek=Châu Á/Bishkek
+pref.timezone.Asia.Brunei=Châu Á/Brunei
+pref.timezone.Asia.Choibalsan=Châu Á/Choibalsan
+pref.timezone.Asia.Chongqing=Châu Á/Chongqing
+pref.timezone.Asia.Colombo=Châu Á/Colombo
+pref.timezone.Asia.Damascus=Châu Á/Damascus
+pref.timezone.Asia.Dhaka=Châu Á/Dhaka
+pref.timezone.Asia.Dili=Châu Á/Dili
+pref.timezone.Asia.Dubai=Châu Á/Dubai
+pref.timezone.Asia.Dushanbe=Châu Á/Dushanbe
+pref.timezone.Asia.Gaza=Châu Á/Gaza
+pref.timezone.Asia.Harbin=Châu Á/Harbin
+pref.timezone.Asia.Hong_Kong=Châu Á/Hong Kong
+pref.timezone.Asia.Hovd=Châu Á/Hovd
+pref.timezone.Asia.Irkutsk=Châu Á/Irkutsk
+pref.timezone.Asia.Istanbul=Châu Á/Istanbul
+pref.timezone.Asia.Jakarta=Châu Á/Jakarta
+pref.timezone.Asia.Jayapura=Châu Á/Jayapura
+pref.timezone.Asia.Jerusalem=Châu Á/Jerusalem
+pref.timezone.Asia.Kabul=Châu Á/Kabul
+pref.timezone.Asia.Kamchatka=Châu Á/Kamchatka
+pref.timezone.Asia.Karachi=Châu Á/Karachi
+pref.timezone.Asia.Kashgar=Châu Á/Kashgar
+pref.timezone.Asia.Kathmandu=Châu Á/Kathmandu
+pref.timezone.Asia.Krasnoyarsk=Châu Á/Krasnoyarsk
+pref.timezone.Asia.Kuala_Lumpur=Châu Á/Kuala Lumpur
+pref.timezone.Asia.Kuching=Châu Á/Kuching
+pref.timezone.Asia.Kuwait=Châu Á/Kuwait
+pref.timezone.Asia.Macau=Châu Á/Macau
+pref.timezone.Asia.Magadan=Châu Á/Magadan
+pref.timezone.Asia.Makassar=Châu Á/Makassar
+pref.timezone.Asia.Manila=Châu Á/Manila
+pref.timezone.Asia.Muscat=Châu Á/Muscat
+pref.timezone.Asia.Nicosia=Châu Á/Nicosia
+pref.timezone.Asia.Novosibirsk=Châu Á/Novosibirsk
+pref.timezone.Asia.Omsk=Châu Á/Omsk
+pref.timezone.Asia.Oral=Châu Á/Oral
+pref.timezone.Asia.Phnom_Penh=Châu Á/Phnom Penh
+pref.timezone.Asia.Pontianak=Châu Á/Pontianak
+pref.timezone.Asia.Pyongyang=Châu Á/Pyongyang
+pref.timezone.Asia.Qatar=Châu Á/Qatar
+pref.timezone.Asia.Qyzylorda=Châu Á/Qyzylorda
+pref.timezone.Asia.Rangoon=Châu Á/Rangoon
+pref.timezone.Asia.Riyadh=Châu Á/Riyadh
+pref.timezone.Asia.Sakhalin=Châu Á/Sakhalin
+pref.timezone.Asia.Samarkand=Châu Á/Samarkand
+pref.timezone.Asia.Seoul=Châu Á/Seoul
+pref.timezone.Asia.Shanghai=Châu Á/Thượng Hải
+pref.timezone.Asia.Singapore=Châu Á/Singapore
+pref.timezone.Asia.Taipei=Châu Á/Taipei
+pref.timezone.Asia.Tashkent=Châu Á/Tashkent
+pref.timezone.Asia.Tbilisi=Châu Á/Tbilisi
+pref.timezone.Asia.Tehran=Châu Á/Tehran
+pref.timezone.Asia.Thimphu=Châu Á/Thimphu
+pref.timezone.Asia.Tokyo=Châu Á/Tokyo
+pref.timezone.Asia.Ulaanbaatar=Châu Á/Ulaanbaatar
+pref.timezone.Asia.Urumqi=Châu Á/Urumqi
+pref.timezone.Asia.Vientiane=Châu Á/Vientiane
+pref.timezone.Asia.Vladivostok=Châu Á/Vladivostok
+pref.timezone.Asia.Yakutsk=Châu Á/Yakutsk
+pref.timezone.Asia.Yekaterinburg=Châu Á/Yekaterinburg
+pref.timezone.Asia.Yerevan=Châu Á/Yerevan
+pref.timezone.Atlantic.Azores=Đại Tây Dương/Azores
+pref.timezone.Atlantic.Bermuda=Đại Tây Dương/Bermuda
+pref.timezone.Atlantic.Canary=Đại Tây Dương/Canary
+pref.timezone.Atlantic.Cape_Verde=Đại Tây Dương/Cape Verde
+pref.timezone.Atlantic.Faroe=Đại Tây Dương/Faroe
+pref.timezone.Atlantic.Madeira=Đại Tây Dương/Madeira
+pref.timezone.Atlantic.Reykjavik=Đại Tây Dương/Reykjavik
+pref.timezone.Atlantic.South_Georgia=Đại Tây Dương/South Georgia
+pref.timezone.Atlantic.St_Helena=Đại Tây Dương/St. Helena
+pref.timezone.Atlantic.Stanley=Đại Tây Dương/Stanley
+pref.timezone.Australia.Adelaide=Châu Úc/Adelaide
+pref.timezone.Australia.Brisbane=Châu Úc/Brisbane
+pref.timezone.Australia.Broken_Hill=Châu Úc/Broken Hill
+pref.timezone.Australia.Currie=Châu Úc/Currie
+pref.timezone.Australia.Darwin=Châu Úc/Darwin
+pref.timezone.Australia.Eucla=Châu Úc/Eucla
+pref.timezone.Australia.Hobart=Châu Úc/Hobart
+pref.timezone.Australia.Lindeman=Châu Úc/Lindeman
+pref.timezone.Australia.Lord_Howe=Châu Úc/Lord Howe
+pref.timezone.Australia.Melbourne=Châu Úc/Melbourne
+pref.timezone.Australia.Perth=Châu Úc/Perth
+pref.timezone.Australia.Sydney=Châu Úc/Sydney
+pref.timezone.Europe.Amsterdam=Châu Âu/Amsterdam
+pref.timezone.Europe.Andorra=Châu Âu/Andorra
+pref.timezone.Europe.Athens=Châu Âu/Athens
+pref.timezone.Europe.Belgrade=Châu Âu/Belgrade
+pref.timezone.Europe.Berlin=Châu Âu/Berlin
+pref.timezone.Europe.Bratislava=Châu Âu/Bratislava
+pref.timezone.Europe.Brussels=Châu Âu/Brussels
+pref.timezone.Europe.Bucharest=Châu Âu/Bucharest
+pref.timezone.Europe.Budapest=Châu Âu/Budapest
+pref.timezone.Europe.Chisinau=Châu Âu/Chisinau
+pref.timezone.Europe.Copenhagen=Châu Âu/Copenhagen
+pref.timezone.Europe.Dublin=Châu Âu/Dublin
+pref.timezone.Europe.Gibraltar=Châu Âu/Gibraltar
+pref.timezone.Europe.Guernsey=Châu Âu/Guernsey
+pref.timezone.Europe.Helsinki=Châu Âu/Helsinki
+pref.timezone.Europe.Isle_of_Man=Châu Âu/Đảo Man
+pref.timezone.Europe.Istanbul=Châu Âu/Istanbul
+pref.timezone.Europe.Jersey=Châu Âu/Jersey
+pref.timezone.Europe.Kaliningrad=Châu Âu/Kaliningrad
+pref.timezone.Europe.Kiev=Châu Âu/Kiev
+pref.timezone.Europe.Lisbon=Châu Âu/Lisbon
+pref.timezone.Europe.Ljubljana=Châu Âu/Ljubljana
+pref.timezone.Europe.London=Châu Âu/Luân Đôn
+pref.timezone.Europe.Luxembourg=Châu Âu/Luxembourg
+pref.timezone.Europe.Madrid=Châu Âu/Madrid
+pref.timezone.Europe.Malta=Châu Âu/Malta
+pref.timezone.Europe.Mariehamn=Châu Âu/Mariehamn
+pref.timezone.Europe.Minsk=Châu Âu/Minsk
+pref.timezone.Europe.Monaco=Châu Âu/Monaco
+pref.timezone.Europe.Moscow=Châu Âu/Mátxcơva
+pref.timezone.Europe.Nicosia=Châu Âu/Nicosia
+pref.timezone.Europe.Oslo=Châu Âu/Oslo
+pref.timezone.Europe.Paris=Châu Âu/Paris
+pref.timezone.Europe.Podgorica=Châu Âu/Podgorica
+pref.timezone.Europe.Prague=Châu Âu/Prague
+pref.timezone.Europe.Riga=Châu Âu/Riga
+pref.timezone.Europe.Rome=Châu Âu/Rome
+pref.timezone.Europe.Samara=Châu Âu/Samara
+pref.timezone.Europe.San_Marino=Châu Âu/San Marino
+pref.timezone.Europe.Sarajevo=Châu Âu/Sarajevo
+pref.timezone.Europe.Simferopol=Châu Âu/Simferopol
+pref.timezone.Europe.Skopje=Châu Âu/Skopje
+pref.timezone.Europe.Sofia=Châu Âu/Sofia
+pref.timezone.Europe.Stockholm=Châu Âu/Stockholm
+pref.timezone.Europe.Tallinn=Châu Âu/Tallinn
+pref.timezone.Europe.Tirane=Châu Âu/Tirane
+pref.timezone.Europe.Uzhgorod=Châu Âu/Uzhgorod
+pref.timezone.Europe.Vaduz=Châu Âu/Vaduz
+pref.timezone.Europe.Vatican=Châu Âu/Vatican
+pref.timezone.Europe.Vienna=Châu Âu/Vienna
+pref.timezone.Europe.Vilnius=Châu Âu/Vilnius
+pref.timezone.Europe.Volgograd=Châu Âu/Volgograd
+pref.timezone.Europe.Warsaw=Châu Âu/Warsaw
+pref.timezone.Europe.Zagreb=Châu Âu/Zagreb
+pref.timezone.Europe.Zaporozhye=Châu Âu/Zaporozhye
+pref.timezone.Europe.Zurich=Châu Âu/Zurich
+pref.timezone.Indian.Antananarivo=Ấn Độ Dương/Antananarivo
+pref.timezone.Indian.Chagos=Ấn Độ Dương/Chagos
+pref.timezone.Indian.Christmas=Ấn Độ Dương/Christmas
+pref.timezone.Indian.Cocos=Ấn Độ Dương/Cocos
+pref.timezone.Indian.Comoro=Ấn Độ Dương/Comoro
+pref.timezone.Indian.Kerguelen=Ấn Độ Dương/Kerguelen
+pref.timezone.Indian.Mahe=Ấn Độ Dương/Mahe
+pref.timezone.Indian.Maldives=Ấn Độ Dương/Maldives
+pref.timezone.Indian.Mauritius=Ấn Độ Dương/Mauritius
+pref.timezone.Indian.Mayotte=Ấn Độ Dương/Mayotte
+pref.timezone.Indian.Reunion=Ấn Độ Dương/Reunion
+pref.timezone.Pacific.Apia=Thái Bình Dương/Apia
+pref.timezone.Pacific.Auckland=Thái Bình Dương/Auckland
+pref.timezone.Pacific.Chatham=Thái Bình Dương/Chatham
+pref.timezone.Pacific.Easter=Thái Bình Dương/Easter
+pref.timezone.Pacific.Efate=Thái Bình Dương/Efate
+pref.timezone.Pacific.Enderbury=Thái Bình Dương/Enderbury
+pref.timezone.Pacific.Fakaofo=Thái Bình Dương/Fakaofo
+pref.timezone.Pacific.Fiji=Thái Bình Dương/Fiji
+pref.timezone.Pacific.Funafuti=Thái Bình Dương/Funafuti
+pref.timezone.Pacific.Galapagos=Thái Bình Dương/Galapagos
+pref.timezone.Pacific.Gambier=Thái Bình Dương/Gambier
+pref.timezone.Pacific.Guadalcanal=Thái Bình Dương/Guadalcanal
+pref.timezone.Pacific.Guam=Thái Bình Dương/Guam
+pref.timezone.Pacific.Honolulu=Thái Bình Dương/Honolulu
+pref.timezone.Pacific.Johnston=Thái Bình Dương/Johnston
+pref.timezone.Pacific.Kiritimati=Thái Bình Dương/Kiritimati
+pref.timezone.Pacific.Kosrae=Thái Bình Dương/Kosrae
+pref.timezone.Pacific.Kwajalein=Thái Bình Dương/Kwajalein
+pref.timezone.Pacific.Majuro=Thái Bình Dương/Majuro
+pref.timezone.Pacific.Marquesas=Thái Bình Dương/Marquesas
+pref.timezone.Pacific.Midway=Thái Bình Dương/Midway
+pref.timezone.Pacific.Nauru=Thái Bình Dương/Nauru
+pref.timezone.Pacific.Niue=Thái Bình Dương/Niue
+pref.timezone.Pacific.Norfolk=Thái Bình Dương/Norfolk
+pref.timezone.Pacific.Noumea=Thái Bình Dương/Noumea
+pref.timezone.Pacific.Pago_Pago=Thái Bình Dương/Pago Pago
+pref.timezone.Pacific.Palau=Thái Bình Dương/Palau
+pref.timezone.Pacific.Pitcairn=Thái Bình Dương/Pitcairn
+pref.timezone.Pacific.Ponape=Thái Bình Dương/Ponape
+pref.timezone.Pacific.Port_Moresby=Thái Bình Dương/Port Moresby
+pref.timezone.Pacific.Rarotonga=Thái Bình Dương/Rarotonga
+pref.timezone.Pacific.Saipan=Thái Bình Dương/Saipan
+pref.timezone.Pacific.Tahiti=Thái Bình Dương/Tahiti
+pref.timezone.Pacific.Tarawa=Thái Bình Dương/Tarawa
+pref.timezone.Pacific.Tongatapu=Thái Bình Dương/Tongatapu
+pref.timezone.Pacific.Truk=Thái Bình Dương/Truk
+pref.timezone.Pacific.Wake=Thái Bình Dương/Wake
+pref.timezone.Pacific.Wallis=Thái Bình Dương/Wallis
+
+# the following have been missing
+pref.timezone.America.Indiana.Tell_City=Châu Mỹ/Indiana/Tell City
+pref.timezone.America.Indiana.Winamac=Châu Mỹ/Indiana/Winamac
+pref.timezone.America.Marigot=Châu Mỹ/Marigot
+pref.timezone.America.Resolute=Châu Mỹ/Resolute
+pref.timezone.America.St_Barthelemy=Châu Mỹ/St. Barthelemy
+
+# added with 2008d:
+pref.timezone.America.Argentina.San_Luis=Châu Mỹ/Argentina/San Luis
+pref.timezone.America.Santarem=Châu Mỹ/Santarem
+pref.timezone.Asia.Ho_Chi_Minh=Châu Á/Hồ Chí Minh
+pref.timezone.Asia.Kolkata=Châu Á/Kolkata
+
+# added with 2008i:
+pref.timezone.America.Argentina.Salta=Châu Mỹ/Argentina/Salta
+
+# added with 2010i
+pref.timezone.America.Matamoros=Châu Mỹ/Matamoros
+pref.timezone.America.Ojinaga=Châu Mỹ/Ojinaga
+pref.timezone.America.Santa_Isabel=Châu Mỹ/Santa Isabel
+pref.timezone.Antarctica.Macquarie=Châu Nam Cực/Macquarie
+pref.timezone.Asia.Novokuznetsk=Châu Á/Novokuznetsk
+
+#added with 2011b
+pref.timezone.America.Bahia_Banderas=Châu Mỹ/Bahia Banderas
+pref.timezone.America.North_Dakota.Beulah=Châu Mỹ/North Dakota/Beulah
+pref.timezone.Pacific.Chuuk=Thái Bình Dương/Chuuk
+pref.timezone.Pacific.Pohnpei=Thái Bình Dương/Ponape
+
+#added with 2011n
+pref.timezone.Africa.Juba=Châu Phi/Juba
+pref.timezone.America.Kralendijk=Châu Mỹ/Kralendijk
+pref.timezone.America.Lower_Princes=Châu Mỹ/Lower Princes
+pref.timezone.America.Metlakatla=Châu Mỹ/Metlakatla
+pref.timezone.America.Sitka=Châu Mỹ/Sitka
+pref.timezone.Asia.Hebron=Châu Á/Hebron
+
+#added with 2013a
+pref.timezone.America.Creston=Châu Mỹ/Creston
+pref.timezone.Asia.Khandyga=Châu Á/Khandyga
+pref.timezone.Asia.Ust-Nera=Châu Á/Ust-Nera
+pref.timezone.Europe.Busingen=Châu Âu/Busingen
+
+#added with 2014b
+pref.timezone.Antarctica.Troll=Châu Nam Cực/Troll
+
+#added with 2014j
+pref.timezone.Asia.Chita=Châu Á/Chita
+pref.timezone.Asia.Srednekolymsk=Châu Á/Srednekolymsk
+pref.timezone.Pacific.Bougainville=Thái Bình Dương/Bougainville
+
+#added with 2.2015g
+pref.timezone.America.Fort_Nelson=Châu Mỹ/Fort Nelson
+
+#added with 2.2016b
+pref.timezone.Europe.Ulyanovsk=Châu Âu/Ulyanovsk
+pref.timezone.Europe.Astrakhan=Châu Âu/Astrakhan
+pref.timezone.Asia.Barnaul=Châu Á/Barnaul
+
+#added with 2.2016i
+pref.timezone.Asia.Yangon=Châu Á/Yangon
+pref.timezone.Asia.Tomsk=Châu Á/Tomsk
+pref.timezone.Asia.Famagusta=Châu Á/Famagusta
+pref.timezone.Europe.Kirov=Châu Âu/Kirov
+
+#added with 2.2016j
+pref.timezone.Europe.Saratov=Châu Âu/Saratov
+pref.timezone.Asia.Atyrau=Châu Á/Atyrau
+
+#added with 2.2017b
+pref.timezone.America.Punta_Arenas=Châu Mỹ/Punta Arenas
+
+#added with 2.2018i
+pref.timezone.Asia.Qostanay=Châu Á/Qostanay
+
+#added with 2.2020a
+pref.timezone.America.Nuuk=Mỹ/Nuuk
diff --git a/l10n-vi/calendar/chrome/lightning/lightning-toolbar.dtd b/l10n-vi/calendar/chrome/lightning/lightning-toolbar.dtd
new file mode 100644
index 0000000000..1d8bef9ff5
--- /dev/null
+++ b/l10n-vi/calendar/chrome/lightning/lightning-toolbar.dtd
@@ -0,0 +1,51 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY lightning.toolbar.calendar.name "Thanh công cụ lịch">
+<!ENTITY lightning.toolbar.calendar.name.accesskey "C">
+<!ENTITY lightning.toolbar.task.name "Thanh công cụ nhiệm vụ">
+<!ENTITY lightning.toolbar.task.name.accesskey "T">
+
+<!ENTITY lightning.toolbar.sync.label "Đồng bộ hoá">
+<!ENTITY lightning.toolbar.sync.tooltip "Tải lại lịch và đồng bộ hóa các thay đổi">
+<!ENTITY lightning.toolbar.delete.label "Xóa">
+<!ENTITY lightning.toolbar.delete.tooltip "Xóa các sự kiện hoặc nhiệm vụ được chọn">
+<!ENTITY lightning.toolbar.edit.label "Chỉnh sửa">
+<!ENTITY lightning.toolbar.edit.tooltip "Chỉnh sửa sự kiện hoặc nhiệm vụ được chọn">
+<!ENTITY lightning.toolbar.gototoday.label "Đi đến hôm nay">
+<!ENTITY lightning.toolbar.gototoday.tooltip "Đi đến hôm nay">
+<!ENTITY lightning.toolbar.print.label "In">
+<!ENTITY lightning.toolbar.print.tooltip "In sự kiện hoặc nhiệm vụ">
+
+<!-- Mode Toolbar -->
+<!ENTITY lightning.toolbar.calendar.label "Lịch">
+<!ENTITY lightning.toolbar.calendar.tooltip "Chuyển sang thẻ lịch">
+<!ENTITY lightning.toolbar.calendar.accesskey "C">
+<!ENTITY lightning.toolbar.task.label "Nhiệm vụ">
+<!ENTITY lightning.toolbar.task.tooltip "Chuyển sang thẻ nhiệm vụ">
+<!ENTITY lightning.toolbar.task.accesskey "T">
+
+<!-- Toolbar write button -->
+<!ENTITY lightning.toolbar.newevent.label "Sự kiện">
+<!ENTITY lightning.toolbar.newevent.tooltip "Tạo một sự kiện mới">
+<!ENTITY lightning.toolbar.newtask.label "Nhiệm vụ">
+<!ENTITY lightning.toolbar.newtask.tooltip "Tạo một nhiệm vụ mới">
+
+<!-- Calendar and Task Mode Toolbar -->
+<!ENTITY lightning.toolbar.day.label "Ngày">
+<!ENTITY lightning.toolbar.day.accesskey "D">
+<!ENTITY lightning.toolbar.week.label "Tuần">
+<!ENTITY lightning.toolbar.week.accesskey "W">
+<!ENTITY lightning.toolbar.multiweek.label "Nhiều tuần">
+<!ENTITY lightning.toolbar.multiweek.accesskey "u">
+<!ENTITY lightning.toolbar.month.label "Tháng">
+<!ENTITY lightning.toolbar.month.accesskey "M">
+<!-- LOCALIZATION NOTE: the same as appmenuButton.label and appmenuButton1.tooltip
+ from messenger.dtd -->
+<!ENTITY lightning.toolbar.appmenuButton.label "Trình đơn ứng dụng">
+<!ENTITY lightning.toolbar.appmenuButton1.tooltip "Hiển thị menu &brandShortName;">
+<!ENTITY lightning.toolbar.calendarmenu.label "Ngăn lịch">
+<!ENTITY lightning.toolbar.calendarmenu.accesskey "P">
+<!ENTITY lightning.toolbar.calendarpane.label "Hiển thị ngăn lịch">
+<!ENTITY lightning.toolbar.calendarpane.accesskey "P">
diff --git a/l10n-vi/calendar/chrome/lightning/lightning.dtd b/l10n-vi/calendar/chrome/lightning/lightning.dtd
new file mode 100644
index 0000000000..c87a6eccc7
--- /dev/null
+++ b/l10n-vi/calendar/chrome/lightning/lightning.dtd
@@ -0,0 +1,116 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- WARNING! This file contains UTF-8 encoded characters!
+ - If this ==> … <== doesn't look like an ellipsis (three dots in a row),
+ - your editor isn't using UTF-8 encoding and may munge up the document!
+ -->
+
+<!-- Tools menu -->
+<!ENTITY lightning.preferencesLabel "Lịch">
+
+<!-- New menu popup in File menu -->
+<!ENTITY lightning.menupopup.new.event.label "Sự kiện…">
+<!ENTITY lightning.menupopup.new.event.accesskey "E">
+<!ENTITY lightning.menupopup.new.task.label "Nhiệm vụ…">
+<!ENTITY lightning.menupopup.new.task.accesskey "T">
+<!ENTITY lightning.menupopup.new.calendar.label "Lịch…">
+<!ENTITY lightning.menupopup.new.calendar.accesskey "n">
+
+<!-- Open menu popup in File menu -->
+<!ENTITY lightning.menupopup.open.label "Mở">
+<!ENTITY lightning.menupopup.open.accesskey "O">
+<!ENTITY lightning.menupopup.open.message.label "Thư đã lưu…">
+<!ENTITY lightning.menupopup.open.message.accesskey "M">
+
+<!-- Open menu popup in File menu -->
+<!ENTITY lightning.menupopup.open.calendar.label "Tập tin lịch…">
+<!ENTITY lightning.menupopup.open.calendar.accesskey "C">
+
+<!-- View Menu -->
+<!ENTITY lightning.menu.view.calendar.label "Lịch">
+<!ENTITY lightning.menu.view.calendar.accesskey "n">
+<!ENTITY lightning.menu.view.tasks.label "Nhiệm vụ">
+<!ENTITY lightning.menu.view.tasks.accesskey "k">
+
+<!-- Events and Tasks menu -->
+<!ENTITY lightning.menu.eventtask.label "Sự kiện và nhiệm vụ">
+<!ENTITY lightning.menu.eventtask.accesskey "n">
+
+<!-- properties dialog, calendar creation wizard -->
+<!-- LOCALIZATON NOTE(lightning.calendarproperties.email.label,
+ lightning.calendarproperties.forceEmailScheduling.label)
+ These strings are used in the calendar wizard and the calendar properties dialog, but are only
+ displayed when setting/using a caldav calendar -->
+<!ENTITY lightning.calendarproperties.email.label "Email:">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.label "Ưu tiên lập lịch email phía khách hàng">
+<!-- LOCALIZATON NOTE(lightning.calendarproperties.forceEmailScheduling.tooltiptext1,
+ lightning.calendarproperties.forceEmailScheduling.tooltiptext2)
+ - tooltiptext1 is used in the calendar wizard when setting a new caldav calendar
+ - tooltiptext2 is used in the calendar properties dialog for caldav calendars -->
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.tooltiptext1 "Hiện tại, bạn chỉ có thể kích hoạt tính năng này sau khi thiết lập lịch này trong hộp thoại thuộc tính của nó nếu máy chủ lịch đảm nhiệm việc lên lịch.">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.tooltiptext2 "Tùy chọn này chỉ khả dụng nếu máy chủ lịch xử lý lập lịch. Kích hoạt sẽ cho phép quay trở lại lịch trình dựa trên email tiêu chuẩn thay vì để nó đến máy chủ.">
+
+<!-- iMIP Bar (meeting support) -->
+<!ENTITY lightning.imipbar.btnAccept.label "Chấp nhận">
+<!ENTITY lightning.imipbar.btnAccept2.tooltiptext "Chấp nhận lời mời sự kiện">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences.label "Chấp nhận tất cả">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences2.tooltiptext "Chấp nhận lời mời sự kiện cho tất cả các lần xuất hiện của sự kiện">
+<!ENTITY lightning.imipbar.btnAdd.label "Thêm">
+<!ENTITY lightning.imipbar.btnAdd.tooltiptext "Thêm sự kiện vào lịch">
+<!ENTITY lightning.imipbar.btnDecline.label "Từ chối">
+<!ENTITY lightning.imipbar.btnDecline2.tooltiptext "Từ chối lời mời sự kiện">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences.label "Từ chối tất cả">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences2.tooltiptext "Từ chối lời mời sự kiện cho tất cả các lần xuất hiện của sự kiện">
+<!ENTITY lightning.imipbar.btnDeclineCounter.label "Từ chối">
+<!ENTITY lightning.imipbar.btnDeclineCounter.tooltiptext "Từ chối đề xuất phản biện">
+<!ENTITY lightning.imipbar.btnDelete.label "Xóa">
+<!ENTITY lightning.imipbar.btnDelete.tooltiptext "Xóa khỏi lịch">
+<!ENTITY lightning.imipbar.btnDetails.label "Chi tiết…">
+<!ENTITY lightning.imipbar.btnDetails.tooltiptext "Hiển thị chi tiết sự kiện">
+<!ENTITY lightning.imipbar.btnDoNotShowImipBar.label "Đừng hỏi lại tôi những thông báo này">
+<!ENTITY lightning.imipbar.btnGoToCalendar.label "Lịch">
+<!ENTITY lightning.imipbar.btnGoToCalendar.tooltiptext "Chuyển đến thẻ lịch">
+<!ENTITY lightning.imipbar.btnMore.label "Thêm">
+<!ENTITY lightning.imipbar.btnMore.tooltiptext "Nhấn vào đây để hiển thị nhiều tùy chọn hơn">
+<!ENTITY lightning.imipbar.btnReconfirm2.label "Xác nhận lại">
+<!ENTITY lightning.imipbar.btnReconfirm.tooltiptext "Gửi xác nhận lại cho người tổ chức">
+<!ENTITY lightning.imipbar.btnReschedule.label "Sắp xếp lại">
+<!ENTITY lightning.imipbar.btnReschedule.tooltiptext "Sắp xếp lại sự kiện">
+<!ENTITY lightning.imipbar.btnSaveCopy.label "Lưu bản sao">
+<!ENTITY lightning.imipbar.btnSaveCopy.tooltiptext "Lưu một bản sao của sự kiện vào lịch độc lập với việc trả lời cho người tổ chức. Danh sách những người tham dự sẽ bị xóa.">
+<!ENTITY lightning.imipbar.btnTentative.label "Dự kiến">
+<!ENTITY lightning.imipbar.btnTentative2.tooltiptext "Dự kiến chấp nhận lời mời sự kiện">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences.label "Dự kiến tất cả">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences2.tooltiptext "Dự kiến chấp nhận lời mời sự kiện cho tất cả các lần xuất hiện của sự kiện">
+<!ENTITY lightning.imipbar.btnUpdate.label "Cập nhật">
+<!ENTITY lightning.imipbar.btnUpdate.tooltiptext "Cập nhật sự kiện trong lịch">
+<!ENTITY lightning.imipbar.description "Thư này chứa lời mời tham dự một sự kiện.">
+
+<!ENTITY lightning.imipbar.btnSend.label "Gửi phản hồi ngay">
+<!ENTITY lightning.imipbar.btnSend.tooltiptext "Gửi phản hồi cho người tổ chức">
+<!ENTITY lightning.imipbar.btnSendSeries.tooltiptext "Gửi phản hồi cho toàn bộ chuỗi sự kiện đến nhà tổ chức">
+<!ENTITY lightning.imipbar.btnDontSend.label "Không gửi phản hồi">
+<!ENTITY lightning.imipbar.btnDontSend.tooltiptext "Thay đổi trạng thái tham gia của bạn mà không gửi phản hồi cho người tổ chức">
+<!ENTITY lightning.imipbar.btnDontSendSeries.tooltiptext "Thay đổi trạng thái tham gia của bạn cho chuỗi mà không gửi phản hồi cho người tổ chức">
+
+<!-- Lightning specific keybindings -->
+<!ENTITY lightning.keys.event.showCalendar.key "C">
+<!ENTITY lightning.keys.event.showTasks.key "D">
+<!ENTITY lightning.keys.event.new "I">
+<!ENTITY lightning.keys.todo.new "D">
+
+<!-- Account Central page -->
+<!ENTITY lightning.acctCentral.newCalendar.label "Tạo một lịch mới">
+
+<!-- today-pane-specific -->
+<!ENTITY todaypane.showMinimonth.label "Hiển thị tháng nhỏ">
+<!ENTITY todaypane.showMinimonth.accesskey "M">
+<!ENTITY todaypane.showMiniday.label "Hiển thị ngày nhỏ">
+<!ENTITY todaypane.showMiniday.accesskey "d">
+<!ENTITY todaypane.showNone.label "Không hiển thị">
+<!ENTITY todaypane.showNone.accesskey "N">
+<!ENTITY todaypane.showTodayPane.label "Hiển thị hôm nay">
+<!ENTITY todaypane.showTodayPane.accesskey "o">
+<!ENTITY todaypane.statusButton.label "Ngày hôm nay">
diff --git a/l10n-vi/calendar/chrome/lightning/lightning.properties b/l10n-vi/calendar/chrome/lightning/lightning.properties
new file mode 100644
index 0000000000..f4819f71db
--- /dev/null
+++ b/l10n-vi/calendar/chrome/lightning/lightning.properties
@@ -0,0 +1,201 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# addon description:
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name=Lightning
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description=Bộ lịch tích hợp cho Thunderbird
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator=Dự án Mozilla Calendar
+
+# Lightning branding
+brandShortName=Lightning
+
+# Task mode title
+taskModeApplicationTitle=Nhiệm vụ
+
+# Tab titles
+tabTitleCalendar=Lịch
+tabTitleTasks=Nhiệm vụ
+
+# Html event display in message
+imipHtml.header=Lời mời sự kiện
+imipHtml.summary=Tiêu đề:
+imipHtml.location=Địa chỉ:
+imipHtml.when=Lúc:
+imipHtml.organizer=Người tổ chức:
+imipHtml.description=Mô tả:
+# LOCALIZATION_NOTE(imipHtml.attachments): This is a label for one or more (additional) links to
+# documents or websites attached to this event.
+imipHtml.attachments=Đính kèm:
+imipHtml.comment=Bình luận:
+imipHtml.attendees=Người tham dự:
+# LOCALIZATION_NOTE(imipHtml.url): This is a label for a reference to an (alternate) online
+# representation of the event (either directly human readable or not).
+imipHtml.url=Liên kết liên quan:
+imipHtml.canceledOccurrences=Sự cố bị hủy:
+imipHtml.modifiedOccurrences=Lần xuất hiện sửa đổi:
+imipHtml.newLocation=Địa chỉ mới: %1$S
+# LOCALIZATION_NOTE(imipHtml.attendeeDelegatedFrom): this is appended behind an attendee name in the
+# email invitation preview - don't add leading/trailing whitespaces here
+# %1$S - a single delegator or a comma separated list of delegators
+imipHtml.attendeeDelegatedFrom=(được ủy quyền từ %1$S)
+# LOCALIZATION_NOTE(imipHtml.attendeeDelegatedTo): this is appended behind an attendee name in the
+# email invitation preview - don't add leading/trailing whitespaces here
+# %1$S - a single delegatee or a comma separated list of delegatees
+imipHtml.attendeeDelegatedTo=(được ủy quyền cho %1$S)
+
+# LOCALIZATION_NOTE(imipHtml.attendee.combined): tooltip for itip icon in email invitation preview.
+# Given an attendee loungeexample.org of type room is a mandatory participant and has accepted the
+# invitation, the tooltip would be:
+# lounge@example.org (room) is a required participant. lounge@example.org has confirmed attendance.
+# %1$S - value of imipHtml.attendeeRole2.*
+# %2$S - value of imipHtml.attendeePartStat2.*
+imipHtml.attendee.combined=%1$S %2$S
+
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.CHAIR): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.CHAIR=%1$S chủ trì sự kiện.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.NON-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.NON-PARTICIPANT=%1$S là người không tham dự.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.OPT-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.OPT-PARTICIPANT=%1$S là người tham dự tùy chọn.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.REQ-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.REQ-PARTICIPANT=%1$S là người tham dự bắt buộc.
+
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.ACCEPTED): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.ACCEPTED=%1$S đã xác nhận tham dự.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.DECLINED): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.DECLINED=%1$S đã từ chối tham dự.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.DELEGATED): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+# %2$S - single delegatee or comma separated list of delegatees
+# delegation is different from invitation forwarding - in case of the former the original attendee
+# is replaced, while on the latter the receiver may take part additionally
+imipHtml.attendeePartStat2.DELEGATED=%1$S đã ủy quyền tham dự cho %2$S.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.NEEDS-ACTION): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.NEEDS-ACTION=%1$S vẫn cần trả lời.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.TENTATIVE): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.TENTATIVE=%1$S đã xác nhận tham dự dự kiến.
+
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.INDIVIDUAL): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing an individual attendee
+imipHtml.attendeeUserType2.INDIVIDUAL=%1$S
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.GROUP): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a group (e.g. a distribution list)
+imipHtml.attendeeUserType2.GROUP=%1$S (nhóm)
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.RESOURCE): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a resource (e.g. projector)
+imipHtml.attendeeUserType2.RESOURCE=%1$S (tài nguyên)
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.ROOM): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a room
+imipHtml.attendeeUserType2.ROOM=%1$S (phòng)
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.UNKNOWN): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing an attendee of unknown type
+imipHtml.attendeeUserType2.UNKNOWN=%1$S
+
+imipAddedItemToCal2=Sự kiện này đã được thêm vào lịch của bạn.
+imipCanceledItem2=Sự kiện này đã bị xóa khỏi lịch của bạn.
+imipUpdatedItem2=Sự kiện này đã được cập nhật.
+imipBarCancelText=Thư này có chứa sự kiện hủy bỏ.
+imipBarCounterErrorText=Thư này có chứa phản hồi lời mời không thể xử lý.
+imipBarCounterPreviousVersionText=Thư này có chứa phản hồi cho phiên bản trước của lời mời.
+imipBarCounterText=Thư này có chứa phản hồi cho một lời mời.
+imipBarDisallowedCounterText=Thông báo này có chứa phản hồi mặc dù bạn không cho phép phản đối sự kiện này.
+imipBarDeclineCounterText=Thông báo này có chứa một phản hồi cho phản hồi của bạn.
+imipBarRefreshText=Thư này yêu cầu cập nhật sự kiện.
+imipBarPublishText=Thư này chứa một sự kiện.
+imipBarRequestText=Thư này chứa lời mời tham dự một sự kiện.
+imipBarSentText=Thư này chứa một sự kiện gửi.
+imipBarSentButRemovedText=Thư này chứa một sự kiện được gửi đi không có trong lịch của bạn nữa.
+imipBarUpdateText=Thư này chứa bản cập nhật cho một sự kiện hiện có.
+imipBarUpdateMultipleText=Thư này chứa các bản cập nhật cho nhiều sự kiện hiện có.
+imipBarUpdateSeriesText=Thư này chứa một bản cập nhật cho một chuỗi các sự kiện hiện có.
+imipBarAlreadyProcessedText=Thư này chứa một sự kiện đã được xử lí.
+imipBarProcessedNeedsAction=Thư này chứa một sự kiện mà bạn chưa phản hồi.
+imipBarProcessedMultipleNeedsAction=Thư này chứa nhiều sự kiện mà bạn chưa phản hồi.
+imipBarProcessedSeriesNeedsAction=Thư này chứa một chuỗi sự kiện mà bạn chưa phản hồi.
+imipBarReplyText=Thư này chứa trả lời cho một lời mời.
+imipBarReplyToNotExistingItem=Thư này chứa một câu trả lời đề cập đến một sự kiện không có trong lịch của bạn.
+# LOCALIZATION_NOTE(imipBarReplyToRecentlyRemovedItem):
+# %1$S - datetime of deletion
+imipBarReplyToRecentlyRemovedItem=Thư này chứa một câu trả lời đề cập đến một sự kiện đã bị xóa khỏi lịch của bạn ở %1$S.
+imipBarUnsupportedText=Thư này chứa một sự kiện mà phiên bản Lightning này không thể xử lí.
+imipBarUnsupportedText2=Thư này chứa một sự kiện mà phiên bản %1$S này không thể xử lí.
+imipBarProcessingFailed=Thất bại khi xử lí thư. Trạng thái: %1$S.
+imipBarCalendarDeactivated=Thông báo này chứa thông tin sự kiện. Cho phép một lịch để xử lý nó.
+imipBarNotWritable=Không có lịch nago có thể ghi được cấu hình cho lời mời, vui lòng kiểm tra các thuộc tính lịch.
+imipSendMail.title=Thông báo Email
+imipSendMail.text=Bạn có muốn gửi thông báo Email ngay bây giờ không?
+imipNoIdentity=Không có
+imipNoCalendarAvailable=Không có trang lịch nào có thể ghi được.
+
+itipReplySubject2=Trả lời lời mời: %1$S
+itipReplyBodyAccept=%1$S đã chấp nhận thư mời tham dự sự kiện của bạn.
+itipReplyBodyDecline=%1$S đã từ chối thư mời tham dự sự kiện của bạn.
+itipReplySubjectAccept2=Đã chấp nhận: %1$S
+itipReplySubjectDecline2=Lời mời bị từ chối: %1$S
+itipReplySubjectTentative2=Dự kiến: %1$S
+itipRequestSubject2=Lời mời: %1$S
+itipRequestUpdatedSubject2=Đã cập nhật: %1$S
+itipRequestBody=%1$S mời bạn tham dự %2$S
+itipCancelSubject2=Đã hủy bỏ: %1$S
+itipCancelBody=%1$S đã hủy bỏ sự kiện này: %2$S
+itipCounterBody=%1$S đã đưa ra phản hồi cho "%2$S":
+itipDeclineCounterBody=%1$S đã từ chối phản hồi của bạn cho "%2$S".
+itipDeclineCounterSubject=Từ chối phản hồi: %1$S
+
+confirmProcessInvitation=Gần đây bạn đã xóa mục này, bạn có chắc chắn muốn xử lý lời mời này?
+confirmProcessInvitationTitle=Bạn có muốn tiếp tục mời?
+
+invitationsLink.label=Lời mời: %1$S
+
+# LOCALIZATION_NOTE(binaryComponentKnown): This is shown when Lightning is
+# missing the binary component and knows how to calculate the expected version
+# number. To test, remove the binary component from the components/
+# subdirectory and start Lightning, or force install into a different
+# Thunderbird version. In the last part of the sentence it should be made clear
+# that the user can install e.g. 3.7, 3.7.1 or anything other 3.7.x version
+# %1$S - The Lightning brand name, from the brandShortName string above.
+# %2$S - The current Lightning version
+# %3$S - The expected Lightning version
+binaryComponentKnown=Không thể tải được thành phần nhị phân cần thiết cho %1$S, có thể do kết hợp phiên bản sai đang được sử dụng. Hiện tại bạn đã cài đặt %1$S %2$S, nhưng nên sử dụng phiên bản %3$S.
+
+# LOCALIZATION_NOTE(binaryComponentUnknown): This is shown when Lightning is
+# missing the binary component but can't calculate the expected version. This
+# happens in the rare case that Lightning is installed into something other
+# than Thunderbird or Seamonkey. You may link to a different page if you can
+# commit to keeping it up to date, I'd recommend staying with the English page.
+# %1$S - The Lightning brand name, from the brandShortName string above.
+# %2$S - The application brand name, e.g. Postbox
+# %3$S - The application version
+# %3$S - The current Lightning version
+binaryComponentUnknown=Không thể tải được thành phần nhị phân cần thiết cho %1$S, có thể do kết hợp phiên bản sai đang được sử dụng. Bạn đang sử dụng %2$S %3$S cùng với %1$S %4$S. Vui lòng kiểm tra tại https://developer.mozilla.org/en/Calendar/Calendar_Versions để biết thêm chi tiết.
+
+# LOCALIZATION_NOTE(binaryComponentTitle): The title for the dialog that
+# notifies about a version mismatch.
+# %1$S - The Lightning brand name, from the brandShortName string above.
+binaryComponentTitle=Phiên bản %1$S không khớp
+
+# LOCALIZATION NOTE(noIdentitySelectedNotification):
+noIdentitySelectedNotification=Nếu bạn muốn sử dụng lịch này để lưu trữ lời mời đến hoặc từ những người khác, bạn nên chỉ định một danh tính email bên dưới.
diff --git a/l10n-vi/calendar/extra-jar.mn b/l10n-vi/calendar/extra-jar.mn
new file mode 100644
index 0000000000..591237101e
--- /dev/null
+++ b/l10n-vi/calendar/extra-jar.mn
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# this is an empty file
+# locales can ship "extra" files from here, to ship a custom set
+# of files for the help system
+# do not put any blank lines in this file
diff --git a/l10n-vi/calendar/lightning-l10n.js b/l10n-vi/calendar/lightning-l10n.js
new file mode 100644
index 0000000000..e91920b0bb
--- /dev/null
+++ b/l10n-vi/calendar/lightning-l10n.js
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#filter substitution
+
+# the default day to start the week on
+#0=Sunday 1=Monday 2=Tuesday 3=Wednesday 4=Thursday 5=Friday 6=Saturday
+pref("calendar.week.start", 0);
+
+# default days off (not in work week)
+pref("calendar.week.d0sundaysoff", true);
+pref("calendar.week.d1mondaysoff", false);
+pref("calendar.week.d2tuesdaysoff", false);
+pref("calendar.week.d3wednesdaysoff", false);
+pref("calendar.week.d4thursdaysoff", false);
+pref("calendar.week.d5fridaysoff", false);
+pref("calendar.week.d6saturdaysoff", true);
+
+pref("general.useragent.locale", "@AB_CD@");
+
+# categories
+pref("calendar.categories.names", "Lễ kỉ niệm,Sinh nhật,Kinh doanh,Cuộc gọi,Khách hàng,Thi thố,Ưa thích,Theo dõi,Quà tặng,Ngày lễ,Ý kiến,Vấn đề,Họp mặt,Linh tinh,Cá nhân,Dự án,Ngày lễ Công cộng,Trạng thái,Nhà cung cấp,Du lịch,Tham quan");
diff --git a/l10n-vi/calendar/sunbird-l10n.js b/l10n-vi/calendar/sunbird-l10n.js
new file mode 100644
index 0000000000..e91920b0bb
--- /dev/null
+++ b/l10n-vi/calendar/sunbird-l10n.js
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#filter substitution
+
+# the default day to start the week on
+#0=Sunday 1=Monday 2=Tuesday 3=Wednesday 4=Thursday 5=Friday 6=Saturday
+pref("calendar.week.start", 0);
+
+# default days off (not in work week)
+pref("calendar.week.d0sundaysoff", true);
+pref("calendar.week.d1mondaysoff", false);
+pref("calendar.week.d2tuesdaysoff", false);
+pref("calendar.week.d3wednesdaysoff", false);
+pref("calendar.week.d4thursdaysoff", false);
+pref("calendar.week.d5fridaysoff", false);
+pref("calendar.week.d6saturdaysoff", true);
+
+pref("general.useragent.locale", "@AB_CD@");
+
+# categories
+pref("calendar.categories.names", "Lễ kỉ niệm,Sinh nhật,Kinh doanh,Cuộc gọi,Khách hàng,Thi thố,Ưa thích,Theo dõi,Quà tặng,Ngày lễ,Ý kiến,Vấn đề,Họp mặt,Linh tinh,Cá nhân,Dự án,Ngày lễ Công cộng,Trạng thái,Nhà cung cấp,Du lịch,Tham quan");