summaryrefslogtreecommitdiffstats
path: root/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar
diff options
context:
space:
mode:
Diffstat (limited to 'thunderbird-l10n/ms/chrome/ms/locale/ms/calendar')
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-alarms.properties39
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog-attendees.properties15
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog.dtd433
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog.properties541
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-extract.properties294
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-invitations-dialog.dtd19
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-invitations-dialog.properties10
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-occurrence-prompt.dtd7
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-occurrence-prompt.properties63
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.dtd413
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.properties826
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendarCreation.dtd51
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendarCreation.properties6
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/categories.properties7
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/dateFormat.properties146
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/dialogs/calendar-event-dialog-reminder.dtd19
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/global.dtd52
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/menuOverlay.dtd50
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/migration.dtd9
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/migration.properties13
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/provider-uninstall.dtd12
-rw-r--r--thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/timezones.properties482
22 files changed, 3507 insertions, 0 deletions
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-alarms.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-alarms.properties
new file mode 100644
index 0000000000..b2d3fed1b3
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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=Masa acara bermula
+reminderTitleAtStartTask=Masa tugasan bermula
+reminderTitleAtEndEvent=Masa acara berakhir
+reminderTitleAtEndTask=Masa tugasan berakhir
+
+# 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=Lena peringatan sehingga %1$S
+
+reminderCustomOriginBeginBeforeEvent=sebelum acara bermula
+reminderCustomOriginBeginAfterEvent=selepas acara bermula
+reminderCustomOriginEndBeforeEvent=sebelum acara berakhir
+reminderCustomOriginEndAfterEvent=selepas acara berakhir
+reminderCustomOriginBeginBeforeTask=sebelum tugasan bermula
+reminderCustomOriginBeginAfterTask=selepas tugasan bermula
+reminderCustomOriginEndBeforeTask=sebelum tugasan berakhir
+reminderCustomOriginEndAfterTask=selepas tugasan berakhir
+
+reminderErrorMaxCountReachedEvent=Kalendar yang dipilih ada had #1 peringatan bagi setiap acara.;Kalendar yang dipilih ada had #1 peringatan bagi setiap acara.
+reminderErrorMaxCountReachedTask=Kalendar yang dipilih ada had #1 peringatan bagi setiap tugasan.;Kalendar yang dipilih ada had #1 peringatan bagi setiap tugasan.
+
+# LOCALIZATION NOTE (reminderReadonlyNotification)
+# This notification will be presented in the alarm dialog if reminders for not
+# writable items/calenddars are displayed.
+# %1$S - localized value of calendar.alarm.snoozeallfor.label (defined in calendar.dtd)
+reminderReadonlyNotification=Peringatan untuk kalendar baca-sahaja buat masa ini tidak boleh dilenakan tetapi hanya diabaikan - butang '%1$S' hanya akan melenakan peringatan untuk kalendar boleh ditulis.
+# LOCALIZATION NOTE (reminderDisabledSnoozeButtonTooltip)
+# This tooltip is only displayed, if the button is disabled
+reminderDisabledSnoozeButtonTooltip=Melenakan peringatan tidak disokong oleh kalendar baca-sahaja
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog-attendees.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog-attendees.properties
new file mode 100644
index 0000000000..7be740b85c
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 = Peserta yang Diperlukan
+event.attendee.role.optional = Peserta Tambahan
+event.attendee.role.nonparticipant = Bukan Peserta
+event.attendee.role.chair = Pengerusi
+event.attendee.role.unknown = Peserta Tidak Diketahui (%1$S)
+
+event.attendee.usertype.individual = Individu
+event.attendee.usertype.group = Kumpulan
+event.attendee.usertype.resource = Sumber
+event.attendee.usertype.room = Bilik
+event.attendee.usertype.unknown = Jenis Tidak Diketahui (%1$S)
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog.dtd
new file mode 100644
index 0000000000..0980c484d6
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog.dtd
@@ -0,0 +1,433 @@
+<!-- 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 "Edit Item" >
+
+<!ENTITY event.dialog.keepDurationButton.tooltip "Kekalkan tempoh apabila menukar tarikh akhir">
+<!ENTITY event.dialog.keepDurationButton.accesskey "K">
+
+<!ENTITY newevent.from.label "Daripada" >
+<!ENTITY newevent.to.label "Hingga" >
+
+<!ENTITY newevent.status.label "Status" >
+<!ENTITY newevent.status.accesskey "S" >
+<!ENTITY newevent.eventStatus.none.label "Tidak dinyatakan" >
+<!ENTITY newevent.eventStatus.none.accesskey "i" >
+<!ENTITY newevent.todoStatus.none.label "Tidak dinyatakan" >
+<!ENTITY newevent.eventStatus.cancelled.label "Dibatalkan" >
+<!ENTITY newevent.eventStatus.cancelled.accesskey "t" >
+<!ENTITY newevent.todoStatus.cancelled.label "Dibatalkan" >
+<!ENTITY newevent.status.tentative.label "Tentatif" >
+<!ENTITY newevent.status.tentative.accesskey "T" >
+<!ENTITY newevent.status.confirmed.label "Disahkan" >
+<!ENTITY newevent.status.confirmed.accesskey "D" >
+<!ENTITY newevent.status.needsaction.label "Perlu Tindakan" >
+<!ENTITY newevent.status.inprogress.label "Dalam Proses" >
+<!ENTITY newevent.status.completed.label "Selesai pada" >
+
+<!-- The following entity is for New Task dialog only -->
+<!ENTITY newtodo.percentcomplete.label "&#37; selesai">
+
+<!-- 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 "Maklumkan peserta">
+<!ENTITY event.attendees.notify.accesskey "k">
+<!ENTITY event.attendees.notifyundisclosed.label "Asingkan jemputan bagi setiap peserta">
+<!ENTITY event.attendees.notifyundisclosed.accesskey "s">
+<!ENTITY event.attendees.notifyundisclosed.tooltip "Pilihan ini menghantar satu e-mel jemputan kepada setiap peserta. Setiap jemputan hanya mengandungi nama peserta ini supaya identiti peserta lain tidak didedahkan.">
+<!ENTITY event.attendees.disallowcounter.label "Jangan izinkan pengira">
+<!ENTITY event.attendees.disallowcounter.accesskey "i">
+<!ENTITY event.attendees.disallowcounter.tooltip "Tunjukkan bahawa anda tidak akan menerima cadangan balas">
+
+<!-- Keyboard Shortcuts -->
+<!ENTITY event.dialog.new.event.key2 "T">
+<!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 "Baru">
+<!ENTITY event.menu.item.new.accesskey "B">
+<!ENTITY event.menu.item.new.event.label "Acara">
+<!ENTITY event.menu.item.new.event.accesskey "A">
+<!ENTITY event.menu.item.new.task.label "Tugasan">
+<!ENTITY event.menu.item.new.task.accesskey "T">
+<!ENTITY event.menu.item.new.message.label "Mesej">
+<!ENTITY event.menu.item.new.message.accesskey "M">
+<!ENTITY event.menu.item.new.contact.label "Buku Alamat Kenalan">
+<!ENTITY event.menu.item.new.contact.accesskey "K">
+<!ENTITY event.menu.item.close.label "Tutup">
+<!ENTITY event.menu.item.close.accesskey "T">
+
+<!-- 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 "Simpan">
+<!ENTITY event.menu.item.save.accesskey "S">
+<!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 "Simpan dan Tutup">
+<!ENTITY event.menu.item.saveandclose.accesskey "t">
+<!ENTITY event.menu.item.saveandclose.tab.accesskey "z">
+
+<!ENTITY event.menu.item.delete.label "Buang…">
+<!ENTITY event.menu.item.delete.accesskey "B">
+<!ENTITY event.menu.item.page.setup.label "Tatacara Halaman">
+<!ENTITY event.menu.item.page.setup.accesskey "c">
+<!ENTITY event.menu.item.print.label "Cetak">
+<!ENTITY event.menu.item.print.accesskey "C">
+
+<!ENTITY event.menu.edit.label "Edit">
+<!ENTITY event.menu.edit.accesskey "E">
+<!ENTITY event.menu.edit.undo.label "Batal">
+<!ENTITY event.menu.edit.undo.accesskey "B">
+<!ENTITY event.menu.edit.redo.label "Ulang">
+<!ENTITY event.menu.edit.redo.accesskey "U">
+<!ENTITY event.menu.edit.cut.label "Potong">
+<!ENTITY event.menu.edit.cut.accesskey "t">
+<!ENTITY event.menu.edit.copy.label "Salin">
+<!ENTITY event.menu.edit.copy.accesskey "S">
+<!ENTITY event.menu.edit.paste.label "Tampal">
+<!ENTITY event.menu.edit.paste.accesskey "T">
+<!ENTITY event.menu.edit.select.all.label "Pilih Semua">
+<!ENTITY event.menu.edit.select.all.accesskey "S">
+
+<!ENTITY event.menu.view.label "Papar">
+<!ENTITY event.menu.view.accesskey "P">
+<!ENTITY event.menu.view.toolbars.label "Bar alatan">
+<!ENTITY event.menu.view.toolbars.accesskey "B">
+<!ENTITY event.menu.view.toolbars.event.label "Bar alatan Acara">
+<!ENTITY event.menu.view.toolbars.event.accesskey "A">
+<!ENTITY event.menu.view.toolbars.customize.label "Penyesuaian…">
+<!ENTITY event.menu.view.toolbars.customize.accesskey "P">
+<!ENTITY event.menu.view.showlink.label "Papar Pautan Berkaitan">
+<!ENTITY event.menu.view.showlink.accesskey "B">
+
+<!ENTITY event.menu.options.label "Pilihan">
+<!ENTITY event.menu.options.accesskey "P">
+<!ENTITY event.menu.options.attendees.label "Jemput Peserta…">
+<!ENTITY event.menu.options.attendees.accesskey "J">
+<!ENTITY event.menu.options.timezone2.label "Papar Zon masa">
+<!ENTITY event.menu.options.timezone2.accesskey "Z">
+<!ENTITY event.menu.options.priority2.label "Prioriti">
+<!ENTITY event.menu.options.priority2.accesskey "o">
+<!ENTITY event.menu.options.priority.notspecified.label "Tidak dinyatakan">
+<!ENTITY event.menu.options.priority.notspecified.accesskey "d">
+<!ENTITY event.menu.options.priority.low.label "Rendah">
+<!ENTITY event.menu.options.priority.low.accesskey "R">
+<!ENTITY event.menu.options.priority.normal.label "Normal">
+<!ENTITY event.menu.options.priority.normal.accesskey "N">
+<!ENTITY event.menu.options.priority.high.label "Tinggi">
+<!ENTITY event.menu.options.priority.high.accesskey "T">
+<!ENTITY event.menu.options.privacy.label "Privasi">
+<!ENTITY event.menu.options.privacy.accesskey "P">
+<!ENTITY event.menu.options.privacy.public.label "Acara Umum">
+<!ENTITY event.menu.options.privacy.public.accesskey "u">
+<!ENTITY event.menu.options.privacy.confidential.label "Papar Masa dan Tarikh Sahaja">
+<!ENTITY event.menu.options.privacy.confidential.accesskey "P">
+<!ENTITY event.menu.options.privacy.private.label "Acara Peribadi">
+<!ENTITY event.menu.options.privacy.private.accesskey "r">
+<!ENTITY event.menu.options.show.time.label "Papar Masa sebagai">
+<!ENTITY event.menu.options.show.time.accesskey "M">
+<!ENTITY event.menu.options.show.time.busy.label "Sibuk">
+<!ENTITY event.menu.options.show.time.busy.accesskey "S">
+<!ENTITY event.menu.options.show.time.free.label "Lapang">
+<!ENTITY event.menu.options.show.time.free.accesskey "L">
+
+<!ENTITY event.invite.attendees.label "Jemput Peserta…">
+<!ENTITY event.invite.attendees.accesskey "J">
+<!ENTITY event.email.attendees.label "Karang E-Mel kepada Semua Peserta…">
+<!ENTITY event.email.attendees.accesskey "S">
+<!ENTITY event.email.tentative.attendees.label "Karang E-Mel kepada Peserta tanpa Keputusan…">
+<!ENTITY event.email.tentative.attendees.accesskey "K">
+<!ENTITY event.remove.attendees.label2 "Buang semua peserta">
+<!ENTITY event.remove.attendees.accesskey "r">
+<!ENTITY event.remove.attendee.label "Buang peserta">
+<!ENTITY event.remove.attendee.accesskey "u">
+
+<!-- Toolbar -->
+<!ENTITY event.toolbar.save.label2 "Simpan">
+<!ENTITY event.toolbar.saveandclose.label "Simpan dan Tutup">
+<!ENTITY event.toolbar.delete.label "Buang">
+<!ENTITY event.toolbar.attendees.label "Jemput Peserta">
+<!ENTITY event.toolbar.privacy.label "Privasi">
+
+<!ENTITY event.toolbar.save.tooltip2 "Simpan">
+<!ENTITY event.toolbar.saveandclose.tooltip "Simpan dan Tutup">
+<!ENTITY event.toolbar.delete.tooltip "Buang">
+<!ENTITY event.toolbar.attendees.tooltip "Jemput Peserta">
+<!ENTITY event.toolbar.attachments.tooltip "Tambah Lampiran">
+<!ENTITY event.toolbar.privacy.tooltip "Tukar Privasi">
+<!ENTITY event.toolbar.priority.tooltip "Tukar Prioriti">
+<!ENTITY event.toolbar.status.tooltip "Tukar Status">
+<!ENTITY event.toolbar.freebusy.tooltip "Tukar masa Lapang/Busy">
+
+<!-- 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 "Mohon cadangan">
+<!ENTITY counter.button.proposal.accesskey "d">
+<!ENTITY counter.button.proposal.tooltip2 "Medan acara akan diisi menggunakan nilai daripada balasan cadangan kepada semua peserta samada dengan atau tanpa perubahan tambahan yang disimpan">
+<!ENTITY counter.button.original.label "Mohon data asal">
+<!ENTITY counter.button.original.accesskey "s">
+<!ENTITY counter.button.original.tooltip2 "Medan ini akan ditetapkan dengan nilai daripada acara asal, sebelum cadangan balasan dibuat">
+
+<!-- Main page -->
+<!ENTITY event.title.textbox.label "Tajuk:" >
+<!ENTITY event.title.textbox.accesskey "T">
+<!ENTITY event.location.label "Lokasi:" >
+<!ENTITY event.location.accesskey "L">
+<!ENTITY event.categories.label "Kategori:">
+<!ENTITY event.categories.accesskey "g">
+<!ENTITY event.categories.textbox.label "Tambah kategori baru" >
+<!ENTITY event.calendar.label "Kalendar:" >
+<!ENTITY event.calendar.accesskey "K">
+<!ENTITY event.attendees.label "Peserta:" >
+<!ENTITY event.attendees.accesskey "t">
+<!ENTITY event.alldayevent.label "Acara Sepanjang hari" >
+<!ENTITY event.alldayevent.accesskey "h">
+<!ENTITY event.from.label "Mula:" >
+<!ENTITY event.from.accesskey "M">
+<!ENTITY task.from.label "Mula:" >
+<!ENTITY task.from.accesskey "M">
+<!ENTITY event.to.label "Tamat:" >
+<!ENTITY event.to.accesskey "m">
+<!ENTITY task.to.label "Tarikh Tamat tempoh:" >
+<!ENTITY task.to.accesskey "e">
+<!ENTITY task.status.label "Status:" >
+<!ENTITY task.status.accesskey "a">
+<!ENTITY event.repeat.label "Ulang:" >
+<!ENTITY event.repeat.accesskey "U">
+<!ENTITY event.until.label "Hingga:">
+<!ENTITY event.until.accesskey "H">
+<!ENTITY event.reminder.label "Peringatan:" >
+<!ENTITY event.reminder.accesskey "t">
+<!ENTITY event.description.label "Keterangan:" >
+<!ENTITY event.description.accesskey "g">
+<!ENTITY event.attachments.label "Lampiran:" >
+<!ENTITY event.attachments.accesskey "p" >
+<!ENTITY event.attachments.menubutton.label "Lampir">
+<!ENTITY event.attachments.menubutton.accesskey "L">
+<!ENTITY event.attachments.url.label "Laman web…">
+<!ENTITY event.attachments.url.accesskey "L">
+<!ENTITY event.attachments.popup.remove.label "Buang" >
+<!ENTITY event.attachments.popup.remove.accesskey "B" >
+<!ENTITY event.attachments.popup.open.label "Buka" >
+<!ENTITY event.attachments.popup.open.accesskey "B" >
+<!ENTITY event.attachments.popup.removeAll.label "Buang Semua" >
+<!ENTITY event.attachments.popup.removeAll.accesskey "S" >
+<!ENTITY event.attachments.popup.attachPage.label "Lampir Halaman web…" >
+<!ENTITY event.attachments.popup.attachPage.accesskey "m" >
+<!ENTITY event.url.label "Pautan Berkaitan:" >
+<!ENTITY event.priority2.label "Prioriti:">
+
+<!ENTITY event.reminder.none.label "Tiada peringatan " >
+<!ENTITY event.reminder.0minutes.before.label "0 minit sebelum" >
+<!ENTITY event.reminder.5minutes.before.label "5 minit sebelum" >
+<!ENTITY event.reminder.15minutes.before.label "15 minit sebelum" >
+<!ENTITY event.reminder.30minutes.before.label "30 minit sebelum" >
+<!ENTITY event.reminder.1hour.before.label "1 jam sebelum" >
+<!ENTITY event.reminder.2hours.before.label "2 jam sebelum" >
+<!ENTITY event.reminder.12hours.before.label "12 jam sebelum" >
+<!ENTITY event.reminder.1day.before.label "1 hari sebelum" >
+<!ENTITY event.reminder.2days.before.label "2 hari sebelum" >
+<!ENTITY event.reminder.1week.before.label "1 minggu sebelum" >
+<!ENTITY event.reminder.custom.label "Penyesuaian…" >
+
+<!ENTITY event.reminder.multiple.label "Berbilang Peringatan…" >
+
+<!ENTITY event.statusbarpanel.freebusy.label "Masa sebagai:">
+<!ENTITY event.statusbarpanel.privacy.label "Privasi:">
+
+<!-- Recurrence dialog -->
+<!ENTITY recurrence.title.label "Edit Perulangan">
+
+<!ENTITY event.repeat.does.not.repeat.label "Jangan ulang">
+<!ENTITY event.repeat.daily.label "Harian">
+<!ENTITY event.repeat.weekly.label "Mingguan">
+<!ENTITY event.repeat.every.weekday.label "Setiap Hari Kerja">
+<!ENTITY event.repeat.bi.weekly.label "Selang seminggu">
+<!ENTITY event.repeat.monthly.label "Bulanan">
+<!ENTITY event.repeat.yearly.label "Tahunan">
+<!ENTITY event.repeat.custom.label "Penyesuaian…">
+
+<!ENTITY event.recurrence.pattern.label "Corak perulangan">
+<!ENTITY event.recurrence.occurs.label "Ulang" >
+<!ENTITY event.recurrence.day.label "harian" >
+<!ENTITY event.recurrence.week.label "mingguan" >
+<!ENTITY event.recurrence.month.label "bulanan" >
+<!ENTITY event.recurrence.year.label "tahunan" >
+
+<!ENTITY event.recurrence.pattern.every.label "Setiap" >
+<!ENTITY repeat.units.days.both "Hari" >
+<!ENTITY event.recurrence.pattern.every.weekday.label "Setiap hari kerja" >
+
+<!ENTITY event.recurrence.pattern.weekly.every.label "Setiap" >
+<!ENTITY repeat.units.weeks.both "Minggu" >
+<!ENTITY event.recurrence.on.label "Pada:" >
+
+<!ENTITY event.recurrence.pattern.monthly.every.label "Setiap" >
+<!ENTITY repeat.units.months.both "Bulan" >
+<!ENTITY event.recurrence.monthly.every.label "Setiap" >
+<!ENTITY event.recurrence.monthly.first.label "Yang Pertama">
+<!ENTITY event.recurrence.monthly.second.label "Yang Kedua">
+<!ENTITY event.recurrence.monthly.third.label "Yang Ketiga">
+<!ENTITY event.recurrence.monthly.fourth.label "Yang Keempat">
+<!ENTITY event.recurrence.monthly.fifth.label "Yang Kelima">
+<!ENTITY event.recurrence.monthly.last.label "Yang Terakhir">
+<!ENTITY event.recurrence.pattern.monthly.week.1.label "Ahad" >
+<!ENTITY event.recurrence.pattern.monthly.week.2.label "Isnin" >
+<!ENTITY event.recurrence.pattern.monthly.week.3.label "Selasa" >
+<!ENTITY event.recurrence.pattern.monthly.week.4.label "Rabu" >
+<!ENTITY event.recurrence.pattern.monthly.week.5.label "Khamis" >
+<!ENTITY event.recurrence.pattern.monthly.week.6.label "Jumaat" >
+<!ENTITY event.recurrence.pattern.monthly.week.7.label "Sabtu" >
+<!ENTITY event.recurrence.repeat.dayofmonth.label "Hari dalam sebulan">
+<!ENTITY event.recurrence.repeat.recur.label "Akan berulang pada hari">
+
+<!ENTITY event.recurrence.every.label "Setiap:" >
+<!ENTITY repeat.units.years.both "Tahun" >
+<!ENTITY event.recurrence.pattern.yearly.every.month.label "Setiap" >
+
+<!-- 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 "Januari" >
+<!ENTITY event.recurrence.pattern.yearly.month.2.label "Februari" >
+<!ENTITY event.recurrence.pattern.yearly.month.3.label "Mac" >
+<!ENTITY event.recurrence.pattern.yearly.month.4.label "April" >
+<!ENTITY event.recurrence.pattern.yearly.month.5.label "Mei" >
+<!ENTITY event.recurrence.pattern.yearly.month.6.label "Jun" >
+<!ENTITY event.recurrence.pattern.yearly.month.7.label "Julai" >
+<!ENTITY event.recurrence.pattern.yearly.month.8.label "Ogos" >
+<!ENTITY event.recurrence.pattern.yearly.month.9.label "September" >
+<!ENTITY event.recurrence.pattern.yearly.month.10.label "Oktober" >
+<!ENTITY event.recurrence.pattern.yearly.month.11.label "November" >
+<!ENTITY event.recurrence.pattern.yearly.month.12.label "Disember" >
+<!ENTITY event.recurrence.yearly.every.label "Setiap">
+<!ENTITY event.recurrence.yearly.first.label "Yang Pertama">
+<!ENTITY event.recurrence.yearly.second.label "Yang Kedua">
+<!ENTITY event.recurrence.yearly.third.label "Yang Ketiga">
+<!ENTITY event.recurrence.yearly.fourth.label "Yang Keempat">
+<!ENTITY event.recurrence.yearly.fifth.label "Yang Kelima">
+<!ENTITY event.recurrence.yearly.last.label "Yang Terakhir">
+<!ENTITY event.recurrence.pattern.yearly.week.1.label "Ahad" >
+<!ENTITY event.recurrence.pattern.yearly.week.2.label "Isnin" >
+<!ENTITY event.recurrence.pattern.yearly.week.3.label "Selasa" >
+<!ENTITY event.recurrence.pattern.yearly.week.4.label "Rabu" >
+<!ENTITY event.recurrence.pattern.yearly.week.5.label "Khamis" >
+<!ENTITY event.recurrence.pattern.yearly.week.6.label "Jumaat" >
+<!ENTITY event.recurrence.pattern.yearly.week.7.label "Sabtu" >
+<!ENTITY event.recurrence.pattern.yearly.day.label "hari" >
+<!ENTITY event.recurrence.of.label "daripada" >
+<!ENTITY event.recurrence.pattern.yearly.month2.1.label "Januari" >
+<!ENTITY event.recurrence.pattern.yearly.month2.2.label "Februari" >
+<!ENTITY event.recurrence.pattern.yearly.month2.3.label "Mac" >
+<!ENTITY event.recurrence.pattern.yearly.month2.4.label "April" >
+<!ENTITY event.recurrence.pattern.yearly.month2.5.label "Mei" >
+<!ENTITY event.recurrence.pattern.yearly.month2.6.label "Jun" >
+<!ENTITY event.recurrence.pattern.yearly.month2.7.label "Julai" >
+<!ENTITY event.recurrence.pattern.yearly.month2.8.label "Ogos" >
+<!ENTITY event.recurrence.pattern.yearly.month2.9.label "September" >
+<!ENTITY event.recurrence.pattern.yearly.month2.10.label "Oktober" >
+<!ENTITY event.recurrence.pattern.yearly.month2.11.label "November" >
+<!ENTITY event.recurrence.pattern.yearly.month2.12.label "Disember" >
+
+<!ENTITY event.recurrence.range.label "Tempoh pengulangan">
+<!ENTITY event.recurrence.forever.label "Tiada tarikh tamat" >
+<!ENTITY event.recurrence.repeat.for.label "Cipta" >
+<!ENTITY event.recurrence.appointments.label "Janji temu" >
+<!ENTITY event.repeat.until.label "Ulang sehingga" >
+<!ENTITY event.recurrence.preview.label "Previu">
+
+<!-- Attendees dialog -->
+<!ENTITY invite.title.label "Jemput Peserta">
+<!ENTITY event.organizer.label "Penganjur">
+<!ENTITY event.freebusy.suggest.slot "Cadangan slot masa:">
+<!ENTITY event.freebusy.button.next.slot "Slot seterusnya">
+<!ENTITY event.freebusy.button.previous.slot "Slot dahulu">
+<!ENTITY event.freebusy.zoom "Zum:">
+<!ENTITY event.freebusy.legend.free "Lapang" >
+<!ENTITY event.freebusy.legend.busy "Sibuk" >
+<!ENTITY event.freebusy.legend.busy_tentative "Tentatif" >
+<!ENTITY event.freebusy.legend.busy_unavailable "Di luar Pejabat" >
+<!ENTITY event.freebusy.legend.unknown "Tiada Maklumat" >
+<!ENTITY event.attendee.role.required "Peserta yang Diperlukan">
+<!ENTITY event.attendee.role.optional "Peserta Tambahan">
+<!ENTITY event.attendee.role.chair "Pengerusi">
+<!ENTITY event.attendee.role.nonparticipant "Bukan Peserta">
+<!ENTITY event.attendee.usertype.individual "Individu">
+<!ENTITY event.attendee.usertype.group "Kumpulan">
+<!ENTITY event.attendee.usertype.resource "Sumber">
+<!ENTITY event.attendee.usertype.room "Bilik">
+<!ENTITY event.attendee.usertype.unknown "Tidak diketahui">
+
+<!-- Timezone dialog -->
+<!ENTITY timezone.title.label "Sila Nyatakan Zon Masa">
+<!ENTITY event.timezone.custom.label "Zon masa Seterusnya…">
+
+<!-- Read-Only dialog -->
+<!ENTITY read.only.general.label "Umum">
+<!ENTITY read.only.title.label "Tajuk:">
+<!ENTITY read.only.calendar.label "Kalendar:">
+<!ENTITY read.only.event.start.label "Tarikh Mula:">
+<!ENTITY read.only.task.start.label "Tarikh Mula:">
+<!ENTITY read.only.event.end.label "Tarikh Tamat:">
+<!ENTITY read.only.task.due.label "Tarikh Tamat tempoh:">
+<!ENTITY read.only.repeat.label "Ulang:">
+<!ENTITY read.only.location.label "Lokasi:">
+<!ENTITY read.only.category.label "Kategori:">
+<!ENTITY read.only.organizer.label "Penganjur:">
+<!ENTITY read.only.reply.label "Balas:">
+<!ENTITY read.only.accept.label "Saya akan hadir">
+<!ENTITY read.only.decline.label "Saya tidak akan hadir">
+<!ENTITY read.only.tentative.label "Saya mungkin hadir">
+<!ENTITY read.only.needs.action.label "Saya akan sahkan kemudian">
+<!ENTITY read.only.reminder.label "Peringatan:">
+<!ENTITY read.only.attachments.label "Lampiran:">
+<!ENTITY read.only.attendees.label "Peserta">
+<!ENTITY read.only.description.label "Keterangan">
+<!ENTITY read.only.link.label "Pautan Berkaitan">
+
+<!-- Summary dialog -->
+<!ENTITY summary.dialog.saveclose.label "Simpan dan Tutup">
+<!ENTITY summary.dialog.saveclose.tooltiptext "Simpan perubahan dan tutup tetingkap tanpa mengubah status penyertaan dan menghantar respons">
+<!ENTITY summary.dialog.accept.label "Terima">
+<!ENTITY summary.dialog.accept.tooltiptext "Terima jemputan">
+<!ENTITY summary.dialog.tentative.label "Tentatif">
+<!ENTITY summary.dialog.tentative.tooltiptext "Terima jemputan secara tentatif">
+<!ENTITY summary.dialog.decline.label "Tolak">
+<!ENTITY summary.dialog.decline.tooltiptext "Tolak jemputan">
+<!ENTITY summary.dialog.dontsend.label "Jangan hantar respons">
+<!ENTITY summary.dialog.dontsend.tooltiptext "Tukar status penyertaan tanpa menghantar jawapan kepada penganjur dan tutup tetingkap">
+<!ENTITY summary.dialog.send.label "Hantar respons sekarang">
+<!ENTITY summary.dialog.send.tooltiptext "Hantar respons kepada pengatur dan tutup tetingkap">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-event-dialog.properties
new file mode 100644
index 0000000000..7ed266e503
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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=setiap hari;setiap #1 hari
+repeatDetailsRuleDaily4=setiap hari kerja
+
+# 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=setiap %1$S;setiap #2 minggu pada %1$S
+weeklyNthOnNounclass2=setiap %1$S;setiap #2 minggu pada %1$S
+
+# LOCALIZATION NOTE (weeklyEveryNth):
+# Edit recurrence window -> Recurrence pattern -> Weekly repeat rules
+# #1 - interval
+# e.g. "every 5 weeks"
+weeklyEveryNth=setiap minggu;setiap #1 minggu
+
+# 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=Ahad
+repeatDetailsDay1Nounclass=nounclass1
+repeatDetailsDay2=Isnin
+repeatDetailsDay2Nounclass=nounclass1
+repeatDetailsDay3=Selasa
+repeatDetailsDay3Nounclass=nounclass1
+repeatDetailsDay4=Rabu
+repeatDetailsDay4Nounclass=nounclass1
+repeatDetailsDay5=Khamis
+repeatDetailsDay5Nounclass=nounclass1
+repeatDetailsDay6=Jumaat
+repeatDetailsDay6Nounclass=nounclass1
+repeatDetailsDay7=Sabtu
+repeatDetailsDay7Nounclass=nounclass1
+
+# LOCALIZATION NOTE (repeatDetailsAnd)
+# Used to show a number of weekdays in a list
+# i.e. "Sunday, Monday, Tuesday " + and + " Wednesday"
+repeatDetailsAnd=dan
+
+# 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 setiap bulan;%1$S setiap #2 bulan
+monthlyRuleNthOfEveryNounclass2=%1$S setiap bulan;%1$S setiap #2 bulan
+
+# 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=%1$S %2$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=setiap %1$S setiap bulan;setiap %1$S setiap #2 bulan
+monthlyEveryOfEveryNounclass2=setiap %1$S setiap bulan;setiap %1$S setiap #2 bulan
+
+# 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=hari %1$S;hari %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 setiap bulan;%1$S setiap #2 bulan
+
+# 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=hari terakhir bulan; hari terakhir setiap #1 bulan
+
+# 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=setiap hari setiap bulan;setiap hari setiap #2 bulan
+
+# 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=yang pertama
+repeatOrdinal2Nounclass1=yang kedua
+repeatOrdinal3Nounclass1=yang ketiga
+repeatOrdinal4Nounclass1=yang keempat
+repeatOrdinal5Nounclass1=yang kelima
+repeatOrdinal-1Nounclass1=yang terakhir
+repeatOrdinal1Nounclass2=yang pertama
+repeatOrdinal2Nounclass2=yang kedua
+repeatOrdinal3Nounclass2=yang ketiga
+repeatOrdinal4Nounclass2=yang keempat
+repeatOrdinal5Nounclass2=yang kelima
+repeatOrdinal-1Nounclass2=yang terakhir
+
+# 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=setiap %2$S %1$S;setiap #3 tahun pada %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 setiap %3$S;setiap #4 tahun pada %2$S %1$S %3$S
+yearlyNthOnNthOfNounclass2=%2$S %1$S setiap %3$S;setiap #4 tahun pada %2$S %1$S %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=setiap %1$S %2$S;setiap #3 tahun pada setiap %1$S %2$S
+yearlyOnEveryNthOfNthNounclass2=setiap %1$S %2$S;setiap #3 tahun pada setiap %1$S %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=setiap hari %1$S;setiap #2 tahun setiap hari %1$S
+
+repeatDetailsMonth1=Januari
+repeatDetailsMonth2=Februari
+repeatDetailsMonth3=Mac
+repeatDetailsMonth4=April
+repeatDetailsMonth5=Mei
+repeatDetailsMonth6=Jun
+repeatDetailsMonth7=Julai
+repeatDetailsMonth8=Ogos
+repeatDetailsMonth9=September
+repeatDetailsMonth10=Oktober
+repeatDetailsMonth11=November
+repeatDetailsMonth12=Disember
+
+# 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 occurence 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=Berlaku pada %1$S\n efektif %2$S untuk #5 kali\ndari %3$S hingga %4$S.;Berlaku pada %1$S\nefektif %2$S untuk #5 kali\ndari %3$S hingga %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 occurence 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=Berlaku pada %1$S\n efektif %2$S untuk #3 kali.;Berlaku pada %1$S\n efektif %2$S untuk #3 kali.
+
+# 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=Berlaku pada %1$S\n efektif %2$S sehingga %3$S\n dari %4$S hingga %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=Berlaku pada %1$S\n efektif %2$S sehingga %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=Berlaku pada %1$S\n efektif %2$S\n dari %3$S hingga %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=Berlaku pada %1$S\n efektif %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=hari terakhir
+
+# 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=Klik di sini untuk maklumat lanjut
+
+# 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=Ulang butiran yang tidak diketahui
+
+# differences between the dialog for an Event or a Task
+newEvent=Acara Baru
+newTask=Tugasan Baru
+itemMenuLabelEvent=Acara
+itemMenuAccesskeyEvent2=A
+itemMenuLabelTask=Tugasan
+itemMenuAccesskeyTask2=T
+
+emailSubjectReply=Re: %1$S
+
+# Link Location Dialog
+specifyLinkLocation=Sila tentukan lokasi pautan
+enterLinkLocation=Masukkan halaman web, atau lokasi dokumen.
+
+summaryDueTaskLabel=Genap tempoh:
+
+# Attach File Dialog
+attachViaFilelink=Fail menggunakan %1$S
+selectAFile=Sila pilih fail untuk dilampirkan
+removeCalendarsTitle=Buang Lampiran
+
+# LOCALIZATION NOTE (removeAttachmentsText): Semi-colon list of plural forms for
+# prompting attachment removal.
+# See http://developer.mozilla.org/en/Localization_and_Plurals
+removeAttachmentsText=Adakah anda mahu mengalih keluar lampiran #1?
+
+# 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 %2$S %3$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=Ahad
+repeatDetailsDay2Plural=Isnin
+repeatDetailsDay3Plural=Selasa
+repeatDetailsDay4Plural=Rabu
+repeatDetailsDay5Plural=Khamis
+repeatDetailsDay6Plural=Jumaat
+repeatDetailsDay7Plural=Sabtu
+
+# 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=Selamanya
+
+# 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=Hari terakhir
+
+# 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 telah menerima jemputan, tapi membuat cadangan balas:
+
+# 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 telah menolak jemputan, tapi membuat cadangan balas:
+
+# 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 telah mewakilkan jemputan, tapi membuat cadangan balas:
+
+# 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 masih belum buat keputusan untuk menyertai dan membuat cadangan balas:
+
+# 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 telah menerima jemputan hanya secara tentatif dan membuat cadangan balas:
+
+# LOCALIZATION NOTE (counterOnPreviousVersionNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnPreviousVersionNotification=Ini ialah cadangan balas bagi versi terdahulu acara ini.
+
+# LOCALIZATION NOTE (counterOnCounterDisallowedNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnCounterDisallowedNotification=Anda tidak izinkan cadangan balas apabila menghantar jemputan ini.
+
+# LOCALIZATION NOTE (eventAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation
+eventAccepted=Anda telah menerima jemputan ini
+
+# LOCALIZATION NOTE (eventTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation tentatively
+eventTentative=Anda telah menerima jemputan ini secara tentatif
+
+# LOCALIZATION NOTE (eventDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the event invitation
+eventDeclined=Anda telah menolak jemputan ini
+
+# 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=Anda telah mewakilkan jemputan ini
+
+# LOCALIZATION NOTE (eventNeedsAction) - this will be displayed as notification
+# in the summary dialog if the user hasn't yet responded to an invitation
+eventNeedsAction=Anda masih belum memberi respons kepada jemputan ini
+
+# LOCALIZATION NOTE (taskAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the assigned task
+taskAccepted=Anda telah menerima untuk melaksanakan tugasan ini
+
+# LOCALIZATION NOTE (taskTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted tentatively the assigned task
+taskTentative=Anda telah menerima untuk melaksanakan tugasan ini secara tentatif
+
+# LOCALIZATION NOTE (taskDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the assigned task
+taskDeclined=Anda telah menolak untuk melaksanakan tugasan ini
+
+# LOCALIZATION NOTE (taskDelegated) - this will be displayed as notification
+# in the summary dialog if the user has delegated his/her assignement to one or
+# more others (without attending / working on it his/herself)
+taskDelegated=Anda telah mewakilkan untuk melaksanakan tugasan ini
+
+# 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=Anda masih belum memberi respons kepada tugasan ini
+
+# LOCALIZATION NOTE (taskInProgress) - this will be displayed as notification
+# in the summary dialog if the user is working on an assigned task
+taskInProgress=Anda telah mula melaksanakan tugasan yang ditetapkan ini
+
+# 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=Anda telah selesai melaksanakan tugasan yang ditetapkan ini
+
+# 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=Hantar dan Tutup
+
+# 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=Maklumkan peserta dan tutup
+
+# 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=Simpan dan Hantar
+
+# 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=Simpan dan maklumkan peserta
+
+# 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=Simpan dan Hantar
+
+# 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=Hantar dan Tutup
+
+# 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=Peserta (%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=Lampiran (%1$S):
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-extract.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-extract.properties
new file mode 100644
index 0000000000..8a5dc4e213
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 = pada | sehingga | hingga | - | hgga | hgga | dan
+
+# LOCALIZATION NOTE (end.prefix):
+# datetimes with these in front are extracted as end times
+end.prefix = pada | hingga | ke | - | hgga | hgga | dan | tamat: | tamat |berakhir | tamat tempoh pada | tamat tempoh:
+
+# 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 = minggu lepas | dihantar | e-mel | e-mel | bukannya | > | malangnya | dalam | tidak
+
+# LOCALIZATION NOTE (no.datetime.suffix):
+# datetimes followed by these won't be used
+no.datetime.suffix = tingkat | tkt | : | e-mel | e-mel | > | % | rm | ringgit | RM
+
+# LOCALIZATION NOTE (from.*):
+# can be a list of values, separate variants by |
+
+# LOCALIZATION NOTE (from.today):
+# must not be empty!
+from.today = hari ini
+
+from.tomorrow = esok
+# 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 = tengahari
+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 = pada #1 | sekitar #1 | #1 - | #1 hingga
+
+# 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 | hingga #1 | sehingga #1 | pada #1
+
+# LOCALIZATION NOTE (from.hour.am):
+# #1 = matches numbers 0-23 and number.0-number.23
+from.hour.am = #1 am | #1 a.m
+
+# 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 pm | #1 p.m | #1 p
+
+# 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 = setengah jam sebelum #1
+
+# 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 = setengah jam selepas #1
+
+# 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 | pada #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 am | #1:#2 a.m
+
+# 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 pm | #1:#2 p.m | #1:#2 p
+
+# 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 = #1 #2 | #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 | #3-#2-#1
+
+# 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 = #1 #2 #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 minit | #1 min | #1 min
+
+# LOCALIZATION NOTE (duration.hours):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.hours = #1 jam | #1 jam
+
+# LOCALIZATION NOTE (duration.days):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.days = #1 hari
+
+# LOCALIZATION NOTE (month.*):
+# can be a list of values, separate variants by |
+month.1 = januari | jan | jan.
+month.2 = februari | feb | feb.
+month.3 = mac | mac | mac.
+month.4 = april | apr | apr.
+month.5 = mei
+month.6 = jun | jun | jun.
+month.7 = julai | jul | jul.
+month.8 = ogos | ogo | ogo.
+month.9 = september | sep | sep. | sept.
+month.10 = oktober | okt | okt.
+month.11 = november | nov | nov.
+month.12 = disember | dis | dis.
+
+# 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 = ahad | ahad
+from.weekday.1 = isnin | isnin
+from.weekday.2 = selasa | selasa
+from.weekday.3 = rabu | rabu
+from.weekday.4 = khamis | khamis
+from.weekday.5 = jumaat | jumaat
+from.weekday.6 = sabtu | sabtu
+
+# 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 = kosong
+number.1 = satu | pertama
+number.2 = dua | kedua
+number.3 = tiga | ketiga
+number.4 = empat | keempat
+number.5 = lima | kelima
+number.6 = enam | keenam
+number.7 = tujuh | ketujuh
+number.8 = lapan | kelapan
+number.9 = sembilan | kesembilan
+number.10 = sepuluh | kesepuluh
+number.11 = sebelas | kesebelas
+number.12 = dua belas | kedua belas
+number.13 = tiga belas | ketiga belas
+number.14 = empat belas | keempat belas
+number.15 = lima belas | kelima belas
+number.16 = enam belas | keenam belas
+number.17 = tujuh belas | ketujuh belas
+number.18 = lapan belas | kelapan belas
+number.19 = sembilan belas | kesembilan belas
+number.20 = dua puluh | kedua puluh
+number.21 = dua puluh satu | kedua puluh satu
+number.22 = dua puluh dua | kedua puluh dua
+number.23 = dua puluh tiga | kedua puluh tiga
+number.24 = dua puluh empat| kedua puluh empat
+number.25 = dua puluh lima | kedua puluh lima
+number.26 = dua puluh enam | kedua puluh enam
+number.27 = dua puluh tujuh | kedua puluh tujuh
+number.28 = dua puluh lapan| kedua puluh lapan
+number.29 = dua puluh sembilan | kedua puluh sembilan
+number.30 = tiga puluh | ketiga puluh
+number.31 = tiga puluh satu | ketiga puluh satu
+
+# LOCALIZATION NOTE (alphabet):
+# list all lower and uppercase letters if your language has an alphabet
+# otherwise leave it empty
+alphabet = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-invitations-dialog.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-invitations-dialog.dtd
new file mode 100644
index 0000000000..2b9458fe67
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 "Jemputan">
+<!ENTITY calendar.invitations.dialog.statusmessage.updating.text "Mengemaskini senarai jemputan.">
+<!ENTITY calendar.invitations.dialog.statusmessage.noinvitations.text "Tiada yang tidak mengesahkan jemputan.">
+
+<!-- Calendar Invitations List -->
+<!ENTITY calendar.invitations.list.accept.button.label "Terima">
+<!ENTITY calendar.invitations.list.decline.button.label "Tolak">
+<!ENTITY calendar.invitations.list.recurrentevent.text "Acara ulangan">
+<!ENTITY calendar.invitations.list.alldayevent.text "Acara sepanjang hari">
+<!ENTITY calendar.invitations.list.location.text "Lokasi: ">
+<!ENTITY calendar.invitations.list.organizer.text "Penganjur: ">
+<!ENTITY calendar.invitations.list.attendee.text "Peserta: ">
+<!ENTITY calendar.invitations.list.none.text "Tiada">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-invitations-dialog.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-invitations-dialog.properties
new file mode 100644
index 0000000000..ff2b43899a
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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=All day event
+recurrent-event=Repeating event
+location=Location: %S
+organizer=Organizer: %S
+attendee=Attendee: %S
+none=None
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-occurrence-prompt.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-occurrence-prompt.dtd
new file mode 100644
index 0000000000..3387688239
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 "i">
+<!ENTITY buttons.allfollowing.accesskey "e">
+<!ENTITY buttons.parent.accesskey "a">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-occurrence-prompt.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-occurrence-prompt.properties
new file mode 100644
index 0000000000..a3df3f11a8
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar-occurrence-prompt.properties
@@ -0,0 +1,63 @@
+# 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=ialah acara ulangan
+header.isrepeating.task.label=ialah tugasan ulangan
+
+header.containsrepeating.event.label=mengandungi acara ulangan
+header.containsrepeating.task.label=mengandungi tugasan ulangan
+header.containsrepeating.mixed.label=mengandungi item ulangan berlainan jenis
+
+windowtitle.event.copy=Salin Acara Ulangan
+windowtitle.task.copy=Salin Tugasan Ulangan
+windowtitle.mixed.copy=Salin Item Ulangan
+windowtitle.event.cut=Potong Acara Ulangan
+windowtitle.task.cut=Potong Tugasan Ulangan
+windowtitle.mixed.cut=Potong Item Ulangan
+windowtitle.event.delete=Buang Acara Ulangan
+windowtitle.task.delete=Buang Tugasan Ulangan
+windowtitle.mixed.delete=Buang Item Ulangan
+windowtitle.event.edit=Edit Acara Ulangan
+windowtitle.task.edit=Edit Tugasan Ulangan
+
+buttons.occurrence.delete.label=Buang hanya pengulangan ini
+buttons.occurrence.edit.label=Edit hanya pengulangan ini
+
+buttons.allfollowing.delete.label=Buang pengulangan ini dan yang akan datang
+buttons.allfollowing.edit.label=Edit pengulangan ini dan yang akan datang
+
+buttons.parent.delete.label=Buang semua pengulangan
+buttons.parent.edit.label=Edit semua pengulangan
+windowtitle.mixed.edit=Edit Item Ulangan
+windowtitle.multipleitems=Item dipilih
+
+buttons.single.occurrence.copy.label=Salin hanya kejadian ini
+buttons.single.occurrence.cut.label=Potong hanya kejadian ini
+buttons.single.occurrence.delete.label=Buang hanya kejadian ini
+buttons.single.occurrence.edit.label=Edit hanya kejadian ini
+
+buttons.multiple.occurrence.copy.label=Salin hanya pengulangan dipilih
+buttons.multiple.occurrence.cut.label=Potong hanya pengulangan dipilih
+buttons.multiple.occurrence.delete.label=Buang hanya pengulangan dipilih
+buttons.multiple.occurrence.edit.label=Edit hanya pengulangan dipilih
+
+buttons.single.allfollowing.copy.label=Salin pengulangan ini dan yang akan datang
+buttons.single.allfollowing.cut.label=Potong pengulangan ini dan yang akan datang
+buttons.single.allfollowing.delete.label=Buang pengulangan ini dan yang akan datang
+buttons.single.allfollowing.edit.label=Edit pengulangan ini dan yang akan datang
+
+buttons.multiple.allfollowing.copy.label=Salin pengulangan dipilih dan yang akan datang
+buttons.multiple.allfollowing.cut.label=Potong pengulangan dipilih dan yang akan datang
+buttons.multiple.allfollowing.delete.label=Buang pengulangan dipilih dan yang akan datang
+buttons.multiple.allfollowing.edit.label=Edit pengulangan dipilih dan yang akan datang
+
+buttons.single.parent.copy.label=Salin semua pengulangan
+buttons.single.parent.cut.label=Potong semua pengulangan
+buttons.single.parent.delete.label=Buang semua pengulangan
+buttons.single.parent.edit.label=Edit semua pengulangan
+
+buttons.multiple.parent.copy.label=Salin semua pengulangan item dipilih
+buttons.multiple.parent.cut.label=Potong semua pengulangan item dipilih
+buttons.multiple.parent.delete.label=Buang semua pengulangan item dipilih
+buttons.multiple.parent.edit.label=Edit semua pengulangan item dipilih
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.dtd
new file mode 100644
index 0000000000..0b007395a0
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.dtd
@@ -0,0 +1,413 @@
+<!-- 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 "Kalendar">
+<!ENTITY calendar.calendar.accesskey "K">
+
+<!ENTITY calendar.newevent.button.tooltip "Cipta acara baru" >
+<!ENTITY calendar.newtask.button.tooltip "Cipta tugasan baru" >
+
+<!ENTITY calendar.unifinder.todoitems.label "Tugasan" >
+<!ENTITY calendar.unifinder.showcompletedtodos.label "Papar Tugasan selesai">
+
+<!ENTITY calendar.today.button.label "Hari ini">
+<!ENTITY calendar.tomorrow.button.label "Esok">
+<!ENTITY calendar.upcoming.button.label "Akan Datang">
+
+<!ENTITY calendar.events.filter.all.label "Semua Acara">
+<!ENTITY calendar.events.filter.today.label "Acara Hari ini">
+<!ENTITY calendar.events.filter.future.label "Semua Acara Akan Datang">
+<!ENTITY calendar.events.filter.current.label "Hari Dipilih Sekarang">
+<!ENTITY calendar.events.filter.currentview.label "Acara dalam Paparan Semasa">
+<!ENTITY calendar.events.filter.next7Days.label "Acara dalam 7 Hari Berikut">
+<!ENTITY calendar.events.filter.next14Days.label "Acara dalam 14 Hari Berikut">
+<!ENTITY calendar.events.filter.next31Days.label "Acara dalam 31 Hari Berikut">
+<!ENTITY calendar.events.filter.thisCalendarMonth.label "Acara dalam Bulan Kalendar ini">
+
+<!-- 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 "Siap">
+<!ENTITY calendar.unifinder.tree.done.tooltip2 "Susun mengikut keselesaian">
+<!ENTITY calendar.unifinder.tree.priority.label "Prioriti">
+<!ENTITY calendar.unifinder.tree.priority.tooltip2 "Susun mengikut prioriti">
+<!ENTITY calendar.unifinder.tree.title.label "Tajuk">
+<!ENTITY calendar.unifinder.tree.title.tooltip2 "Susun mengikut tajuk">
+<!ENTITY calendar.unifinder.tree.percentcomplete.label "&#37; Selesai">
+<!ENTITY calendar.unifinder.tree.percentcomplete.tooltip2 "Susun mengikut &#37; selesai">
+<!ENTITY calendar.unifinder.tree.startdate.label "Mula">
+<!ENTITY calendar.unifinder.tree.startdate.tooltip2 "Susun mengikut tarikh mula">
+<!ENTITY calendar.unifinder.tree.enddate.label "Tamat">
+<!ENTITY calendar.unifinder.tree.enddate.tooltip2 "Susun mengikut tarikh tamat">
+<!ENTITY calendar.unifinder.tree.duedate.label "Genap tempoh">
+<!ENTITY calendar.unifinder.tree.duedate.tooltip2 "Susun mengikut genap tempoh">
+<!ENTITY calendar.unifinder.tree.completeddate.label "Selesai">
+<!ENTITY calendar.unifinder.tree.completeddate.tooltip2 "Susun mengikut tarikh selesai">
+<!ENTITY calendar.unifinder.tree.categories.label "Kategori">
+<!ENTITY calendar.unifinder.tree.categories.tooltip2 "Susun mengikut kategori">
+<!ENTITY calendar.unifinder.tree.location.label "Lokasi">
+<!ENTITY calendar.unifinder.tree.location.tooltip2 "Susun mengikut lokasi">
+<!ENTITY calendar.unifinder.tree.status.label "Status">
+<!ENTITY calendar.unifinder.tree.status.tooltip2 "Susun mengikut status">
+<!ENTITY calendar.unifinder.tree.calendarname.label "Nama Kalendar">
+<!ENTITY calendar.unifinder.tree.calendarname.tooltip2 "Susun mengikut nama kalendar">
+<!ENTITY calendar.unifinder.tree.duration.label "Genap tempoh dalam">
+<!ENTITY calendar.unifinder.tree.duration.tooltip2 "Susun mengikut masa sehingga genap tempoh">
+<!ENTITY calendar.unifinder.close.tooltip "Tutup carian acara dan senarai acara">
+
+<!ENTITY calendar.today.button.tooltip "Pergi ke Hari ini" >
+<!ENTITY calendar.todaypane.button.tooltip "Papar Anak Tetingkap Hari ini" >
+
+<!ENTITY calendar.day.button.tooltip "Tukar ke paparan hari" >
+<!ENTITY calendar.week.button.tooltip "Tukar ke paparan minggu" >
+<!ENTITY calendar.month.button.tooltip "Tukar ke paparan bulan" >
+<!ENTITY calendar.multiweek.button.tooltip "Tukar ke paparan berbilang minggu" >
+
+<!ENTITY calendar.nextday.label "Esok Hari" >
+<!ENTITY calendar.prevday.label "Semalam" >
+<!ENTITY calendar.nextday.accesskey "s" >
+<!ENTITY calendar.prevday.accesskey "e" >
+<!ENTITY calendar.nextweek.label "Minggu Depan" >
+<!ENTITY calendar.prevweek.label "Minggu Lepas" >
+<!ENTITY calendar.nextweek.accesskey "p" >
+<!ENTITY calendar.prevweek.accesskey "s" >
+<!ENTITY calendar.nextmonth.label "Bulan Depan" >
+<!ENTITY calendar.prevmonth.label "Bulan Lepas" >
+<!ENTITY calendar.nextmonth.accesskey "p" >
+<!ENTITY calendar.prevmonth.accesskey "s" >
+
+<!ENTITY calendar.navigation.nextday.tooltip "Satu Hari Akan Datang" >
+<!ENTITY calendar.navigation.prevday.tooltip "Satu Hari Lepas" >
+<!ENTITY calendar.navigation.nextweek.tooltip "Satu Minggu Akan Datang" >
+<!ENTITY calendar.navigation.prevweek.tooltip "Satu Minggu Lepas" >
+<!ENTITY calendar.navigation.nextmonth.tooltip "Satu Bulan Akan Datang" >
+<!ENTITY calendar.navigation.prevmonth.tooltip "Satu Bulan Lepas" >
+
+<!ENTITY calendar.newevent.button.label "Acara Baru" >
+<!ENTITY calendar.newtask.button.label "Tugasan Baru" >
+<!ENTITY calendar.print.button.label "Cetak" >
+<!ENTITY calendar.print.button.accesskey "C">
+
+<!ENTITY calendar.day.button.label "Hari" >
+<!ENTITY calendar.week.button.label "Minggu" >
+<!ENTITY calendar.month.button.label "Bulan" >
+<!ENTITY calendar.multiweek.button.label "Berbilang minggu" >
+<!ENTITY calendar.onlyworkday.checkbox.label "Hari bekerja sahaja" >
+<!ENTITY calendar.onlyworkday.checkbox.accesskey "r" >
+<!ENTITY calendar.displaytodos.checkbox.label "Tugasan dalam Paparan" >
+<!ENTITY calendar.displaytodos.checkbox.accesskey "g" >
+<!ENTITY calendar.completedtasks.checkbox.label "Papar Tugasan selesai" >
+<!ENTITY calendar.completedtasks.checkbox.accesskey "s" >
+
+<!ENTITY calendar.orientation.label "Putar Paparan" >
+<!ENTITY calendar.orientation.accesskey "u" >
+
+<!ENTITY calendar.search.options.searchfor " mengandungi">
+
+<!ENTITY calendar.list.header.label "Kalendar">
+
+<!ENTITY calendar.task.filter.title.label "Papar">
+<!ENTITY calendar.task.filter.all.label "Semua">
+<!ENTITY calendar.task.filter.all.accesskey "S">
+<!ENTITY calendar.task.filter.today.label "Hari ini">
+<!ENTITY calendar.task.filter.today.accesskey "H">
+<!ENTITY calendar.task.filter.next7days.label "Tujuh Hari Akan Datang">
+<!ENTITY calendar.task.filter.next7days.accesskey "T">
+<!ENTITY calendar.task.filter.notstarted.label "Tugasan Belum Dimulakan">
+<!ENTITY calendar.task.filter.notstarted.accesskey "e">
+<!ENTITY calendar.task.filter.overdue.label "Tugasan Melebihi Genap Tempoh">
+<!ENTITY calendar.task.filter.overdue.accesskey "M">
+<!ENTITY calendar.task.filter.completed.label "Tugasan Selesai">
+<!ENTITY calendar.task.filter.completed.accesskey "S">
+<!ENTITY calendar.task.filter.open.label "Tugasan Belum Selesai">
+<!ENTITY calendar.task.filter.open.accesskey "m">
+
+<!-- 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 "Tugasan Semasa">
+<!ENTITY calendar.task.filter.current.accesskey "e">
+
+<!ENTITY calendar.task-details.title.label "tajuk">
+<!ENTITY calendar.task-details.organizer.label "daripada">
+<!ENTITY calendar.task-details.priority.label "prioriti">
+<!ENTITY calendar.task-details.priority.low.label "Rendah">
+<!ENTITY calendar.task-details.priority.normal.label "Normal">
+<!ENTITY calendar.task-details.priority.high.label "Tinggi">
+<!ENTITY calendar.task-details.status.label "status">
+<!ENTITY calendar.task-details.category.label "kategori">
+<!ENTITY calendar.task-details.repeat.label "ulang">
+<!ENTITY calendar.task-details.attachments.label "lampiran">
+<!ENTITY calendar.task-details.start.label "tarikh mula">
+<!ENTITY calendar.task-details.due.label "tarikh tamat tempoh">
+
+<!ENTITY calendar.task.category.button.tooltip "Kategori tugasan">
+<!ENTITY calendar.task.complete.button.tooltip "Tanda tugasan dipilih sebagai selesai">
+<!ENTITY calendar.task.priority.button.tooltip "Tukar prioriti">
+
+<!ENTITY calendar.task.text-filter.textbox.emptytext.base1 "Tapis tugasan #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 "Buka">
+<!ENTITY calendar.context.modifyorviewitem.accesskey "B">
+<!ENTITY calendar.context.modifyorviewtask.label "Buka Tugasan…">
+<!ENTITY calendar.context.modifyorviewtask.accesskey "B">
+<!ENTITY calendar.context.newevent.label "Acara Baru…">
+<!ENTITY calendar.context.newevent.accesskey "A">
+<!ENTITY calendar.context.newtodo.label "Tugasan Baru…">
+<!ENTITY calendar.context.newtodo.accesskey "s">
+<!ENTITY calendar.context.deletetask.label "Buang Tugasan">
+<!ENTITY calendar.context.deletetask.accesskey "g">
+<!ENTITY calendar.context.deleteevent.label "Buang Acara">
+<!ENTITY calendar.context.deleteevent.accesskey "g">
+<!ENTITY calendar.context.cutevent.label "Potong">
+<!ENTITY calendar.context.cutevent.accesskey "t">
+<!ENTITY calendar.context.copyevent.label "Salin">
+<!ENTITY calendar.context.copyevent.accesskey "S">
+<!ENTITY calendar.context.pasteevent.label "Tampal">
+<!ENTITY calendar.context.pasteevent.accesskey "T">
+<!ENTITY calendar.context.button.label "Anak Tetingkap Hari ini">
+<!ENTITY calendar.context.button.accesskey "H">
+
+<!ENTITY calendar.context.attendance.menu.label "Kehadiran">
+<!ENTITY calendar.context.attendance.menu.accesskey "d">
+<!ENTITY calendar.context.attendance.occurrence.label "Kejadian Ini">
+<!ENTITY calendar.context.attendance.all.label "Semua Kejadian" >
+
+<!ENTITY calendar.context.attendance.all2.label "Siri Lengkap">
+<!ENTITY calendar.context.attendance.send.label "Hantar notifikasi sekarang">
+<!ENTITY calendar.context.attendance.send.accesskey "H">
+<!ENTITY calendar.context.attendance.dontsend.label "Jangan hantar notifikasi">
+<!ENTITY calendar.context.attendance.dontsend.accesskey "J">
+
+<!ENTITY calendar.context.attendance.occ.accepted.accesskey "D">
+<!ENTITY calendar.context.attendance.occ.accepted.label "Diterima">
+<!ENTITY calendar.context.attendance.occ.tentative.accesskey "f">
+<!ENTITY calendar.context.attendance.occ.tentative.label "Diterima secara tentatif">
+<!ENTITY calendar.context.attendance.occ.declined.accesskey "t">
+<!ENTITY calendar.context.attendance.occ.declined.label "Ditolak">
+<!ENTITY calendar.context.attendance.occ.delegated.accesskey "w">
+<!ENTITY calendar.context.attendance.occ.delegated.label "Diwakilkan">
+<!ENTITY calendar.context.attendance.occ.needsaction.accesskey "M">
+<!ENTITY calendar.context.attendance.occ.needsaction.label "Masih perlu tindakan">
+<!ENTITY calendar.context.attendance.occ.inprogress.accesskey "D">
+<!ENTITY calendar.context.attendance.occ.inprogress.label "Dalam proses">
+<!ENTITY calendar.context.attendance.occ.completed.accesskey "S">
+<!ENTITY calendar.context.attendance.occ.completed.label "Selesai">
+
+<!ENTITY calendar.context.attendance.all.accepted.accesskey "t">
+<!ENTITY calendar.context.attendance.all.accepted.label "Diterima">
+<!ENTITY calendar.context.attendance.all.tentative.accesskey "f">
+<!ENTITY calendar.context.attendance.all.tentative.label "Diterima secara tentatif">
+<!ENTITY calendar.context.attendance.all.declined.accesskey "k">
+<!ENTITY calendar.context.attendance.all.declined.label "Ditolak">
+<!ENTITY calendar.context.attendance.all.delegated.accesskey "w">
+<!ENTITY calendar.context.attendance.all.delegated.label "Diwakilkan">
+<!ENTITY calendar.context.attendance.all.needsaction.accesskey "h">
+<!ENTITY calendar.context.attendance.all.needsaction.label "Masih perlu tindakan">
+<!ENTITY calendar.context.attendance.all.inprogress.accesskey "p">
+<!ENTITY calendar.context.attendance.all.inprogress.label "Dalam proses">
+<!ENTITY calendar.context.attendance.all.completed.accesskey "l">
+<!ENTITY calendar.context.attendance.all.completed.label "Selesai">
+
+<!-- Task Context Menu -->
+<!ENTITY calendar.context.progress.label "Kemajuan">
+<!ENTITY calendar.context.progress.accesskey "K">
+<!ENTITY calendar.context.priority.label "Prioriti">
+<!ENTITY calendar.context.priority.accesskey "r">
+<!ENTITY calendar.context.postpone.label "Tunda Tugasan">
+<!ENTITY calendar.context.postpone.accesskey "s">
+
+<!ENTITY percnt "&#38;#37;" ><!--=percent sign-->
+
+<!ENTITY calendar.context.markcompleted.label "Tandakan Selesai">
+<!ENTITY calendar.context.markcompleted.accesskey "d">
+
+<!ENTITY progress.level.0 "0&percnt; Selesai">
+<!ENTITY progress.level.0.accesskey "0">
+<!ENTITY progress.level.25 "25 &percnt; Selesai">
+<!ENTITY progress.level.25.accesskey "2">
+<!ENTITY progress.level.50 "50 &percnt; Selesai">
+<!ENTITY progress.level.50.accesskey "5">
+<!ENTITY progress.level.75 "75 &percnt; Selesai">
+<!ENTITY progress.level.75.accesskey "7">
+<!ENTITY progress.level.100 "100 &percnt; Selesai">
+<!ENTITY progress.level.100.accesskey "1">
+
+<!ENTITY priority.level.none "Tidak dinyatakan">
+<!ENTITY priority.level.none.accesskey "d">
+<!ENTITY priority.level.low "Rendah">
+<!ENTITY priority.level.low.accesskey "R">
+<!ENTITY priority.level.normal "Normal">
+<!ENTITY priority.level.normal.accesskey "N">
+<!ENTITY priority.level.high "Tinggi">
+<!ENTITY priority.level.high.accesskey "T">
+
+<!ENTITY calendar.context.postpone.1hour.label "1 Jam">
+<!ENTITY calendar.context.postpone.1hour.accesskey "J">
+<!ENTITY calendar.context.postpone.1day.label "1 Hari">
+<!ENTITY calendar.context.postpone.1day.accesskey "H">
+<!ENTITY calendar.context.postpone.1week.label "1 Minggu">
+<!ENTITY calendar.context.postpone.1week.accesskey "M">
+
+<!ENTITY calendar.copylink.label "Salin Lokasi Pautan">
+<!ENTITY calendar.copylink.accesskey "S">
+
+<!-- Task View -->
+<!-- Note that the above *.context.* strings are currently used for the other
+ task action buttons -->
+<!ENTITY calendar.taskview.delete.label "Buang">
+
+<!-- Server Context Menu -->
+<!ENTITY calendar.context.newserver.label "Kalendar Baru…">
+<!ENTITY calendar.context.newserver.accesskey "B">
+<!ENTITY calendar.context.findcalendar.label "Cari Kalendar…" >
+<!ENTITY calendar.context.findcalendar.accesskey "C" >
+<!ENTITY calendar.context.deleteserver2.label "Buang Kalendar…">
+<!ENTITY calendar.context.deleteserver2.accesskey "B">
+
+<!-- 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 "Buang Kalendar…">
+<!ENTITY calendar.context.removeserver.accesskey "B">
+<!ENTITY calendar.context.unsubscribeserver.label "Batal langganan Kalendar…">
+<!ENTITY calendar.context.unsubscribeserver.accesskey "B">
+<!ENTITY calendar.context.synccalendars.label "Selaraskan Kalendar">
+<!ENTITY calendar.context.synccalendars.accesskey "S">
+<!ENTITY calendar.context.publish.label "Terbitkan Kalendar…">
+<!ENTITY calendar.context.publish.accesskey "b">
+<!ENTITY calendar.context.export.label "Eksport Kalendar…">
+<!ENTITY calendar.context.export.accesskey "E">
+<!ENTITY calendar.context.properties.label "Sifat">
+<!ENTITY calendar.context.properties.accesskey "S">
+
+<!-- LOCALIZATION NOTE (calendar.context.showcalendar.accesskey)
+ This is the access key used for the showCalendar string -->
+<!ENTITY calendar.context.showcalendar.accesskey "p">
+
+<!-- LOCALIZATION NOTE (calendar.context.hidecalendar.accesskey)
+ This is the access key used for the hideCalendar string -->
+<!ENTITY calendar.context.hidecalendar.accesskey "S">
+
+<!-- LOCALIZATION NOTE (calendar.context.showonly.accesskey)
+ This is the access key used for the showOnlyCalendar string -->
+<!ENTITY calendar.context.showonly.accesskey "H">
+<!ENTITY calendar.context.showall.label "Papar Semua Kalendar">
+<!ENTITY calendar.context.showall.accesskey "S">
+
+<!ENTITY calendar.context.convertmenu.label "Tukar Kepada">
+<!ENTITY calendar.context.convertmenu.accesskey.mail "k">
+<!ENTITY calendar.context.convertmenu.accesskey.calendar "r">
+<!ENTITY calendar.context.convertmenu.event.label "Acara…">
+<!ENTITY calendar.context.convertmenu.event.accesskey "A">
+<!ENTITY calendar.context.convertmenu.message.label "Mesej…">
+<!ENTITY calendar.context.convertmenu.message.accesskey "M">
+<!ENTITY calendar.context.convertmenu.task.label "Tugasan…">
+<!ENTITY calendar.context.convertmenu.task.accesskey "T">
+
+<!ENTITY calendar.tasks.view.minimonth.label "Bulan-Mini">
+<!ENTITY calendar.tasks.view.minimonth.accesskey "M">
+
+<!ENTITY calendar.tasks.view.calendarlist.label "Senarai Kalendar">
+<!ENTITY calendar.tasks.view.calendarlist.accesskey "S">
+
+<!ENTITY calendar.tasks.view.filtertasks.label "Tapis Tugasan">
+<!ENTITY calendar.tasks.view.filtertasks.accesskey "T">
+
+<!-- Calendar Alarm Dialog -->
+
+<!ENTITY calendar.alarm.location.label "Lokasi:" >
+<!ENTITY calendar.alarm.details.label "Butiran…" >
+
+<!ENTITY calendar.alarm.snoozefor.label "Lena untuk" >
+<!ENTITY calendar.alarm.snoozeallfor.label "Lena Semua untuk" >
+<!ENTITY calendar.alarm.title.label "Peringatan Kalendar" >
+<!ENTITY calendar.alarm.dismiss.label "Abai" >
+<!ENTITY calendar.alarm.dismissall.label "Abai Semua" >
+
+<!ENTITY calendar.alarm.snooze.5minutes.label "5 Minit" >
+<!ENTITY calendar.alarm.snooze.10minutes.label "10 Minit" >
+<!ENTITY calendar.alarm.snooze.15minutes.label "15 Minit" >
+<!ENTITY calendar.alarm.snooze.30minutes.label "30 Minit" >
+<!ENTITY calendar.alarm.snooze.45minutes.label "45 Minit" >
+<!ENTITY calendar.alarm.snooze.1hour.label "1 Jam" >
+<!ENTITY calendar.alarm.snooze.2hours.label "2 Jam" >
+<!ENTITY calendar.alarm.snooze.1day.label "1 Hari" >
+
+<!-- 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 "Batal Lena">
+
+<!-- Calendar Server Dialog -->
+<!ENTITY calendar.server.dialog.title.edit "Edit Kalendar">
+<!ENTITY calendar.server.dialog.name.label "Nama Kalendar:">
+
+<!-- Calendar Properties -->
+<!ENTITY calendarproperties.color.label "Warna:">
+<!ENTITY calendarproperties.webdav.label "iCalendar (ICS)">
+<!ENTITY calendarproperties.caldav.label "CalDAV">
+<!ENTITY calendarproperties.wcap.label "Sun Java System Calendar Server (WCAP)">
+<!ENTITY calendarproperties.format.label "Format:">
+<!ENTITY calendarproperties.location.label "Lokasi:">
+<!ENTITY calendarproperties.refreshInterval.label "Muat semula Kalendar:">
+<!ENTITY calendarproperties.refreshInterval.manual.label "Secara Manual">
+<!ENTITY calendarproperties.name.label "Nama:">
+<!ENTITY calendarproperties.readonly.label "Baca Sahaja">
+<!ENTITY calendarproperties.firealarms.label "Papar Peringatan">
+<!ENTITY calendarproperties.cache3.label "Sokongan Luar talian">
+<!ENTITY calendarproperties.enabled.label "Aktifkan kalendar ini">
+<!ENTITY calendarproperties.forceDisabled.label "Penyedia kalendar ini tidak dapat ditemukan. Ini kerap terjadi apabila anda nyahdayakan atau nayhpasang add-ons tertentu.">
+<!ENTITY calendarproperties.unsubscribe.label "Batal langganan">
+<!ENTITY calendarproperties.unsubscribe.accesskey "B">
+
+<!-- Calendar Publish Dialog -->
+<!ENTITY calendar.publish.dialog.title "Terbitkan Kalendar">
+<!ENTITY calendar.publish.url.label "URL Penerbitan">
+<!ENTITY calendar.publish.publish.button "Terbitkan">
+<!ENTITY calendar.publish.close.button "Tutup">
+
+<!ENTITY calendar.publish.example.url.description "Sesuatu seperti http://www.myserver.com/webdav/test.ics">
+
+<!-- Select Calendar Dialog -->
+<!ENTITY calendar.select.dialog.title "Pilih Kalendar">
+
+<!-- Calendar Printing -->
+<!ENTITY calendar.print.window.title "Cetak Kalendar">
+<!ENTITY calendar.print.title.label "Tajuk:">
+<!ENTITY calendar.print.layout.label "Susun atur:">
+<!ENTITY calendar.print.range.label "Apa Yang Mahu Dicetak">
+<!ENTITY calendar.print.currentView2.label "Paparan semasa">
+<!ENTITY calendar.print.selectedEventsAndTasks.label "Acara//tasks dipilih">
+<!ENTITY calendar.print.tasks.label "Tugasan">
+<!ENTITY calendar.print.events.label "Acara">
+<!ENTITY calendar.print.custom.label "Julat tarikh lazim:">
+<!ENTITY calendar.print.from.label "Daripada:">
+<!ENTITY calendar.print.to.label "Sehingga:">
+<!ENTITY calendar.print.settingsGroup.label "Tetapan Cetakan">
+<!ENTITY calendar.print.optionsGroup.label "Pilihan">
+<!ENTITY calendar.print.taskswithnoduedate.label "Tugasan tanpa tarikh genap tempoh">
+<!ENTITY calendar.print.completedtasks.label "Tugasan selesai">
+
+<!-- Error reporting -->
+<!ENTITY calendar.error.detail "Butiran…">
+<!ENTITY calendar.error.code "Kod ralat:">
+<!ENTITY calendar.error.description "Keterangan:">
+<!ENTITY calendar.error.title "Ada ralat">
+
+<!-- Extract buttons in message header -->
+<!ENTITY calendar.extract.event.button "Tambah sebagai acara">
+<!ENTITY calendar.extract.task.button "Tambah sebagai tugasan">
+<!ENTITY calendar.extract.event.button.tooltip "Ekstrak maklumat kalendar daripada mesej dan masukkan ke dalam kalender sebagai acara">
+<!ENTITY calendar.extract.task.button.tooltip "Ekstrak maklumat kalendar daripada mesej dan masukkan ke dalam kalender sebagai tugasan">
+
+<!ENTITY calendarproperties.enabled2.label "Enable This Calendar">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.properties
new file mode 100644
index 0000000000..aa19b4f385
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendar.properties
@@ -0,0 +1,826 @@
+# 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=Previu Cetakan %1$S
+Untitled=Tiada tajuk
+
+# Default name for new events
+newEvent=Acara Baru
+
+# Titles for the event/task dialog
+newEventDialog=Acara Baru
+editEventDialog=Edit Acara
+newTaskDialog=Tugasan Baru
+editTaskDialog=Edit Tugasan
+
+# Do you want to save changes?
+askSaveTitleEvent=Simpan Acara
+askSaveTitleTask=Simpan Tugasan
+askSaveMessageEvent=Acara masih belum disimpan. Anda mahu simpan acara ini?
+askSaveMessageTask=Tugasan masih belum disimpan. Anda mahu simpan tugasan ini?
+
+# Event Dialog Warnings
+warningEndBeforeStart=Tarikh tamat yang anda masukkan berlaku sebelum tarikh mula
+warningUntilDateBeforeStart=Tarikh tempoh berlaku sebelum tarikh mula
+
+# The name of the calendar provided with the application by default
+homeCalendarName=Laman
+
+# The name given to a calendar if an opened calendar has an empty filename
+untitledCalendarName=Kalendar Tanpa Tajuk
+
+# Event status: Tentative, Confirmed, Cancelled
+# ToDo task status: NeedsAction, InProcess, Completed, Cancelled
+statusTentative =Tentatif
+statusConfirmed =Disahkan
+eventStatusCancelled=Dibatalkan
+todoStatusCancelled =Dibatalkan
+statusNeedsAction =Perlu Tindakan
+statusInProcess =Dalam Proses
+statusCompleted =Selesai
+
+# Task priority, these should match the priority.level.* labels in calendar.dtd
+highPriority=Tinggi
+normalPriority=Normal
+lowPriority=Rendah
+
+importPrompt=Kalendar mana yang anda mahu import item ini?
+exportPrompt=Kalendar mana yang anda mahu eksport itemnya?
+pastePrompt=Kalendar boleh tulis semasa mana satu yang anda mahu tampal?
+publishPrompt=Kalendar mana yang anda mahu terbitkan?
+
+# LOCALIZATION NOTE (pasteEventAlso): The users pasting operation includes among
+# others also a meeting invitation - this is used as a affix in
+# pasteNotifyAbout
+pasteEventAlso=Tempel termasuk mesyuarat
+# LOCALIZATION NOTE (pasteEventsAlso): The users pasting operation includes among
+# others also several meeting invitations - this is used as a affix in
+# pasteNotifyAbout
+pasteEventsAlso=Tempel termasuk mesyuarat
+# LOCALIZATION NOTE (pasteTaskAlso): The users pasting operation includes among
+# others also an assigned task - this is used as a affix in pasteNotifyAbout
+pasteTaskAlso=Tempel termasuk tugasan yang ditetapkan
+# LOCALIZATION NOTE (pasteTasksAlso): The users pasting operation include among
+# others also several assigned tasks - this is used as a affix in
+# pasteNotifyAbout
+pasteTasksAlso=Tempel termasuk tugasan yang ditetapkan
+# 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=Tempel termasuk mesyuarat dan tugasan yang ditetapkan
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting a meeting -
+# this is used as a affix in pasteNotifyAbout
+pasteEventOnly=Anda menempelkan mesyuarat
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several meetings -
+# this is used as a affix in pasteNotifyAbout
+pasteEventsOnly=Anda menempelkan mesyuarat
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting an assigned task -
+# this is used as a affix in pasteNotifyAbout
+pasteTaskOnly=Anda menempelkan tugasan yang ditetapkan
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several assigned
+# tasks - this is used as a affix in pasteNotifyAbout
+pasteTasksOnly=Anda menempelkan tugasan yang ditetapkan
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting assigned task(s) and
+# meeting(s) - this is used as a affix in pasteNotifyAbout
+pasteItemsOnly=Anda menempelkan mesyuarat dan tugasan yang ditetapkan
+
+# LOCALIZATION NOTE (pasteNotifyAbout): Text displayed if pasting an invitation
+# or assigned task
+# %1$S - pasteEvent* or pasteTask*
+pasteNotifyAbout=%1$S - adakah anda mahu menghantar kemaskini kepada setiap pihak yang terlibat?
+
+# LOCALIZATION NOTE (pasteAndNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteAndNotifyLabel=Tampal dan hantar sekarang
+# LOCALIZATION NOTE (pasteDontNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteDontNotifyLabel=Tampal tanpa menghantar
+
+# 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 item gagal diimport. Ralatnya ialah: %2$S
+# LOCALIZATION NOTE (noItemsInCalendarFile):
+# %1$S will be replaced with file path
+noItemsInCalendarFile=Gagal diimport daripada %1$S. Tiada item fail yang boleh diimport.
+
+#spaces needed at the end of the following lines
+eventDescription=Keterangan:
+
+unableToRead=Tidak dapat membaca fail:
+unableToWrite=Tidak dapat menulis fail:
+defaultFileName=MozillaCalEvents
+HTMLTitle=Kalendar Mozilla
+
+# 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=Zun masa yang tidak diketahui dan tidak ditakrif semasa membaca %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 item diabaikan kerana wujud dalam kedua-dua kalendar destinasi dan %2$S.
+
+unableToCreateProvider=Ada ralat semasa menyediakan kalendar untuk digunakan di lokasi %1$S. Kalendar tidak disediakan.
+unknownTimezonesError=Ada ralat semasa menyediakan kalendar untuk digunakan di lokasi %1$S. Kalendar mungkin dirujuk dalam zon masa yang tidak diketahui. Sila pasang calendar-timezones.xpi yang terkini.
+missingCalendarTimezonesError=Tiada zon masa ditemukan. Sila pasang calendar-timezones.xpi.
+
+# Sample: Unknown timezone "USPacific" in "Dentist Appt". Using the 'floating' local timezone instead: 2008/02/28 14:00:00
+unknownTimezoneInItem=Zon masa tidak diketahui "%1$S" di "%2$S". Dianggap sebagai zon masa tempatan 'tergantung', bukannya: %3$S
+TimezoneErrorsAlertTitle=Ralat Zon Masa
+TimezoneErrorsSeeConsole=Lihat Konsol Ralat: Zon masa tidak diketahui dianggap sebagai zon masa tempatan 'tergantung'.
+
+# The following strings are for the prompt to delete/unsubscribe from the calendar
+removeCalendarTitle=Buang Kalendar
+removeCalendarButtonDelete=Buang Kalendar
+removeCalendarButtonUnsubscribe=Batal langganan
+
+# LOCALIZATION NOTE (removeCalendarMessageDeleteOrUnsubscribe): Shown for
+# calendar where both deleting and unsubscribing is possible.
+# %1$S: The name of a calendar
+removeCalendarMessageDeleteOrUnsubscribe=Anda mahu buang kalendar "%1$S"? Membatalkan langganan akan mengeluarkan kalendar daripada senarai dan akan turut menghapuskan data di dalamnya.
+
+# LOCALIZATION NOTE (removeCalendarMessageDelete): Shown for calendar where
+# deleting is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageDelete=Anda mahu buang kalendar "%1$S" secara kekal?
+
+# LOCALIZATION NOTE (removeCalendarMessageUnsubscribe): Shown for calendar
+# where unsubscribing is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageUnsubscribe=Anda mahu membatalkan langgaan kalendar "%1$S"?
+
+WeekTitle=Minggu %1$S
+None=Tiada
+
+# Error strings
+## @name UID_NOT_FOUND
+## @loc none
+tooNewSchemaErrorBoxTitle=Kalendar anda tidak serasi dengan %1$S versi ini
+
+# 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=Data kalendar dalam profil anda dikemaskini oleh %1$S versi yang terbaru, dan meneruskannya mungkin akan menyebabkan kehilangan atau kerosakan maklumat. %1$S akan dinyahdayakan dan %2$S dimulakan semula.
+
+# LOCALIZATION NOTE (tooNewSchemaButtonRestart):
+# %1$S will be replaced with the name of the host application 'Calendar'
+tooNewSchemaButtonRestart=Mulakan semula %1$S
+
+# LOCALIZATION NOTE (tooNewSchemaButtonQuit):
+# %1$S will be replaced with the name of the host application 'Calendar'
+tooNewSchemaButtonQuit=Keluar %1$S
+
+# List of events or todos (unifinder)
+eventUntitled=Tiada tajuk
+
+# Tooltips of events or todos
+tooltipTitle=Tajuk:
+tooltipLocation=Lokasi:
+# 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=Tarikh:
+# event calendar name
+tooltipCalName=Nama Kalendar:
+# event status: tentative, confirmed, cancelled
+tooltipStatus=Status:
+# event organizer
+tooltipOrganizer=Penganjur:
+# task/todo fields
+# start date time, due date time, task priority number, completed date time
+tooltipStart=Mula:
+tooltipDue=Genap tempoh:
+tooltipPriority=Prioriti:
+tooltipPercent=% Selesai:
+tooltipCompleted=Selesai:
+
+# 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 mempengerusikan acara.
+# 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 adalah bukan-peserta.
+# 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 adalah peserta tambahan.
+# 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 adalah peserta wajib.
+
+# 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 telah mengesahkan kehadiran.
+# 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 tidak akan hadir.
+# 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 telah mewakilkan kehadiran.
+# 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 masih belum memberikan jawapan.
+# 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 telah mengesahkan kehadiran secara tentatif.
+
+# 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 (kumpulan)
+# 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 (sumber)
+# 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 (bilik)
+# 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=Baru
+Open=Buka
+filepickerTitleImport=Import
+filepickerTitleExport=Eksport
+
+# 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=Dokumen XML (%1$S)
+filterHtml=Halaman Web (%1$S)
+filterOutlookCsv=Outlook Comma Separated Values (%1$S)
+filterWav=Waveform Audio (%1$S)
+
+# Remote calendar errors
+genericErrorTitle=Ada ralat
+httpPutError=Penerbitan fail kalendar telah gagal.\nKod status: %1$S: %2$S
+otherPutError=Penerbitan fail kalendar telah gagal.\nKod status: 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=Ada ralat membaca data kalendar: %1$S. Telah digantikan dengan mod baca-sahaja kerana perubahan dalam kalendar akan menyebabkan kehilangan data. Anda boleh tukar tetapan ini dengan memilih 'Edit Kalendar'.
+
+# 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=Ada ralat membaca data kalendar: %1$S. Telah dinyahdayakan sehingga selamat untuk digunakan.
+
+# 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=Ada ralat membaca data kalendar: %1$S. Oleh kerana ralat ini kecil, atur cara ini akan cuba diteruskan.
+
+# 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=Ada ralat membaca data kalendar: %1$S.
+utf8DecodeError=Ada ralat semasa menyahkod fail iCalendar (ics) sebagai UTF-8. Semak samada fail, termasuk simbol dan huruf, dikodkan menggunakan pengekodan aksara UTF-8.
+icsMalformedError=Gagal menghuraikan fail iCalendar (ics). Pastikan bahawa fail mematuhi sintaks fail iCalendar (ics).
+itemModifiedOnServerTitle=Item diubah dalam pelayan
+itemModifiedOnServer=Item ini baru sahaja ditukar dalam pelayan.\n
+modifyWillLoseData=Perubahan yang anda kemukakan ini akan menulis ganti perubahan yang dibuat dalam pelayan.
+deleteWillLoseData=Menghapuskan item ini akan menyebabkan kehilangan perubahan dibuat pada pelayan.
+updateFromServer=Buang perubahan saya dan muat semula
+proceedModify=Kemukakan sahaja perubahan saya
+proceedDelete=Buang sahaja
+dav_notDav=Sumber dalam %1$S samada bukan himpunan DAV atau tidak tersedia
+dav_davNotCaldav=Sumber dalam %1$S adalah himpunan DAV tetapi bukan kalendar CalDAV
+itemPutError=Ada ralat menyimpan item dalam pelayan.
+itemDeleteError=Ada ralat menghapuskan item daripada pelayan.
+caldavRequestError=Ada ralat semasa menghantar jemputan.
+caldavResponseError=Ada ralat semasa menghantar respons.
+caldavRequestStatusCode=Kod Status: %1$S
+caldavRequestStatusCodeStringGeneric=Permintaan tidak dapat diproses.
+caldavRequestStatusCodeString400=Permintaan mengandungi sintaks tidak betul dan tidak boleh diproses.
+caldavRequestStatusCodeString403=Pengguna tiada izin yang mencukupi untuk melaksanakan permintaan.
+caldavRequestStatusCodeString404=Sumber tidak ditemui.
+caldavRequestStatusCodeString409=Sumber bercanggahan.
+caldavRequestStatusCodeString412=Prasyarat gagal.
+caldavRequestStatusCodeString500=Ralat pelayan dalaman.
+caldavRequestStatusCodeString502=Get laluan rosak (Konfigurasi proksi?).
+caldavRequestStatusCodeString503=Ralat pelayan dalaman (Kebocoran pelayan sementara?).
+caldavRedirectTitle=Kemaskini lokasi kalendar %1$S?
+caldavRedirectText=Permintaan untuk %1$S diarahkan semula ke lokasi baru. Anda mahu tukar lokasi kepada nilai berikut?
+caldavRedirectDisableCalendar=Nyahdayakan Kalendar
+
+
+# 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=Amerika/New_York, Amerika/Chicago, Amerika/Denver, Amerika/Phoenix, Amerika/Los_Angeles, Amerika/Anchorage, Amerika/Adak, Pasifik/Honolulu, Amerika/Puerto_Rico, Amerika/Halifax, Amerika/Mexico_City, Amerika/Argentina/Buenos_Aires, Amerika/Sao_Paulo, Eropah/London, Eropah/Paris, Asia/Singapura, Asia/Tokyo, Afrika/Lagos, Afrika/Johannesburg, Afrika/Nairobi, Australia/Brisbane, Australia/Sydney, Pasifik/Auckland
+
+# 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=Amaran: Zon masa sistem pengoperasian "%1$S"\ntidak lagi sepadan dengan zon masa ZoneInfo dalaman "%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=Melangkau zon masa Sistem Pengoperasian '%1$S'.
+
+# "Skipping locale timezone 'America/New_Yawk'."
+# Testing note: Skipping occurs if a likelyTimezone id is unknown or misspelled.
+SkippingLocaleTimezone=Melangkau zon masa lokal '%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=Amaran: Menggunakan zon masa "terapung".\nTiada data zon masa ZoneInfo yang sepadan dengan data zon masa sistem pengoperasian.
+
+# "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=Amaran: Menggunakan zon masa anggaran\n %1$S(UTC%2$S).\n%3$S\n%4$S
+
+# Testing note: "Almost match" timezones include Cairo on W2k.
+TZAlmostMatchesOSDifferAtMostAWeek=Zon masa ZoneInfo ini hampir sepadan dengan zon masa sistem pengoperasian.\nMengikut peraturan ini, tempoh peralihan antara siang dan masa piawai \nberbeza selama hampir seminggu daripada peralihan zon masa sistem pengoperasian.\nMungkin akan terjadi percanggahan data, seperti perbezaan tarikh mula,\n atau perbezaan peraturan, atau perbezaan anggaran untuk peraturan kalendar bukan-Gregory.
+
+TZSeemsToMatchOS=Zon masa ZoneInfo ini seakan sepadan dengan zon masa sistem pengoperasian tahun ini.
+
+# LOCALIZATION NOTE (TZFromOS):
+# used for a display of a chosen timezone
+# %1$S will be replaced with the name of a timezone
+TZFromOS=Zon masa ZoneInfo ini dipilih berdasarkan pada pengenal pasti zon masa sistem pengoperasian\n "%1$S".
+
+# Localization note (TZFromLocale): Substitute name of your locale language.
+TZFromLocale=Zon masa ZoneInfo ini dipilih berdasarkan pada pemadanan zon masa sistem pengoperasian\nyang seakan sama dengan zon masa pengguna internet yang menggunakan Bahasa Inggeris AS.
+
+TZFromKnownTimezones=Zon masa ZoneInfo ini dipilih berdasarkan pada pemadanan zon masa sistem pengoperasian\ndengan turutan abjad atau id zon masa.
+
+# Print Layout
+formatListName = Senarai
+weekPrinterName = Perancang Mingguan
+monthPrinterName = Grid Bulanan
+tasksWithNoDueDate = Tugasan tanpa tarikh genap tempoh
+
+# Providers
+caldavName=CalDAV
+compositeName=Karangan
+icsName=iCalendar (ICS)
+memoryName=Sementara (memori)
+storageName=Lokal (SQLite)
+
+# Used in created html code for list layout print and html export
+htmlPrefixTitle=Tajuk
+htmlPrefixWhen=Pada
+htmlPrefixLocation=Lokasi
+htmlPrefixDescription=Keterangan
+htmlTaskCompleted=%1$S (selesai)
+
+# Categories
+addCategory=Tambah Kategori
+multipleCategories=Berbilang Kategori
+
+today=Hari ini
+tomorrow=Esok
+yesterday=Semalam
+
+#Today pane
+eventsonly=Acara
+eventsandtasks=Acara dan Tugasan
+tasksonly=Tugasan
+shortcalendarweek=MK
+
+go=Teruskan
+
+# 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=berikut
+next2=berikut
+last1=terakhir
+last2=terakhir
+
+# Alarm Dialog
+# LOCALIZATION NOTE (alarmWindowTitle.label): Semi-colon list of plural
+# forms. See: http://developer.mozilla.org/en/Localization_and_Plurals
+alarmWindowTitle.label=#1 Peringatan
+
+# 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=Bermula: %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=Hari ini pada %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=Esok pada %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=Semalam pada %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=Keterangan Mozilla Piawai
+alarmDefaultSummary=Ringkasan Mozilla Piawai
+
+# LOCALIZATION NOTE (alarmSnoozeLimitExceeded): Semi-colon list of plural
+# forms.
+alarmSnoozeLimitExceeded=Anda tidak boleh lena penggera melebihi #1 bulan.;Anda tidak boleh lena penggera melebihi #1 bulan.
+
+taskDetailsStatusNeedsAction=Perlu Tindakan
+
+# 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%% Selesai
+taskDetailsStatusCompleted=Selesai
+
+# 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=Selesai pada %1$S
+taskDetailsStatusCancelled=Dibatalkan
+
+gettingCalendarInfoCommon=Menyemak Kalendar…
+
+# 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=Menyemak Kalendar %1$S daripada %2$S
+
+# LOCALIZATION NOTE (errorCode):
+# %1$S will be replaced with the number of an error code
+errorCode=Kod ralat: %1$S
+
+# LOCALIZATION NOTE (errorDescription):
+# %1$S will be replaced with the description of an error
+errorDescription=Keterangan: %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=Ada ralat ketika menulis kalendar %1$S! Sila rujuk di bawah untuk keterangan lanjut.
+
+# LOCALIZATION NOTE (errorWritingDetails):
+# This will be displayed in the detail section of the error dialog
+errorWritingDetails=Jika anda melihat mesej ini selepas melenakan atau mengabaikan peringatan dan ini adalah untuk kalendar yang anda tidak mahu tambah atau edit acaranya, anda boleh tandakan kalendar ini sebagai baca-sahaja untuk mengelakkannya pada masa akan datang. Untuk berbuat demikian, pergi ke sifat kalendar dengan klik-kanan pada kalendar ini dalam senarai dalam paparan kalendar atau tugas.
+
+# 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=Kalendar %1$S tidak tersedia buat seketika
+
+# 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=Kalendar %1$S adalah baca-sahaja
+
+taskEditInstructions=Klik sini untuk menambah tugasan baru
+taskEditInstructionsReadonly=Sila pilih kalendar yang boleh ditulis
+taskEditInstructionsCapability=Sila pilih kalendar yang menyokong tugasan
+
+eventDetailsStartDate=Mula:
+eventDetailsEndDate=Tamat:
+
+# 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=Minggu Kalendar: %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=Minggu Kalendar: %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=MK: %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=MK: %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 hari
+dueInHours=#1 jam;#1 jam
+dueInLessThanOneHour=< 1 jam
+
+# 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=nominative
+
+# 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=%2$S – %3$S %1$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 commmon year of both dates
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalBetweenMonths=%2$S %1$S – %4$S %3$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=%2$S %1$S, %3$S – %5$S %4$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= tiada tarikh mula atau tamat tempoh
+# 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=tarikh mula %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=tarikh tamat %1$S %2$S
+
+# LOCALIZATION NOTE (dragLabelTasksWithOnlyEntryDate
+# dragLabelTasksWithOnlyDueDate)
+# Labels that appear while dragging a task with only
+# entry date OR due date
+dragLabelTasksWithOnlyEntryDate=Masa mula
+dragLabelTasksWithOnlyDueDate=Tamat pada
+
+deleteTaskLabel=Buang Tugasan
+deleteTaskMessage=Anda pasti mahu menghapuskan Tugasan ini?
+deleteTaskAccesskey=g
+deleteItemLabel=Buang
+deleteItemMessage=Anda pasti mahu menghapuskan Item ini?
+deleteItemAccesskey=g
+deleteEventLabel=Buang Acara
+deleteEventMessage=Anda pasti mahu menghapuskan Acara ini?
+deleteEventAccesskey=g
+
+calendarPropertiesEveryMinute=Setiap minit;Setiap #1 minit
+
+# LOCALIZATION NOTE (extractUsing)
+# Used in message header
+# %1$S will be replaced with language name from languageNames.properties
+extractUsing=Gunakan %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=Gunakan %1$S (%2$S)
+
+# LOCALIZATION NOTE (unit)
+# Used to determine the correct plural form of a unit
+unitMinutes=#1 minit
+unitHours=#1 jam;#1 jam
+unitDays=#1 hari
+unitWeeks=#1 minggu;#1 minggu
+
+# 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=Papar %1$S
+hideCalendar=Sorok %1$S
+# uses the access key calendar.context.showonly.accesskey
+showOnlyCalendar=Papar Hanya %1$S
+
+# LOCALIZATION NOTE (modifyConflict)
+# Used by the event dialog to resolve item modification conflicts.
+modifyConflictPromptTitle=Konflik Pengubahsuaian Item
+modifyConflictPromptMessage=Item yang sedang diedit dalam dialog telah diubahsuai sejak mula dibuka.
+modifyConflictPromptButton1=Tulis ganti perubahan yang lain
+modifyConflictPromptButton2=Buang perubahan ini
+
+# 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 orignal
+# invited attendee gets replaced
+dialog.attendee.append.delegatedFrom=(mewakili %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 orignal
+# invited attendee gets replaced
+dialog.attendee.append.delegatedTo=(mewakilkan %1$S)
+
+# Accessible description of a grid calendar with no selected date
+minimonthNoSelectedDate=Tiada tarikh dipilih
+
+# LOCALIZATION NOTE (noItemsInCalendarFile2):
+# %1$S will be replaced with file path
+noItemsInCalendarFile2=Cannot import from %1$S. There are no importable items in this file.
+# 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=Your calendar data is not compatible with this version of %1$S. The calendar data in your profile was updated by a newer version of %1$S. A backup of the data file has been created, named "%2$S". Continuing with a newly created data file.
+# LOCALIZATION NOTE (multiweekViewWeek):
+# 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.
+multiweekViewWeek=W %1$S
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendarCreation.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendarCreation.dtd
new file mode 100644
index 0000000000..c2edd26bd8
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 "Cipta Kalendar Baru" >
+<!ENTITY wizard.label "Cipta kalendar baru" >
+<!ENTITY wizard.description "Cari kalendar anda" >
+
+<!ENTITY initialpage.description "Kalendar anda boleh disimpan di dalam komputer, atau disimpan di dalam pelayan supaya boleh diakses secara jauh, atau dikongsikan dengan rakan atau rakan sejawat." >
+<!ENTITY initialpage.computer.label "Dalam Komputer Saya">
+<!ENTITY initialpage.network.label "Dalam Rangkaian">
+
+<!ENTITY locationpage.description "Sediakan maklumat yang diperlukan untuk mengakses kalendar anda secara jauh" >
+<!ENTITY locationpage.login.description "Pilihan: masukkan nama pengguna dan kata laluan" >
+<!ENTITY locationpage.username.label "Nama pengguna:" >
+<!ENTITY locationpage.password.label "Kata laluan:" >
+
+<!ENTITY custompage.shortdescription "Sesuaikan kalendar anda" >
+<!ENTITY custompage.longdescription "Anda boleh beri gelaran untuk kalendar anda dan warnakan acara dalam kalendar ini." >
+
+<!ENTITY finishpage.shortdescription "Kalendar Dicipta" >
+<!ENTITY finishpage.longdescription "Kalendar anda sudah dicipta." >
+
+<!-- Below are new strings for the revised new calendar dialog. The above strings should be
+ removed/renamed later on -->
+
+<!ENTITY sourcetabs.other.label "Lain-lain">
+
+<!ENTITY buttons.create.label "Cipta Kalendar">
+<!ENTITY buttons.create.accesskey "r">
+
+<!ENTITY buttons.find.label "Cari Kalendar">
+<!ENTITY buttons.find.accesskey "C">
+
+<!ENTITY buttons.back.label "Undur">
+<!ENTITY buttons.back.accesskey "U">
+
+<!ENTITY buttons.subscribe.label "Langgan">
+<!ENTITY buttons.subscribe.accesskey "L">
+
+<!ENTITY calendartype.label "Jenis Kalendar:">
+<!ENTITY location.label "Lokasi:">
+<!ENTITY location.placeholder "Nama URL atau hos pelayan kalendar">
+
+<!ENTITY network.nocredentials.label "Lokasi ini tidak perlukan kelayakan">
+<!ENTITY network.loading.description "Sila tunggu sementara kalendar anda akan ditemukan.">
+<!ENTITY network.notfound.description "Tidak dapat mencari kalendar di lokasi ini. Sila semak tetapan anda.">
+<!ENTITY network.authfail.description "Kelayakan yang anda masukkan tidak diterima. Sila semak tetapan anda.">
+
+<!ENTITY network.subscribe.single.description "Sila pilih kalendar yang anda mahu langgan.">
+<!ENTITY network.subscribe.multiple.description "Pelbagai jenis kalendar ada disediakan di lokasi ini. Sila pilih jenis kalendar, kemudian tandakan kalendar yang anda mahu langgan.">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendarCreation.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/calendarCreation.properties
new file mode 100644
index 0000000000..941a9a5b3c
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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=Sila masukkan lokasi yang sah.
+error.alreadyExists=Anda sudah melanggan kalendar di lokasi ini.
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/categories.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/categories.properties
new file mode 100644
index 0000000000..6076089f79
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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=Ulang tahun,Hari Lahir,Perniagaan,Telefon,Klien,Pertandingan,Pelanggan,Kegemaran,Susulan,Hadiah,Percutian,Idea,Isu,Mesyuarat,Pelbagai,Peribadi,Projek,Cuti Umum,Status,Pembekal,Kembara,Cuti
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/dateFormat.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/dateFormat.properties
new file mode 100644
index 0000000000..a6c90aab86
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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=Januari
+month.2.name=Februari
+month.3.name=Mac
+month.4.name=April
+month.5.name=Mei
+month.6.name=Jun
+month.7.name=Julai
+month.8.name=Ogos
+month.9.name=September
+month.10.name=Oktober
+month.11.name=November
+month.12.name=Disember
+
+# 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=Januari
+month.2.genitive=Februari
+month.3.genitive=Mac
+month.4.genitive=April
+month.5.genitive=Mei
+month.6.genitive=Jun
+month.7.genitive=Julai
+month.8.genitive=Ogos
+month.9.genitive=September
+month.10.genitive=Oktober
+month.11.genitive=November
+month.12.genitive=Disember
+
+month.1.Mmm=Jan
+month.2.Mmm=Feb
+month.3.Mmm=Mac
+month.4.Mmm=Apr
+month.5.Mmm=Mei
+month.6.Mmm=Jun
+month.7.Mmm=Jul
+month.8.Mmm=Ogo
+month.9.Mmm=Sep
+month.10.Mmm=Okt
+month.11.Mmm=Nov
+month.12.Mmm=Dis
+
+day.1.name=Ahad
+day.2.name=Isnin
+day.3.name=Selasa
+day.4.name=Rabu
+day.5.name=Khamis
+day.6.name=Jumaat
+day.7.name=Sabtu
+
+day.1.Mmm=Aha
+day.2.Mmm=Isn
+day.3.Mmm=Sel
+day.4.Mmm=Rab
+day.5.Mmm=Kha
+day.6.Mmm=Jum
+day.7.Mmm=Sab
+
+# Can someone tell me why we're not counting from zero?
+day.1.short=Ah
+day.2.short=Is
+day.3.short=Se
+day.4.short=Ra
+day.5.short=Kh
+day.6.short=Ju
+day.7.short=Sa
+
+# 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=Tengahari
+midnight=Tengah Malam
+
+AllDay=Sepanjang Hari
+Repeating=(Pengulangan)
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/dialogs/calendar-event-dialog-reminder.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/dialogs/calendar-event-dialog-reminder.dtd
new file mode 100644
index 0000000000..8bf7ed8f82
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/dialogs/calendar-event-dialog-reminder.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/. -->
+
+<!ENTITY reminderdialog.title "Tetapkan Peringatan">
+<!ENTITY reminder.add.label "Tambah">
+<!ENTITY reminder.add.accesskey "T">
+<!ENTITY reminder.remove.label "Buang">
+<!ENTITY reminder.remove.accesskey "B">
+
+<!ENTITY reminder.reminderDetails.label "Butiran Peringatan">
+<!ENTITY reminder.action.label "Pilih Tindakan Peringatan">
+
+<!ENTITY reminder.action.alert.label "Papar Amaran">
+<!ENTITY reminder.action.email.label "Hantar E-mel">
+
+<!ENTITY alarm.units.minutes "minit" >
+<!ENTITY alarm.units.hours "jam" >
+<!ENTITY alarm.units.days "hari" >
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/global.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/global.dtd
new file mode 100644
index 0000000000..7917f8b017
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/global.dtd
@@ -0,0 +1,52 @@
+<!-- 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 "Tengah Malam" >
+<!ENTITY time.noon "Tengahari" >
+
+<!-- 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 "Aha" >
+<!ENTITY day.1.Ddd.accesskey "A">
+<!ENTITY day.2.Ddd "Isn" >
+<!ENTITY day.2.Ddd.accesskey "I">
+<!ENTITY day.3.Ddd "Sel" >
+<!ENTITY day.3.Ddd.accesskey "S">
+<!ENTITY day.4.Ddd "Rab" >
+<!ENTITY day.4.Ddd.accesskey "R">
+<!ENTITY day.5.Ddd "Kha" >
+<!ENTITY day.5.Ddd.accesskey "K">
+<!ENTITY day.6.Ddd "Jum" >
+<!ENTITY day.6.Ddd.accesskey "J">
+<!ENTITY day.7.Ddd "Sab" >
+<!ENTITY day.7.Ddd.accesskey "S">
+
+<!ENTITY day.1.name "Ahad" >
+<!ENTITY day.2.name "Isnin" >
+<!ENTITY day.3.name "Selasa" >
+<!ENTITY day.4.name "Rabu" >
+<!ENTITY day.5.name "Khamis" >
+<!ENTITY day.6.name "Jumaat" >
+<!ENTITY day.7.name "Sabtu" >
+
+<!ENTITY month.1.name "Januari" >
+<!ENTITY month.2.name "Februari" >
+<!ENTITY month.3.name "Mac" >
+<!ENTITY month.4.name "April" >
+<!ENTITY month.5.name "Mei" >
+<!ENTITY month.6.name "Jun" >
+<!ENTITY month.7.name "Julai" >
+<!ENTITY month.8.name "Ogos" >
+<!ENTITY month.9.name "September" >
+<!ENTITY month.10.name "Oktober" >
+<!ENTITY month.11.name "November" >
+<!ENTITY month.12.name "Disember" >
+
+<!ENTITY onemonthbackward.tooltip "Satu Bulan Lepas" >
+<!ENTITY onemonthforward.tooltip "Satu Bulan Akan Datang" >
+<!ENTITY showToday.tooltip "Pergi ke Hari ini">
+<!ENTITY onedayforward.tooltip "Satu Hari Akan Datang">
+<!ENTITY onedaybackward.tooltip "Satu Hari Lepas">
+<!ENTITY showselectedday.tooltip "Papar acara untuk hari yang dipilih">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/menuOverlay.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/menuOverlay.dtd
new file mode 100644
index 0000000000..5ad0f95583
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 "Acara Baru…">
+<!ENTITY event.new.event.accesskey "B">
+
+<!ENTITY event.new.task "Tugasan Baru…">
+<!ENTITY event.new.task.accesskey "g">
+
+<!ENTITY calendar.import.label "Import…">
+<!ENTITY calendar.import.accesskey "I">
+
+<!ENTITY calendar.export.label "Eksport…">
+<!ENTITY calendar.export.accesskey "E">
+
+<!ENTITY calendar.publish.label "Terbitkan…">
+<!ENTITY calendar.publish.accesskey "b">
+
+<!ENTITY calendar.deletecalendar.label "Buang Kalendar yang Dipilih…">
+<!ENTITY calendar.deletecalendar.accesskey "B">
+<!ENTITY calendar.unsubscribecalendar.label "Batal langganan Kalendar yang Dipilih…">
+<!ENTITY calendar.unsubscribecalendar.accesskey "B">
+
+<!-- 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 "Buang Kalendar Dipilih…">
+<!ENTITY calendar.removecalendar.accesskey "B">
+
+
+<!ENTITY calendar.menu.customize.label "Penyesuaian…">
+<!ENTITY calendar.menu.customize.accesskey "P">
+
+<!ENTITY showUnifinderCmd.label "Cari Acara">
+<!ENTITY showUnifinderCmd.accesskey "C">
+<!ENTITY showUnifinderCmd.tooltip "Togol anak tetingkap carian acara">
+
+<!ENTITY calendar.displaytodos.checkbox.label "Papar Tugasan dalam Kalendar">
+<!ENTITY calendar.displaytodos.checkbox.accesskey "T">
+
+<!ENTITY goTodayCmd.label "Hari ini">
+<!ENTITY goTodayCmd.accesskey "H">
+
+<!ENTITY showCurrentView.label "Paparan Semasa">
+<!ENTITY showCurrentView.accesskey "P">
+
+<!ENTITY calendar.properties.label "Sifat Kalendar…">
+<!ENTITY calendar.properties.accesskey "a">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/migration.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/migration.dtd
new file mode 100644
index 0000000000..fa04183390
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 "Data Import: &brandFullName;">
+<!ENTITY migration.welcome "Selamat Datang">
+<!ENTITY migration.importing "Mengimport">
+<!ENTITY migration.list.description "&brandShortName; boleh mengimport data kalendar daripada banyak aplikasi yang popular. Data daripada aplikasi berikut telah dijumpai dalam komputer anda. Sila pilih data yang anda mahu import.">
+<!ENTITY migration.progress.description "Mengimport data yang dipilih">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/migration.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/migration.properties
new file mode 100644
index 0000000000..940d97807c
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 = Memindahkan %1$S…
+
+# The next two lines are duplicated from migration.dtd until there is branding
+# for lightning
+migrationTitle = Data Import: %1$S
+migrationDescription=%1$S boleh mengimport data daripada banyak aplikasi yang popular. Data daripada aplikasi berikut telah ditemui dalam komputer anda. Sila pilih aplikasi yang anda mahu import data daripadanya.
+finished = Selesai
+disableExtTitle = Ekstensi Tidak Serasi Ditemukan
+disableExtText = Anda ada memasang Ekstensi Kalendar Mozilla lama yang tidak serasi dengan Lightning. Ekstensi ini akan dinyahdayakan dan %1$S akan dimulakan semula.
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/provider-uninstall.dtd b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/provider-uninstall.dtd
new file mode 100644
index 0000000000..cbeb8fb5b7
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/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 "Nyahpasang Penyedia">
+<!ENTITY providerUninstall.accept.label "Batal langganan yang Dipilih">
+<!ENTITY providerUninstall.accept.accesskey "N">
+<!ENTITY providerUninstall.cancel.label "Simpan Add-on">
+<!ENTITY providerUninstall.cancel.accesskey "S">
+<!ENTITY providerUninstall.preName.label "Anda telah meminta untuk nyahpasang atau nyahdayakan:">
+<!ENTITY providerUninstall.postName.label "Ini akan menyebabkan kalendar di bawah dinyahdayakan.">
+<!ENTITY providerUninstall.reinstallNote.label "Melainkan anda bercadang untuk memasang semula, anda boleh memilih untuk berhenti melanggan daripada penyedia kalendar ini.">
diff --git a/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/timezones.properties b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/timezones.properties
new file mode 100644
index 0000000000..15a63d2643
--- /dev/null
+++ b/thunderbird-l10n/ms/chrome/ms/locale/ms/calendar/timezones.properties
@@ -0,0 +1,482 @@
+# 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=Takrif Zon Masa untuk Kalendar Mozilla
+extensions.calendar-timezones@mozilla.org.description=Takrif zon masa yang diperlukan oleh Lightning
+extensions.calendar-timezones@mozilla.org.creator=Projek Kalendar Mozilla
+
+pref.timezone.floating=Waktu Tempatan
+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=Afrika/Abidjan
+pref.timezone.Africa.Accra=Afrika/Accra
+pref.timezone.Africa.Addis_Ababa=Afrika/Addis Ababa
+pref.timezone.Africa.Algiers=Afrika/Algiers
+pref.timezone.Africa.Asmara=Afrika/Asmara
+pref.timezone.Africa.Bamako=Afrika/Bamako
+pref.timezone.Africa.Bangui=Afrika/Bangui
+pref.timezone.Africa.Banjul=Afrika/Banjul
+pref.timezone.Africa.Bissau=Afrika/Bissau
+pref.timezone.Africa.Blantyre=Afrika/Blantyre
+pref.timezone.Africa.Brazzaville=Afrika/Brazzaville
+pref.timezone.Africa.Bujumbura=Afrika/Bujumbura
+pref.timezone.Africa.Cairo=Afrika/Kaherah
+pref.timezone.Africa.Casablanca=Afrika/Casablanca
+pref.timezone.Africa.Ceuta=Afrika/Ceuta
+pref.timezone.Africa.Conakry=Afrika/Conakry
+pref.timezone.Africa.Dakar=Afrika/Dakar
+pref.timezone.Africa.Dar_es_Salaam=Afrika/Dar es Salaam
+pref.timezone.Africa.Djibouti=Afrika/Djibouti
+pref.timezone.Africa.Douala=Afrika/Douala
+pref.timezone.Africa.El_Aaiun=Afrika/El Aaiun
+pref.timezone.Africa.Freetown=Afrika/Freetown
+pref.timezone.Africa.Gaborone=Afrika/Gaborone
+pref.timezone.Africa.Harare=Afrika/Harare
+pref.timezone.Africa.Johannesburg=Afrika/Johannesburg
+pref.timezone.Africa.Kampala=Afrika/Kampala
+pref.timezone.Africa.Khartoum=Afrika/Khartoum
+pref.timezone.Africa.Kigali=Afrika/Kigali
+pref.timezone.Africa.Kinshasa=Afrika/Kinshasa
+pref.timezone.Africa.Lagos=Afrika/Lagos
+pref.timezone.Africa.Libreville=Afrika/Libreville
+pref.timezone.Africa.Lome=Afrika/Lome
+pref.timezone.Africa.Luanda=Afrika/Luanda
+pref.timezone.Africa.Lubumbashi=Afrika/Lubumbashi
+pref.timezone.Africa.Lusaka=Afrika/Lusaka
+pref.timezone.Africa.Malabo=Afrika/Malabo
+pref.timezone.Africa.Maputo=Afrika/Maputo
+pref.timezone.Africa.Maseru=Afrika/Maseru
+pref.timezone.Africa.Mbabane=Afrika/Mbabane
+pref.timezone.Africa.Mogadishu=Afrika/Mogadishu
+pref.timezone.Africa.Monrovia=Afrika/Monrovia
+pref.timezone.Africa.Nairobi=Afrika/Nairobi
+pref.timezone.Africa.Ndjamena=Afrika/Ndjamena
+pref.timezone.Africa.Niamey=Afrika/Niamey
+pref.timezone.Africa.Nouakchott=Afrika/Nouakchott
+pref.timezone.Africa.Ouagadougou=Afrika/Ouagadougou
+pref.timezone.Africa.Porto-Novo=Afrika/Porto-Novo
+pref.timezone.Africa.Sao_Tome=Afrika/Sao Tome
+pref.timezone.Africa.Tripoli=Afrika/Tripoli
+pref.timezone.Africa.Tunis=Afrika/Tunis
+pref.timezone.Africa.Windhoek=Afrika/Windhoek
+pref.timezone.America.Adak=Amerika/Adak
+pref.timezone.America.Anchorage=Amerika/Anchorage
+pref.timezone.America.Anguilla=Amerika/Anguilla
+pref.timezone.America.Antigua=Amerika/Antigua
+pref.timezone.America.Araguaina=Amerika/Araguaina
+pref.timezone.America.Argentina.Buenos_Aires=Amerika/Argentina/Buenos Aires
+pref.timezone.America.Argentina.Catamarca=Amerika/Argentina/Catamarca
+pref.timezone.America.Argentina.Cordoba=Amerika/Argentina/Cordoba
+pref.timezone.America.Argentina.Jujuy=Amerika/Argentina/Jujuy
+pref.timezone.America.Argentina.La_Rioja=Amerika/Argentina/La Rioja
+pref.timezone.America.Argentina.Mendoza=Amerika/Argentina/Mendoza
+pref.timezone.America.Argentina.Rio_Gallegos=Amerika/Argentina/Rio Gallegos
+pref.timezone.America.Argentina.San_Juan=Amerika/Argentina/San Juan
+pref.timezone.America.Argentina.Tucuman=Amerika/Argentina/Tucuman
+pref.timezone.America.Argentina.Ushuaia=Amerika/Argentina/Ushuaia
+pref.timezone.America.Aruba=Amerika/Aruba
+pref.timezone.America.Asuncion=Amerika/Asuncion
+pref.timezone.America.Atikokan=Amerika/Atikokan
+pref.timezone.America.Bahia=Amerika/Bahia
+pref.timezone.America.Barbados=Amerika/Barbados
+pref.timezone.America.Belem=Amerika/Belem
+pref.timezone.America.Belize=Amerika/Belize
+pref.timezone.America.Blanc-Sablon=Amerika/Blanc-Sablon
+pref.timezone.America.Boa_Vista=Amerika/Boa Vista
+pref.timezone.America.Bogota=Amerika/Bogota
+pref.timezone.America.Boise=Amerika/Boise
+pref.timezone.America.Cambridge_Bay=Amerika/Cambridge Bay
+pref.timezone.America.Campo_Grande=Amerika/Campo Grande
+pref.timezone.America.Cancun=Amerika/Cancun
+pref.timezone.America.Caracas=Amerika/Caracas
+pref.timezone.America.Cayenne=Amerika/Cayenne
+pref.timezone.America.Cayman=Amerika/Cayman
+pref.timezone.America.Chicago=Amerika/Chicago
+pref.timezone.America.Chihuahua=Amerika/Chihuahua
+pref.timezone.America.Costa_Rica=Amerika/Costa Rica
+pref.timezone.America.Cuiaba=Amerika/Cuiaba
+pref.timezone.America.Curacao=Amerika/Curacao
+pref.timezone.America.Danmarkshavn=Amerika/Danmarkshavn
+pref.timezone.America.Dawson=Amerika/Dawson
+pref.timezone.America.Dawson_Creek=Amerika/Dawson Creek
+pref.timezone.America.Denver=Amerika/Denver
+pref.timezone.America.Detroit=Amerika/Detroit
+pref.timezone.America.Dominica=Amerika/Dominica
+pref.timezone.America.Edmonton=Amerika/Edmonton
+pref.timezone.America.Eirunepe=Amerika/Eirunepe
+pref.timezone.America.El_Salvador=Amerika/El Salvador
+pref.timezone.America.Fortaleza=Amerika/Fortaleza
+pref.timezone.America.Glace_Bay=Amerika/Glace Bay
+pref.timezone.America.Godthab=Amerika/Godthab
+pref.timezone.America.Goose_Bay=Amerika/Goose Bay
+pref.timezone.America.Grand_Turk=Amerika/Grand Turk
+pref.timezone.America.Grenada=Amerika/Grenada
+pref.timezone.America.Guadeloupe=Amerika/Guadeloupe
+pref.timezone.America.Guatemala=Amerika/Guatemala
+pref.timezone.America.Guayaquil=Amerika/Guayaquil
+pref.timezone.America.Guyana=Amerika/Guyana
+pref.timezone.America.Halifax=Amerika/Halifax
+pref.timezone.America.Havana=Amerika/Havana
+pref.timezone.America.Hermosillo=Amerika/Hermosillo
+pref.timezone.America.Indiana.Indianapolis=Amerika/Indiana/Indianapolis
+pref.timezone.America.Indiana.Knox=Amerika/Indiana/Knox
+pref.timezone.America.Indiana.Marengo=Amerika/Indiana/Marengo
+pref.timezone.America.Indiana.Petersburg=Amerika/Indiana/Petersburg
+pref.timezone.America.Indiana.Vevay=Amerika/Indiana/Vevay
+pref.timezone.America.Indiana.Vincennes=Amerika/Indiana/Vincennes
+pref.timezone.America.Inuvik=Amerika/Inuvik
+pref.timezone.America.Iqaluit=Amerika/Iqaluit
+pref.timezone.America.Jamaica=Amerika/Jamaica
+pref.timezone.America.Juneau=Amerika/Juneau
+pref.timezone.America.Kentucky.Louisville=Amerika/Kentucky/Louisville
+pref.timezone.America.Kentucky.Monticello=Amerika/Kentucky/Monticello
+pref.timezone.America.La_Paz=Amerika/La Paz
+pref.timezone.America.Lima=Amerika/Lima
+pref.timezone.America.Los_Angeles=Amerika/Los Angeles
+pref.timezone.America.Maceio=Amerika/Maceio
+pref.timezone.America.Managua=Amerika/Managua
+pref.timezone.America.Manaus=Amerika/Manaus
+pref.timezone.America.Martinique=Amerika/Martinique
+pref.timezone.America.Mazatlan=Amerika/Mazatlan
+pref.timezone.America.Menominee=Amerika/Menominee
+pref.timezone.America.Merida=Amerika/Merida
+pref.timezone.America.Mexico_City=Amerika/Mexico City
+pref.timezone.America.Miquelon=Amerika/Miquelon
+pref.timezone.America.Moncton=Amerika/Moncton
+pref.timezone.America.Monterrey=Amerika/Monterrey
+pref.timezone.America.Montevideo=Amerika/Montevideo
+pref.timezone.America.Montreal=Amerika/Montreal
+pref.timezone.America.Montserrat=Amerika/Montserrat
+pref.timezone.America.Nassau=Amerika/Nassau
+pref.timezone.America.New_York=Amerika/New York
+pref.timezone.America.Nipigon=Amerika/Nipigon
+pref.timezone.America.Nome=Amerika/Nome
+pref.timezone.America.Noronha=Amerika/Noronha
+pref.timezone.America.North_Dakota.Center=Amerika/North Dakota/Center
+pref.timezone.America.North_Dakota.New_Salem=Amerika/North Dakota/New Salem
+pref.timezone.America.Panama=Amerika/Panama
+pref.timezone.America.Pangnirtung=Amerika/Pangnirtung
+pref.timezone.America.Paramaribo=Amerika/Paramaribo
+pref.timezone.America.Phoenix=Amerika/Phoenix
+pref.timezone.America.Port-au-Prince=Amerika/Port-au-Prince
+pref.timezone.America.Port_of_Spain=Amerika/Port of Spain
+pref.timezone.America.Porto_Velho=Amerika/Porto Velho
+pref.timezone.America.Puerto_Rico=Amerika/Puerto Rico
+pref.timezone.America.Rainy_River=Amerika/Rainy River
+pref.timezone.America.Rankin_Inlet=Amerika/Rankin Inlet
+pref.timezone.America.Recife=Amerika/Recife
+pref.timezone.America.Regina=Amerika/Regina
+pref.timezone.America.Rio_Branco=Amerika/Rio Branco
+pref.timezone.America.Santiago=Amerika/Santiago
+pref.timezone.America.Santo_Domingo=Amerika/Santo Domingo
+pref.timezone.America.Sao_Paulo=Amerika/Sao Paulo
+pref.timezone.America.Scoresbysund=Amerika/Scoresbysund
+pref.timezone.America.Shiprock=Amerika/Shiprock
+pref.timezone.America.St_Johns=Amerika/St. Johns
+pref.timezone.America.St_Kitts=Amerika/St. Kitts
+pref.timezone.America.St_Lucia=Amerika/St. Lucia
+pref.timezone.America.St_Thomas=Amerika/St. Thomas
+pref.timezone.America.St_Vincent=Amerika/St. Vincent
+pref.timezone.America.Swift_Current=Amerika/Swift Current
+pref.timezone.America.Tegucigalpa=Amerika/Tegucigalpa
+pref.timezone.America.Thule=Amerika/Thule
+pref.timezone.America.Thunder_Bay=Amerika/Thunder Bay
+pref.timezone.America.Tijuana=Amerika/Tijuana
+pref.timezone.America.Toronto=Amerika/Toronto
+pref.timezone.America.Tortola=Amerika/Tortola
+pref.timezone.America.Vancouver=Amerika/Vancouver
+pref.timezone.America.Whitehorse=Amerika/Whitehorse
+pref.timezone.America.Winnipeg=Amerika/Winnipeg
+pref.timezone.America.Yakutat=Amerika/Yakutat
+pref.timezone.America.Yellowknife=Amerika/Yellowknife
+pref.timezone.Antarctica.Casey=Antartika/Casey
+pref.timezone.Antarctica.Davis=Antartika/Davis
+pref.timezone.Antarctica.DumontDUrville=Antartika/DumontDUrville
+pref.timezone.Antarctica.Mawson=Antartika/Mawson
+pref.timezone.Antarctica.McMurdo=Antartika/McMurdo
+pref.timezone.Antarctica.Palmer=Antartika/Palmer
+pref.timezone.Antarctica.Rothera=Antartika/Rothera
+pref.timezone.Antarctica.South_Pole=Antartika/Kutub Selatan
+pref.timezone.Antarctica.Syowa=Antartika/Syowa
+pref.timezone.Antarctica.Vostok=Antartika/Vostok
+pref.timezone.Arctic.Longyearbyen=Artik/Longyearbyen
+pref.timezone.Asia.Aden=Asia/Aden
+pref.timezone.Asia.Almaty=Asia/Almaty
+pref.timezone.Asia.Amman=Asia/Amman
+pref.timezone.Asia.Anadyr=Asia/Anadyr
+pref.timezone.Asia.Aqtau=Asia/Aqtau
+pref.timezone.Asia.Aqtobe=Asia/Aqtobe
+pref.timezone.Asia.Ashgabat=Asia/Ashgabat
+pref.timezone.Asia.Baghdad=Asia/Baghdad
+pref.timezone.Asia.Bahrain=Asia/Bahrain
+pref.timezone.Asia.Baku=Asia/Baku
+pref.timezone.Asia.Bangkok=Asia/Bangkok
+pref.timezone.Asia.Beirut=Asia/Beirut
+pref.timezone.Asia.Bishkek=Asia/Bishkek
+pref.timezone.Asia.Brunei=Asia/Brunei
+pref.timezone.Asia.Choibalsan=Asia/Choibalsan
+pref.timezone.Asia.Chongqing=Asia/Chongqing
+pref.timezone.Asia.Colombo=Asia/Colombo
+pref.timezone.Asia.Damascus=Asia/Damascus
+pref.timezone.Asia.Dhaka=Asia/Dhaka
+pref.timezone.Asia.Dili=Asia/Dili
+pref.timezone.Asia.Dubai=Asia/Dubai
+pref.timezone.Asia.Dushanbe=Asia/Dushanbe
+pref.timezone.Asia.Gaza=Asia/Gaza
+pref.timezone.Asia.Harbin=Asia/Harbin
+pref.timezone.Asia.Hong_Kong=Asia/Hong Kong
+pref.timezone.Asia.Hovd=Asia/Hovd
+pref.timezone.Asia.Irkutsk=Asia/Irkutsk
+pref.timezone.Asia.Istanbul=Asia/Istanbul
+pref.timezone.Asia.Jakarta=Asia/Jakarta
+pref.timezone.Asia.Jayapura=Asia/Jayapura
+pref.timezone.Asia.Jerusalem=Asia/Jerusalem
+pref.timezone.Asia.Kabul=Asia/Kabul
+pref.timezone.Asia.Kamchatka=Asia/Kamchatka
+pref.timezone.Asia.Karachi=Asia/Karachi
+pref.timezone.Asia.Kashgar=Asia/Kashgar
+pref.timezone.Asia.Kathmandu=Asia/Kathmandu
+pref.timezone.Asia.Krasnoyarsk=Asia/Krasnoyarsk
+pref.timezone.Asia.Kuala_Lumpur=Asia/Kuala Lumpur
+pref.timezone.Asia.Kuching=Asia/Kuching
+pref.timezone.Asia.Kuwait=Asia/Kuwait
+pref.timezone.Asia.Macau=Asia/Macau
+pref.timezone.Asia.Magadan=Asia/Magadan
+pref.timezone.Asia.Makassar=Asia/Makassar
+pref.timezone.Asia.Manila=Asia/Manila
+pref.timezone.Asia.Muscat=Asia/Muscat
+pref.timezone.Asia.Nicosia=Asia/Nicosia
+pref.timezone.Asia.Novosibirsk=Asia/Novosibirsk
+pref.timezone.Asia.Omsk=Asia/Omsk
+pref.timezone.Asia.Oral=Asia/Oral
+pref.timezone.Asia.Phnom_Penh=Asia/Phnom Penh
+pref.timezone.Asia.Pontianak=Asia/Pontianak
+pref.timezone.Asia.Pyongyang=Asia/Pyongyang
+pref.timezone.Asia.Qatar=Asia/Qatar
+pref.timezone.Asia.Qyzylorda=Asia/Qyzylorda
+pref.timezone.Asia.Rangoon=Asia/Rangoon
+pref.timezone.Asia.Riyadh=Asia/Riyadh
+pref.timezone.Asia.Sakhalin=Asia/Sakhalin
+pref.timezone.Asia.Samarkand=Asia/Samarkand
+pref.timezone.Asia.Seoul=Asia/Seoul
+pref.timezone.Asia.Shanghai=Asia/Shanghai
+pref.timezone.Asia.Singapore=Asia/Singapura
+pref.timezone.Asia.Taipei=Asia/Taipei
+pref.timezone.Asia.Tashkent=Asia/Tashkent
+pref.timezone.Asia.Tbilisi=Asia/Tbilisi
+pref.timezone.Asia.Tehran=Asia/Tehran
+pref.timezone.Asia.Thimphu=Asia/Thimphu
+pref.timezone.Asia.Tokyo=Asia/Tokyo
+pref.timezone.Asia.Ulaanbaatar=Asia/Ulaanbaatar
+pref.timezone.Asia.Urumqi=Asia/Urumqi
+pref.timezone.Asia.Vientiane=Asia/Vientiane
+pref.timezone.Asia.Vladivostok=Asia/Vladivostok
+pref.timezone.Asia.Yakutsk=Asia/Yakutsk
+pref.timezone.Asia.Yekaterinburg=Asia/Yekaterinburg
+pref.timezone.Asia.Yerevan=Asia/Yerevan
+pref.timezone.Atlantic.Azores=Atlantic/Azores
+pref.timezone.Atlantic.Bermuda=Atlantik/Bermuda
+pref.timezone.Atlantic.Canary=Atlantik/Canary
+pref.timezone.Atlantic.Cape_Verde=Atlantik/Cape Verde
+pref.timezone.Atlantic.Faroe=Atlantik/Faroe
+pref.timezone.Atlantic.Madeira=Atlantik/Madeira
+pref.timezone.Atlantic.Reykjavik=Atlantik/Reykjavik
+pref.timezone.Atlantic.South_Georgia=Atlantik/South Georgia
+pref.timezone.Atlantic.St_Helena=Atlantik/St. Helena
+pref.timezone.Atlantic.Stanley=Atlantik/Stanley
+pref.timezone.Australia.Adelaide=Australia/Adelaide
+pref.timezone.Australia.Brisbane=Australia/Brisbane
+pref.timezone.Australia.Broken_Hill=Australia/Broken Hill
+pref.timezone.Australia.Currie=Australia/Currie
+pref.timezone.Australia.Darwin=Australia/Darwin
+pref.timezone.Australia.Eucla=Australia/Eucla
+pref.timezone.Australia.Hobart=Australia/Hobart
+pref.timezone.Australia.Lindeman=Australia/Lindeman
+pref.timezone.Australia.Lord_Howe=Australia/Lord Howe
+pref.timezone.Australia.Melbourne=Australia/Melbourne
+pref.timezone.Australia.Perth=Australia/Perth
+pref.timezone.Australia.Sydney=Australia/Sydney
+pref.timezone.Europe.Amsterdam=Eropah/Amsterdam
+pref.timezone.Europe.Andorra=Eropah/Andorra
+pref.timezone.Europe.Athens=Eropah/Athens
+pref.timezone.Europe.Belgrade=Eropah/Belgrade
+pref.timezone.Europe.Berlin=Eropah/Berlin
+pref.timezone.Europe.Bratislava=Eropah/Bratislava
+pref.timezone.Europe.Brussels=Eropah/Brussels
+pref.timezone.Europe.Bucharest=Eropah/Bucharest
+pref.timezone.Europe.Budapest=Eropah/Budapest
+pref.timezone.Europe.Chisinau=Eropah/Chisinau
+pref.timezone.Europe.Copenhagen=Eropah/Copenhagen
+pref.timezone.Europe.Dublin=Eropah/Dublin
+pref.timezone.Europe.Gibraltar=Eropah/Gibraltar
+pref.timezone.Europe.Guernsey=Eropah/Guernsey
+pref.timezone.Europe.Helsinki=Eropah/Helsinki
+pref.timezone.Europe.Isle_of_Man=Eropah/Isle of Man
+pref.timezone.Europe.Istanbul=Eropah/Istanbul
+pref.timezone.Europe.Jersey=Eropah/Jersey
+pref.timezone.Europe.Kaliningrad=Eropah/Kaliningrad
+pref.timezone.Europe.Kiev=Eropah/Kiev
+pref.timezone.Europe.Lisbon=Eropah/Lisbon
+pref.timezone.Europe.Ljubljana=Eropah/Ljubljana
+pref.timezone.Europe.London=Eropah/London
+pref.timezone.Europe.Luxembourg=Eropah/Luxembourg
+pref.timezone.Europe.Madrid=Eropah/Madrid
+pref.timezone.Europe.Malta=Eropah/Malta
+pref.timezone.Europe.Mariehamn=Eropah/Mariehamn
+pref.timezone.Europe.Minsk=Eropah/Minsk
+pref.timezone.Europe.Monaco=Eropah/Monaco
+pref.timezone.Europe.Moscow=Eropah/Moskow
+pref.timezone.Europe.Nicosia=Eropah/Nicosia
+pref.timezone.Europe.Oslo=Eropah/Oslo
+pref.timezone.Europe.Paris=Eropah/Paris
+pref.timezone.Europe.Podgorica=Eropah/Podgorica
+pref.timezone.Europe.Prague=Eropah/Prague
+pref.timezone.Europe.Riga=Eropah/Riga
+pref.timezone.Europe.Rome=Eropah/Rom
+pref.timezone.Europe.Samara=Eropah/Samara
+pref.timezone.Europe.San_Marino=Eropah/San Marino
+pref.timezone.Europe.Sarajevo=Eropah/Sarajevo
+pref.timezone.Europe.Simferopol=Eropah/Simferopol
+pref.timezone.Europe.Skopje=Eropah/Skopje
+pref.timezone.Europe.Sofia=Eropah/Sofia
+pref.timezone.Europe.Stockholm=Eropah/Stockholm
+pref.timezone.Europe.Tallinn=Eropah/Tallinn
+pref.timezone.Europe.Tirane=Eropah/Tirane
+pref.timezone.Europe.Uzhgorod=Eropah/Uzhgorod
+pref.timezone.Europe.Vaduz=Eropah/Vaduz
+pref.timezone.Europe.Vatican=Eropah/Vatican
+pref.timezone.Europe.Vienna=Eropah/Vienna
+pref.timezone.Europe.Vilnius=Eropah/Vilnius
+pref.timezone.Europe.Volgograd=Eropah/Volgograd
+pref.timezone.Europe.Warsaw=Eropah/Warsaw
+pref.timezone.Europe.Zagreb=Eropah/Zagreb
+pref.timezone.Europe.Zaporozhye=Eropah/Zaporozhye
+pref.timezone.Europe.Zurich=Eropah/Zurich
+pref.timezone.Indian.Antananarivo=India/Antananarivo
+pref.timezone.Indian.Chagos=India/Chagos
+pref.timezone.Indian.Christmas=India/Christmas
+pref.timezone.Indian.Cocos=India/Cocos
+pref.timezone.Indian.Comoro=India/Comoro
+pref.timezone.Indian.Kerguelen=India/Kerguelen
+pref.timezone.Indian.Mahe=India/Mahe
+pref.timezone.Indian.Maldives=India/Maldives
+pref.timezone.Indian.Mauritius=India/Mauritius
+pref.timezone.Indian.Mayotte=India/Mayotte
+pref.timezone.Indian.Reunion=India/Reunion
+pref.timezone.Pacific.Apia=Pasifik/Apia
+pref.timezone.Pacific.Auckland=Pasifik/Auckland
+pref.timezone.Pacific.Chatham=Pasifik/Chatham
+pref.timezone.Pacific.Easter=Pasifik/Easter
+pref.timezone.Pacific.Efate=Pasifik/Efate
+pref.timezone.Pacific.Enderbury=Pasifik/Enderbury
+pref.timezone.Pacific.Fakaofo=Pasifik/Fakaofo
+pref.timezone.Pacific.Fiji=Pasifik/Fiji
+pref.timezone.Pacific.Funafuti=Pasifik/Funafuti
+pref.timezone.Pacific.Galapagos=Pasifik/Galapagos
+pref.timezone.Pacific.Gambier=Pasifik/Gambier
+pref.timezone.Pacific.Guadalcanal=Pasifik/Guadalcanal
+pref.timezone.Pacific.Guam=Pasifik/Guam
+pref.timezone.Pacific.Honolulu=Pasifik/Honolulu
+pref.timezone.Pacific.Johnston=Pasifik/Johnston
+pref.timezone.Pacific.Kiritimati=Pasifik/Kiritimati
+pref.timezone.Pacific.Kosrae=Pasifik/Kosrae
+pref.timezone.Pacific.Kwajalein=Pasifik/Kwajalein
+pref.timezone.Pacific.Majuro=Pasifik/Majuro
+pref.timezone.Pacific.Marquesas=Pasifik/Marquesas
+pref.timezone.Pacific.Midway=Pasifik/Midway
+pref.timezone.Pacific.Nauru=Pasifik/Nauru
+pref.timezone.Pacific.Niue=Pasifik/Niue
+pref.timezone.Pacific.Norfolk=Pasifik/Norfolk
+pref.timezone.Pacific.Noumea=Pasifik/Noumea
+pref.timezone.Pacific.Pago_Pago=Pasifik/Pago Pago
+pref.timezone.Pacific.Palau=Pasifik/Palau
+pref.timezone.Pacific.Pitcairn=Pasifik/Pitcairn
+pref.timezone.Pacific.Ponape=Pasifik/Ponape
+pref.timezone.Pacific.Port_Moresby=Pasifik/Port Moresby
+pref.timezone.Pacific.Rarotonga=Pasifik/Rarotonga
+pref.timezone.Pacific.Saipan=Pasifik/Saipan
+pref.timezone.Pacific.Tahiti=Pasifik/Tahiti
+pref.timezone.Pacific.Tarawa=Pasifik/Tarawa
+pref.timezone.Pacific.Tongatapu=Pasifik/Tongatapu
+pref.timezone.Pacific.Truk=Pasifik/Truk
+pref.timezone.Pacific.Wake=Pasifik/Wake
+pref.timezone.Pacific.Wallis=Pasifik/Wallis
+
+# the following have been missing
+pref.timezone.America.Indiana.Tell_City=Amerika/Indiana/Tell City
+pref.timezone.America.Indiana.Winamac=Amerika/Indiana/Winamac
+pref.timezone.America.Marigot=Amerika/Marigot
+pref.timezone.America.Resolute=Amerika/Resolute
+pref.timezone.America.St_Barthelemy=Amerika/St. Barthelemy
+
+# added with 2008d:
+pref.timezone.America.Argentina.San_Luis=Amerika/Argentina/San Luis
+pref.timezone.America.Santarem=Amerika/Santarem
+pref.timezone.Asia.Ho_Chi_Minh=Asia/Ho Chi Minh
+pref.timezone.Asia.Kolkata=Asia/Kolkata
+
+# added with 2008i:
+pref.timezone.America.Argentina.Salta=Amerika/Argentina/Salta
+
+# added with 2010i
+pref.timezone.America.Matamoros=Amerika/Matamoros
+pref.timezone.America.Ojinaga=Amerika/Ojinaga
+pref.timezone.America.Santa_Isabel=Amerika/Santa Isabel
+pref.timezone.Antarctica.Macquarie=Antartika/Macquarie
+pref.timezone.Asia.Novokuznetsk=Asia/Novokuznetsk
+
+#added with 2011b
+pref.timezone.America.Bahia_Banderas=Amerika/Bahia Banderas
+pref.timezone.America.North_Dakota.Beulah=Amerika/North Dakota/Beulah
+pref.timezone.Pacific.Chuuk=Pasifik//Chuuk
+pref.timezone.Pacific.Pohnpei=Pasifik//Pohnpei
+
+#added with 2011n
+pref.timezone.Africa.Juba=Afrika/Juba
+pref.timezone.America.Kralendijk=Amerika/Kralendijk
+pref.timezone.America.Lower_Princes=Amerika/Lower Princes
+pref.timezone.America.Metlakatla=Amerika/Metlakatla
+pref.timezone.America.Sitka=Amerika/Sitka
+pref.timezone.Asia.Hebron=Asia/Hebron
+
+#added with 2013a
+pref.timezone.America.Creston=Amerika/Creston
+pref.timezone.Asia.Khandyga=Asia/Khandyga
+pref.timezone.Asia.Ust-Nera=Asia/Ust-Nera
+pref.timezone.Europe.Busingen=Eropah/Busingen
+
+#added with 2014b
+pref.timezone.Antarctica.Troll=Antartika/Troll
+
+#added with 2014j
+pref.timezone.Asia.Chita=Asia/Chita
+pref.timezone.Asia.Srednekolymsk=Asia/Srednekolymsk
+pref.timezone.Pacific.Bougainville=Pasifik/Bougainville
+
+#added with 2.2015g
+pref.timezone.America.Fort_Nelson=Amerika/Fort Nelson
+
+#added with 2.2016b
+pref.timezone.Europe.Ulyanovsk=Eropah/Ulyanovsk
+pref.timezone.Europe.Astrakhan=Eropah/Astrakhan
+pref.timezone.Asia.Barnaul=Asia/Barnaul
+
+#added with 2.2016i
+pref.timezone.Asia.Yangon=Asia/Yangon
+pref.timezone.Asia.Tomsk=Asia/Tomsk
+pref.timezone.Asia.Famagusta=Asia/Famagusta
+pref.timezone.Europe.Kirov=Eropah/Kirov
+
+#added with 2.2016j
+pref.timezone.Europe.Saratov=Eropah/Saratov
+pref.timezone.Asia.Atyrau=Asia/Atyrau
+
+#added with 2.2017b
+pref.timezone.America.Punta_Arenas=Amerika/Punta Arenas