summaryrefslogtreecommitdiffstats
path: root/l10n-ca/calendar/chrome
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-28 14:29:10 +0000
commit2aa4a82499d4becd2284cdb482213d541b8804dd (patch)
treeb80bf8bf13c3766139fbacc530efd0dd9d54394c /l10n-ca/calendar/chrome
parentInitial commit. (diff)
downloadfirefox-upstream.tar.xz
firefox-upstream.zip
Adding upstream version 86.0.1.upstream/86.0.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-alarms.properties39
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-event-dialog-attendees.properties15
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-event-dialog.dtd428
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-event-dialog.properties541
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-extract.properties294
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.dtd19
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.properties10
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.dtd7
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.properties53
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd14
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar.dtd411
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendar.properties818
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendarCreation.dtd51
-rw-r--r--l10n-ca/calendar/chrome/calendar/calendarCreation.properties6
-rw-r--r--l10n-ca/calendar/chrome/calendar/categories.properties7
-rw-r--r--l10n-ca/calendar/chrome/calendar/dateFormat.properties146
-rw-r--r--l10n-ca/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd19
-rw-r--r--l10n-ca/calendar/chrome/calendar/global.dtd54
-rw-r--r--l10n-ca/calendar/chrome/calendar/menuOverlay.dtd50
-rw-r--r--l10n-ca/calendar/chrome/calendar/migration.dtd9
-rw-r--r--l10n-ca/calendar/chrome/calendar/migration.properties13
-rw-r--r--l10n-ca/calendar/chrome/calendar/provider-uninstall.dtd12
-rw-r--r--l10n-ca/calendar/chrome/calendar/timezones.properties488
-rw-r--r--l10n-ca/calendar/chrome/lightning/lightning-toolbar.dtd51
-rw-r--r--l10n-ca/calendar/chrome/lightning/lightning.dtd116
-rw-r--r--l10n-ca/calendar/chrome/lightning/lightning.properties201
26 files changed, 3872 insertions, 0 deletions
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-alarms.properties b/l10n-ca/calendar/chrome/calendar/calendar-alarms.properties
new file mode 100644
index 0000000000..2916dbb49c
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-alarms.properties
@@ -0,0 +1,39 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE (reminderCustomTitle):
+# %1$S = unit, %2$S = reminderCustomOrigin
+# Example: "3 minutes" "before the task starts"
+reminderCustomTitle=%1$S %2$S
+reminderTitleAtStartEvent=El moment que comença la cita
+reminderTitleAtStartTask=El moment que comença la tasca
+reminderTitleAtEndEvent=El moment que acaba la cita
+reminderTitleAtEndTask=El moment que acaba la tasca
+
+# 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=Ajorna el recordatori fins d'aquí %1$S
+
+reminderCustomOriginBeginBeforeEvent=abans que comenci la cita
+reminderCustomOriginBeginAfterEvent=després que comenci la cita
+reminderCustomOriginEndBeforeEvent=abans que acabi la cita
+reminderCustomOriginEndAfterEvent=després que acabi la cita
+reminderCustomOriginBeginBeforeTask=abans que comenci la tasca
+reminderCustomOriginBeginAfterTask=després que comenci la tasca
+reminderCustomOriginEndBeforeTask=abans que acabi la tasca
+reminderCustomOriginEndAfterTask=després que acabi la tasca
+
+reminderErrorMaxCountReachedEvent=El calendari seleccionat té una limitació d'#1 recordatori per cita.;El calendari seleccionat té una limitació de #1 recordatoris per cita.
+reminderErrorMaxCountReachedTask=El calendari seleccionat té una limitació d'#1 recordatori per tasca.;El calendari seleccionat té una limitació de #1 recordatoris per tasca.
+
+# LOCALIZATION NOTE (reminderReadonlyNotification)
+# This notification will be presented in the alarm dialog if reminders for not
+# writable items/calendars are displayed.
+# %1$S - localized value of calendar.alarm.snoozeallfor.label (defined in calendar.dtd)
+reminderReadonlyNotification=Actualment, els recordatoris en els calendaris només de lectura no es poden ajornar; només es poden aturar. El botó «%1$S» ajornarà només els recordatoris dels calendaris editables.
+# LOCALIZATION NOTE (reminderDisabledSnoozeButtonTooltip)
+# This tooltip is only displayed, if the button is disabled
+reminderDisabledSnoozeButtonTooltip=No es permet ajornar un recordatori en els calendaris només de lectura
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-event-dialog-attendees.properties b/l10n-ca/calendar/chrome/calendar/calendar-event-dialog-attendees.properties
new file mode 100644
index 0000000000..9e56859c3b
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-event-dialog-attendees.properties
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+event.attendee.role.required = Assistent necessari
+event.attendee.role.optional = Assistent opcional
+event.attendee.role.nonparticipant = No hi participa
+event.attendee.role.chair = Presideix
+event.attendee.role.unknown = Assistent desconegut (%1$S)
+
+event.attendee.usertype.individual = Individu
+event.attendee.usertype.group = Grup
+event.attendee.usertype.resource = Recurs
+event.attendee.usertype.room = Sala
+event.attendee.usertype.unknown = Tipus desconegut (%1$S)
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-event-dialog.dtd b/l10n-ca/calendar/chrome/calendar/calendar-event-dialog.dtd
new file mode 100644
index 0000000000..54a68410d6
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-event-dialog.dtd
@@ -0,0 +1,428 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY event.title.label "Edita l'element" >
+
+<!ENTITY event.dialog.keepDurationButton.tooltip "Conserva la durada quan es canviï la data de finalització">
+<!ENTITY event.dialog.keepDurationButton.accesskey "d">
+
+<!ENTITY newevent.from.label "Des de" >
+<!ENTITY newevent.to.label "Fins a" >
+
+<!ENTITY newevent.status.label "Estat" >
+<!ENTITY newevent.status.accesskey "s" >
+<!ENTITY newevent.eventStatus.none.label "Sense especificar" >
+<!ENTITY newevent.eventStatus.none.accesskey "e" >
+<!ENTITY newevent.todoStatus.none.label "Sense especificar" >
+<!ENTITY newevent.eventStatus.cancelled.label "Cancel·lada" >
+<!ENTITY newevent.eventStatus.cancelled.accesskey "n" >
+<!ENTITY newevent.todoStatus.cancelled.label "Cancel·lada" >
+<!ENTITY newevent.status.tentative.label "Provisional" >
+<!ENTITY newevent.status.tentative.accesskey "P" >
+<!ENTITY newevent.status.confirmed.label "Confirmada" >
+<!ENTITY newevent.status.confirmed.accesskey "C" >
+<!ENTITY newevent.status.needsaction.label "Necessita una acció" >
+<!ENTITY newevent.status.inprogress.label "En curs" >
+<!ENTITY newevent.status.completed.label "Acabada el dia" >
+
+<!-- The following entity is for New Task dialog only -->
+<!ENTITY newtodo.percentcomplete.label "&#37; acabada">
+
+<!-- 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 "Notifica els assistents">
+<!ENTITY event.attendees.notify.accesskey "f">
+<!ENTITY event.attendees.notifyundisclosed.label "Invitació separada per a cada assistent">
+<!ENTITY event.attendees.notifyundisclosed.accesskey "n">
+<!ENTITY event.attendees.notifyundisclosed.tooltip "Aquesta opció envia un missatge d'invitació per assistent. Cada invitació conté l'assistent com a únic destinatari, de forma que els assistents no veuen la identitat els uns dels altres.">
+<!ENTITY event.attendees.disallowcounter.label "No permetis contrapropostes">
+<!ENTITY event.attendees.disallowcounter.accesskey "a">
+<!ENTITY event.attendees.disallowcounter.tooltip "Indica que no voleu acceptar contrapropostes">
+
+<!-- Keyboard Shortcuts -->
+<!ENTITY event.dialog.new.event.key2 "I">
+<!ENTITY event.dialog.new.task.key2 "D">
+<!ENTITY event.dialog.new.message.key2 "N">
+<!ENTITY event.dialog.close.key "W">
+<!ENTITY event.dialog.save.key "S">
+<!ENTITY event.dialog.saveandclose.key "L">
+<!ENTITY event.dialog.print.key "P">
+<!ENTITY event.dialog.undo.key "Z">
+<!ENTITY event.dialog.redo.key "Y">
+<!ENTITY event.dialog.cut.key "X">
+<!ENTITY event.dialog.copy.key "C">
+<!ENTITY event.dialog.paste.key "V">
+<!ENTITY event.dialog.select.all.key "A">
+
+<!-- Menubar -->
+<!ENTITY event.menu.item.new.label "Nou">
+<!ENTITY event.menu.item.new.accesskey "N">
+<!ENTITY event.menu.item.new.event.label "Cita">
+<!ENTITY event.menu.item.new.event.accesskey "C">
+<!ENTITY event.menu.item.new.task.label "Tasca">
+<!ENTITY event.menu.item.new.task.accesskey "T">
+<!ENTITY event.menu.item.new.message.label "Missatge">
+<!ENTITY event.menu.item.new.message.accesskey "M">
+<!ENTITY event.menu.item.new.contact.label "Contacte de la llibreta d'adreces">
+<!ENTITY event.menu.item.new.contact.accesskey "C">
+<!ENTITY event.menu.item.close.label "Tanca">
+<!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 "Desa">
+<!ENTITY event.menu.item.save.accesskey "D">
+<!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 "Desa i tanca">
+<!ENTITY event.menu.item.saveandclose.accesskey "e">
+<!ENTITY event.menu.item.saveandclose.tab.accesskey "t">
+
+<!ENTITY event.menu.item.delete.label "Suprimeix…">
+<!ENTITY event.menu.item.delete.accesskey "S">
+<!ENTITY event.menu.item.page.setup.label "Configuració de la pàgina">
+<!ENTITY event.menu.item.page.setup.accesskey "u">
+<!ENTITY event.menu.item.print.label "Imprimeix">
+<!ENTITY event.menu.item.print.accesskey "I">
+
+<!ENTITY event.menu.edit.label "Edita">
+<!ENTITY event.menu.edit.accesskey "E">
+<!ENTITY event.menu.edit.undo.label "Desfés">
+<!ENTITY event.menu.edit.undo.accesskey "D">
+<!ENTITY event.menu.edit.redo.label "Refés">
+<!ENTITY event.menu.edit.redo.accesskey "R">
+<!ENTITY event.menu.edit.cut.label "Retalla">
+<!ENTITY event.menu.edit.cut.accesskey "t">
+<!ENTITY event.menu.edit.copy.label "Copia">
+<!ENTITY event.menu.edit.copy.accesskey "C">
+<!ENTITY event.menu.edit.paste.label "Enganxa">
+<!ENTITY event.menu.edit.paste.accesskey "x">
+<!ENTITY event.menu.edit.select.all.label "Selecciona-ho tot">
+<!ENTITY event.menu.edit.select.all.accesskey "o">
+
+<!ENTITY event.menu.view.label "Visualitza">
+<!ENTITY event.menu.view.accesskey "V">
+<!ENTITY event.menu.view.toolbars.label "Barres d'eines">
+<!ENTITY event.menu.view.toolbars.accesskey "B">
+<!ENTITY event.menu.view.toolbars.event.label "Barra d'eines de cites">
+<!ENTITY event.menu.view.toolbars.event.accesskey "c">
+<!ENTITY event.menu.view.toolbars.customize.label "Personalitza…">
+<!ENTITY event.menu.view.toolbars.customize.accesskey "P">
+<!ENTITY event.menu.view.showlink.label "Mostra l'enllaç relacionat">
+<!ENTITY event.menu.view.showlink.accesskey "r">
+
+<!ENTITY event.menu.options.label "Opcions">
+<!ENTITY event.menu.options.accesskey "O">
+<!ENTITY event.menu.options.attendees.label "Invita assistents…">
+<!ENTITY event.menu.options.attendees.accesskey "I">
+<!ENTITY event.menu.options.timezone2.label "Mostra els fusos horaris">
+<!ENTITY event.menu.options.timezone2.accesskey "h">
+<!ENTITY event.menu.options.priority2.label "Prioritat">
+<!ENTITY event.menu.options.priority2.accesskey "P">
+<!ENTITY event.menu.options.priority.notspecified.label "Sense especificar">
+<!ENTITY event.menu.options.priority.notspecified.accesskey "S">
+<!ENTITY event.menu.options.priority.low.label "Baixa">
+<!ENTITY event.menu.options.priority.low.accesskey "B">
+<!ENTITY event.menu.options.priority.normal.label "Normal">
+<!ENTITY event.menu.options.priority.normal.accesskey "N">
+<!ENTITY event.menu.options.priority.high.label "Alta">
+<!ENTITY event.menu.options.priority.high.accesskey "A">
+<!ENTITY event.menu.options.privacy.label "Privadesa">
+<!ENTITY event.menu.options.privacy.accesskey "v">
+<!ENTITY event.menu.options.privacy.public.label "Cita pública">
+<!ENTITY event.menu.options.privacy.public.accesskey "b">
+<!ENTITY event.menu.options.privacy.confidential.label "Mostra només la data i l'hora">
+<!ENTITY event.menu.options.privacy.confidential.accesskey "s">
+<!ENTITY event.menu.options.privacy.private.label "Cita privada">
+<!ENTITY event.menu.options.privacy.private.accesskey "r">
+<!ENTITY event.menu.options.show.time.label "Disponibilitat">
+<!ENTITY event.menu.options.show.time.accesskey "t">
+<!ENTITY event.menu.options.show.time.busy.label "Ocupat">
+<!ENTITY event.menu.options.show.time.busy.accesskey "O">
+<!ENTITY event.menu.options.show.time.free.label "Lliure">
+<!ENTITY event.menu.options.show.time.free.accesskey "L">
+
+<!ENTITY event.invite.attendees.label "Invita assistents…">
+<!ENTITY event.invite.attendees.accesskey "I">
+<!ENTITY event.email.attendees.label "Redacta un missatge a tots els assistents…">
+<!ENTITY event.email.attendees.accesskey "t">
+<!ENTITY event.email.tentative.attendees.label "Redacta un missatge a tots els assistents indecisos…">
+<!ENTITY event.email.tentative.attendees.accesskey "i">
+<!ENTITY event.remove.attendees.label2 "Elimina tots els assistents">
+<!ENTITY event.remove.attendees.accesskey "l">
+<!ENTITY event.remove.attendee.label "Elimina un assistent">
+<!ENTITY event.remove.attendee.accesskey "E">
+
+<!-- Toolbar -->
+<!ENTITY event.toolbar.save.label2 "Desa">
+<!ENTITY event.toolbar.saveandclose.label "Desa i tanca">
+<!ENTITY event.toolbar.delete.label "Suprimeix">
+<!ENTITY event.toolbar.attendees.label "Invita assistents">
+<!ENTITY event.toolbar.privacy.label "Privadesa">
+
+<!ENTITY event.toolbar.save.tooltip2 "Desa">
+<!ENTITY event.toolbar.saveandclose.tooltip "Desa i tanca">
+<!ENTITY event.toolbar.delete.tooltip "Suprimeix">
+<!ENTITY event.toolbar.attendees.tooltip "Invita assistents">
+<!ENTITY event.toolbar.attachments.tooltip "Afegeix adjuncions">
+<!ENTITY event.toolbar.privacy.tooltip "Canvia la privadesa">
+<!ENTITY event.toolbar.priority.tooltip "Canvia la prioritat">
+<!ENTITY event.toolbar.status.tooltip "Canvia l'estat">
+<!ENTITY event.toolbar.freebusy.tooltip "Canvia la disponibilitat (lliure/ocupat)">
+
+<!-- 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 "Aplica la proposta">
+<!ENTITY counter.button.proposal.accesskey "p">
+<!ENTITY counter.button.proposal.tooltip2 "Els camps de la cita s'emplenaran utilitzant els valors de la contraproposta; només quan es desi, amb canvis addicionals o sense, es notificaran tots els assistents degudament.">
+<!ENTITY counter.button.original.label "Aplica les dades originals">
+<!ENTITY counter.button.original.accesskey "r">
+<!ENTITY counter.button.original.tooltip2 "Els valors dels camps seran els de la cita original, abans de fer la contraproposta">
+
+<!-- Main page -->
+<!ENTITY event.title.textbox.label "Títol:" >
+<!ENTITY event.title.textbox.accesskey "T">
+<!ENTITY event.location.label "Ubicació:" >
+<!ENTITY event.location.accesskey "U">
+<!ENTITY event.categories.label "Categoria:">
+<!ENTITY event.categories.accesskey "g">
+<!ENTITY event.categories.textbox.label "Afegeix una categoria nova" >
+<!ENTITY event.calendar.label "Calendari:" >
+<!ENTITY event.calendar.accesskey "C">
+<!ENTITY event.attendees.label "Assistents:" >
+<!ENTITY event.attendees.accesskey "n">
+<!ENTITY event.alldayevent.label "Cita de tot el dia" >
+<!ENTITY event.alldayevent.accesskey "d">
+<!ENTITY event.from.label "Inici:" >
+<!ENTITY event.from.accesskey "I">
+<!ENTITY task.from.label "Inici:" >
+<!ENTITY task.from.accesskey "I">
+<!ENTITY event.to.label "Fi:" >
+<!ENTITY event.to.accesskey "F">
+<!ENTITY task.to.label "Data de venciment:" >
+<!ENTITY task.to.accesskey "V">
+<!ENTITY task.status.label "Estat:" >
+<!ENTITY task.status.accesskey "E">
+<!ENTITY event.repeat.label "Repetició:" >
+<!ENTITY event.repeat.accesskey "R">
+<!ENTITY event.until.label "Fins:">
+<!ENTITY event.until.accesskey "i">
+<!ENTITY event.reminder.label "Recordatori:" >
+<!ENTITY event.reminder.accesskey "e">
+<!ENTITY event.description.label "Descripció:" >
+<!ENTITY event.description.accesskey "p">
+<!ENTITY event.attachments.label "Adjuncions:" >
+<!ENTITY event.attachments.accesskey "j" >
+<!ENTITY event.attachments.menubutton.label "Adjunta">
+<!ENTITY event.attachments.menubutton.accesskey "A">
+<!ENTITY event.attachments.url.label "Pàgina web…">
+<!ENTITY event.attachments.url.accesskey "w">
+<!ENTITY event.attachments.popup.remove.label "Suprimeix" >
+<!ENTITY event.attachments.popup.remove.accesskey "S" >
+<!ENTITY event.attachments.popup.open.label "Obre" >
+<!ENTITY event.attachments.popup.open.accesskey "O" >
+<!ENTITY event.attachments.popup.removeAll.label "Suprimeix-les totes" >
+<!ENTITY event.attachments.popup.removeAll.accesskey "t" >
+<!ENTITY event.attachments.popup.attachPage.label "Adjunta una pàgina web…" >
+<!ENTITY event.attachments.popup.attachPage.accesskey "w" >
+<!ENTITY event.url.label "Enllaç relacionat:" >
+<!ENTITY event.priority2.label "Prioritat:">
+
+<!ENTITY event.reminder.none.label "Cap recordatori " >
+<!ENTITY event.reminder.0minutes.before.label "0 minuts abans" >
+<!ENTITY event.reminder.5minutes.before.label "5 minuts abans" >
+<!ENTITY event.reminder.15minutes.before.label "15 minuts abans" >
+<!ENTITY event.reminder.30minutes.before.label "30 minuts abans" >
+<!ENTITY event.reminder.1hour.before.label "1 hora abans" >
+<!ENTITY event.reminder.2hours.before.label "2 hores abans" >
+<!ENTITY event.reminder.12hours.before.label "12 hores abans" >
+<!ENTITY event.reminder.1day.before.label "1 dia abans" >
+<!ENTITY event.reminder.2days.before.label "2 dies abans" >
+<!ENTITY event.reminder.1week.before.label "1 setmana abans" >
+<!ENTITY event.reminder.custom.label "Personalitzat…" >
+
+<!ENTITY event.reminder.multiple.label "Recordatoris múltiples…" >
+
+<!ENTITY event.statusbarpanel.freebusy.label "Disponibilitat:">
+<!ENTITY event.statusbarpanel.privacy.label "Privadesa:">
+
+<!-- Recurrence dialog -->
+<!ENTITY recurrence.title.label "Edita la repetició">
+
+<!ENTITY event.repeat.does.not.repeat.label "No es repeteix">
+<!ENTITY event.repeat.daily.label "Diàriament">
+<!ENTITY event.repeat.weekly.label "Setmanalment">
+<!ENTITY event.repeat.every.weekday.label "Cada dia feiner">
+<!ENTITY event.repeat.bi.weekly.label "Cada dues setmanes">
+<!ENTITY event.repeat.monthly.label "Mensualment">
+<!ENTITY event.repeat.yearly.label "Anualment">
+<!ENTITY event.repeat.custom.label "Personalitzat…">
+
+<!ENTITY event.recurrence.pattern.label "Patró de repetició">
+<!ENTITY event.recurrence.occurs.label "Es repeteix" >
+<!ENTITY event.recurrence.day.label "diàriament" >
+<!ENTITY event.recurrence.week.label "setmanalment" >
+<!ENTITY event.recurrence.month.label "mensualment" >
+<!ENTITY event.recurrence.year.label "anualment" >
+
+<!ENTITY event.recurrence.pattern.every.label "Cada" >
+<!ENTITY repeat.units.days.both "dia/es" >
+<!ENTITY event.recurrence.pattern.every.weekday.label "Cada dia feiner" >
+
+<!ENTITY event.recurrence.pattern.weekly.every.label "Cada" >
+<!ENTITY repeat.units.weeks.both "setmana/es" >
+<!ENTITY event.recurrence.on.label "El:" >
+
+<!ENTITY event.recurrence.pattern.monthly.every.label "Cada" >
+<!ENTITY repeat.units.months.both "mes/os" >
+<!ENTITY event.recurrence.monthly.every.label "Cada" >
+<!ENTITY event.recurrence.monthly.first.label "El primer">
+<!ENTITY event.recurrence.monthly.second.label "El segon">
+<!ENTITY event.recurrence.monthly.third.label "El tercer">
+<!ENTITY event.recurrence.monthly.fourth.label "El quart">
+<!ENTITY event.recurrence.monthly.fifth.label "El cinquè">
+<!ENTITY event.recurrence.monthly.last.label "L'últim">
+<!ENTITY event.recurrence.pattern.monthly.week.1.label "diumenge" >
+<!ENTITY event.recurrence.pattern.monthly.week.2.label "dilluns" >
+<!ENTITY event.recurrence.pattern.monthly.week.3.label "dimarts" >
+<!ENTITY event.recurrence.pattern.monthly.week.4.label "dimecres" >
+<!ENTITY event.recurrence.pattern.monthly.week.5.label "dijous" >
+<!ENTITY event.recurrence.pattern.monthly.week.6.label "divendres" >
+<!ENTITY event.recurrence.pattern.monthly.week.7.label "dissabte" >
+<!ENTITY event.recurrence.repeat.dayofmonth.label "dia del mes">
+<!ENTITY event.recurrence.repeat.recur.label "Es repeteix els dies">
+
+<!ENTITY event.recurrence.every.label "Cada:" >
+<!ENTITY repeat.units.years.both "any/s" >
+<!ENTITY event.recurrence.pattern.yearly.every.month.label "Cada" >
+
+<!-- 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 "de" >
+
+<!ENTITY event.recurrence.pattern.yearly.month.1.label "gener" >
+<!ENTITY event.recurrence.pattern.yearly.month.2.label "febrer" >
+<!ENTITY event.recurrence.pattern.yearly.month.3.label "març" >
+<!ENTITY event.recurrence.pattern.yearly.month.4.label "abril" >
+<!ENTITY event.recurrence.pattern.yearly.month.5.label "maig" >
+<!ENTITY event.recurrence.pattern.yearly.month.6.label "juny" >
+<!ENTITY event.recurrence.pattern.yearly.month.7.label "juliol" >
+<!ENTITY event.recurrence.pattern.yearly.month.8.label "agost" >
+<!ENTITY event.recurrence.pattern.yearly.month.9.label "setembre" >
+<!ENTITY event.recurrence.pattern.yearly.month.10.label "octubre" >
+<!ENTITY event.recurrence.pattern.yearly.month.11.label "novembre" >
+<!ENTITY event.recurrence.pattern.yearly.month.12.label "desembre" >
+<!ENTITY event.recurrence.yearly.every.label "Cada">
+<!ENTITY event.recurrence.yearly.first.label "El primer">
+<!ENTITY event.recurrence.yearly.second.label "El segon">
+<!ENTITY event.recurrence.yearly.third.label "El tercer">
+<!ENTITY event.recurrence.yearly.fourth.label "El quart">
+<!ENTITY event.recurrence.yearly.fifth.label "El cinquè">
+<!ENTITY event.recurrence.yearly.last.label "L'últim">
+<!ENTITY event.recurrence.pattern.yearly.week.1.label "diumenge" >
+<!ENTITY event.recurrence.pattern.yearly.week.2.label "dilluns" >
+<!ENTITY event.recurrence.pattern.yearly.week.3.label "dimarts" >
+<!ENTITY event.recurrence.pattern.yearly.week.4.label "dimecres" >
+<!ENTITY event.recurrence.pattern.yearly.week.5.label "dijous" >
+<!ENTITY event.recurrence.pattern.yearly.week.6.label "divendres" >
+<!ENTITY event.recurrence.pattern.yearly.week.7.label "dissabte" >
+<!ENTITY event.recurrence.pattern.yearly.day.label "dia" >
+<!ENTITY event.recurrence.of.label "de" >
+<!ENTITY event.recurrence.pattern.yearly.month2.1.label "gener" >
+<!ENTITY event.recurrence.pattern.yearly.month2.2.label "febrer" >
+<!ENTITY event.recurrence.pattern.yearly.month2.3.label "març" >
+<!ENTITY event.recurrence.pattern.yearly.month2.4.label "abril" >
+<!ENTITY event.recurrence.pattern.yearly.month2.5.label "maig" >
+<!ENTITY event.recurrence.pattern.yearly.month2.6.label "juny" >
+<!ENTITY event.recurrence.pattern.yearly.month2.7.label "juliol" >
+<!ENTITY event.recurrence.pattern.yearly.month2.8.label "agost" >
+<!ENTITY event.recurrence.pattern.yearly.month2.9.label "setembre" >
+<!ENTITY event.recurrence.pattern.yearly.month2.10.label "octubre" >
+<!ENTITY event.recurrence.pattern.yearly.month2.11.label "novembre" >
+<!ENTITY event.recurrence.pattern.yearly.month2.12.label "desembre" >
+
+<!ENTITY event.recurrence.range.label "Interval de repetició">
+<!ENTITY event.recurrence.forever.label "Sense data de finalització" >
+<!ENTITY event.recurrence.repeat.for.label "Crea" >
+<!ENTITY event.recurrence.appointments.label "Cites" >
+<!ENTITY event.repeat.until.label "Es repeteix fins" >
+<!ENTITY event.recurrence.preview.label "Previsualització">
+
+<!-- Attendees dialog -->
+<!ENTITY invite.title.label "Invita assistents">
+<!ENTITY event.organizer.label "Organitzador">
+<!ENTITY event.freebusy.suggest.slot "Franja horària suggerida:">
+<!ENTITY event.freebusy.button.next.slot "Franja següent">
+<!ENTITY event.freebusy.button.previous.slot "Franja anterior">
+<!ENTITY event.freebusy.zoom "Escala:">
+<!ENTITY event.freebusy.legend.free "Lliure" >
+<!ENTITY event.freebusy.legend.busy "Ocupat" >
+<!ENTITY event.freebusy.legend.busy_tentative "Provisional" >
+<!ENTITY event.freebusy.legend.busy_unavailable "Fora de l'oficina" >
+<!ENTITY event.freebusy.legend.unknown "Sense informació" >
+<!ENTITY event.attendee.role.required "Assistent necessari">
+<!ENTITY event.attendee.role.optional "Assistent opcional">
+<!ENTITY event.attendee.role.chair "Presideix">
+<!ENTITY event.attendee.role.nonparticipant "No hi participa">
+<!ENTITY event.attendee.usertype.individual "Individu">
+<!ENTITY event.attendee.usertype.group "Grup">
+<!ENTITY event.attendee.usertype.resource "Recurs">
+<!ENTITY event.attendee.usertype.room "Sala">
+<!ENTITY event.attendee.usertype.unknown "Desconegut">
+
+<!-- Timezone dialog -->
+<!ENTITY timezone.title.label "Indiqueu el fus horari">
+<!ENTITY event.timezone.custom.label "Més fusos horaris…">
+
+<!-- Read-Only dialog -->
+<!ENTITY read.only.general.label "General">
+<!ENTITY read.only.title.label "Títol:">
+<!ENTITY read.only.calendar.label "Calendari:">
+<!ENTITY read.only.event.start.label "Data d'inici:">
+<!ENTITY read.only.task.start.label "Data d'inici:">
+<!ENTITY read.only.event.end.label "Data de fi:">
+<!ENTITY read.only.task.due.label "Data de venciment:">
+<!ENTITY read.only.repeat.label "Repetició:">
+<!ENTITY read.only.location.label "Ubicació:">
+<!ENTITY read.only.category.label "Categoria:">
+<!ENTITY read.only.organizer.label "Organitzador:">
+<!ENTITY read.only.reminder.label "Recordatori:">
+<!ENTITY read.only.attachments.label "Adjuncions:">
+<!ENTITY read.only.attendees.label "Assistents">
+<!ENTITY read.only.description.label "Descripció">
+<!ENTITY read.only.link.label "Enllaç relacionat">
+
+<!-- Summary dialog -->
+<!ENTITY summary.dialog.saveclose.label "Desa i tanca">
+<!ENTITY summary.dialog.saveclose.tooltiptext "Desa els canvis i tanca la finestra sense canviar el vostre estat de participació ni enviar cap resposta">
+<!ENTITY summary.dialog.accept.label "Accepta">
+<!ENTITY summary.dialog.accept.tooltiptext "Accepta la invitació">
+<!ENTITY summary.dialog.tentative.label "Provisional">
+<!ENTITY summary.dialog.tentative.tooltiptext "Accepta la invitació provisionalment">
+<!ENTITY summary.dialog.decline.label "Declina">
+<!ENTITY summary.dialog.decline.tooltiptext "Declina la invitació">
+<!ENTITY summary.dialog.dontsend.label "No enviïs cap resposta">
+<!ENTITY summary.dialog.dontsend.tooltiptext "Canvia el vostre estat de participació sense enviar cap resposta a l'organitzador i tanca la finestra">
+<!ENTITY summary.dialog.send.label "Envia una resposta ara">
+<!ENTITY summary.dialog.send.tooltiptext "Envia una resposta a l'organitzador i tanca la finestra">
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-event-dialog.properties b/l10n-ca/calendar/chrome/calendar/calendar-event-dialog.properties
new file mode 100644
index 0000000000..d1ca529e7f
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-event-dialog.properties
@@ -0,0 +1,541 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE (dailyEveryNth):
+# Edit recurrence window -> Recurrence pattern -> Daily repeat rules
+# #1 - number
+# e.g. "every 4 days"
+dailyEveryNth=cada dia;cada #1 dies
+repeatDetailsRuleDaily4=cada dia feiner
+
+# 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=cada %1$S;cada #2 setmanes el %1$S
+weeklyNthOnNounclass2=cada %1$S;cada #2 setmanes el %1$S
+
+# LOCALIZATION NOTE (weeklyEveryNth):
+# Edit recurrence window -> Recurrence pattern -> Weekly repeat rules
+# #1 - interval
+# e.g. "every 5 weeks"
+weeklyEveryNth=cada setmana;cada #1 setmanes
+
+# 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=diumenge
+repeatDetailsDay1Nounclass=nounclass1
+repeatDetailsDay2=dilluns
+repeatDetailsDay2Nounclass=nounclass1
+repeatDetailsDay3=dimarts
+repeatDetailsDay3Nounclass=nounclass1
+repeatDetailsDay4=dimecres
+repeatDetailsDay4Nounclass=nounclass1
+repeatDetailsDay5=dijous
+repeatDetailsDay5Nounclass=nounclass1
+repeatDetailsDay6=divendres
+repeatDetailsDay6Nounclass=nounclass1
+repeatDetailsDay7=dissabte
+repeatDetailsDay7Nounclass=nounclass1
+
+# LOCALIZATION NOTE (repeatDetailsAnd)
+# Used to show a number of weekdays in a list
+# i.e. "Sunday, Monday, Tuesday " + and + " Wednesday"
+repeatDetailsAnd=i
+
+# 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 de cada mes;%1$S de cada #2 mesos
+monthlyRuleNthOfEveryNounclass2=%1$S de cada mes;%1$S de cada #2 mesos
+
+# 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=cada %1$S de cada mes;cada %1$S de cada #2 mesos
+monthlyEveryOfEveryNounclass2=cada %1$S de cada mes;cada %1$S de cada #2 mesos
+
+# 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=el dia %1$S;els dies %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 de cada mes;%1$S de cada #2 mesos
+
+# 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=l'últim dia del mes; l'últim dia del mes de cada #1 mesos
+
+# 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=cada dia de cada mes;cada dia del mes de cada #2 mesos
+
+# 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=el primer
+repeatOrdinal2Nounclass1=el segon
+repeatOrdinal3Nounclass1=el tercer
+repeatOrdinal4Nounclass1=el quart
+repeatOrdinal5Nounclass1=el cinquè
+repeatOrdinal-1Nounclass1=l'últim
+repeatOrdinal1Nounclass2=el primer
+repeatOrdinal2Nounclass2=el segon
+repeatOrdinal3Nounclass2=el tercer
+repeatOrdinal4Nounclass2=el quart
+repeatOrdinal5Nounclass2=el cinquè
+repeatOrdinal-1Nounclass2=l'últim
+
+# 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=cada %2$S de %1$S;cada %2$S de %1$S de cada #3 anys
+
+# 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=%1$S %2$S de cada %3$S;%1$S %2$S de %3$S de cada #4 anys
+yearlyNthOnNthOfNounclass2=%1$S %2$S de cada %3$S;%1$S %2$S de %3$S de cada #4 anys
+
+# 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=cada %1$S de %2$S;cada %1$S de %2$S de cada #3 anys
+yearlyOnEveryNthOfNthNounclass2=cada %1$S de %2$S;cada %1$S de %2$S de cada #3 anys
+
+#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=cada dia de %1$S;cada dia de %1$S de cada #2 anys
+
+repeatDetailsMonth1=gener
+repeatDetailsMonth2=febrer
+repeatDetailsMonth3=març
+repeatDetailsMonth4=abril
+repeatDetailsMonth5=maig
+repeatDetailsMonth6=juny
+repeatDetailsMonth7=juliol
+repeatDetailsMonth8=agost
+repeatDetailsMonth9=setembre
+repeatDetailsMonth10=octubre
+repeatDetailsMonth11=novembre
+repeatDetailsMonth12=desembre
+
+# 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=Té lloc %1$S\n#5 vegada a partir del %2$S\nde %3$S a %4$S.;Té lloc %1$S\n#5 vegades a partir del %2$S\nde %3$S a %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=Té lloc %1$S\n#3 vegada a partir del %2$S.;Té lloc %1$S\n#3 vegades a partir del %2$S.
+
+# 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=Té lloc %1$S\na partir del %2$S fins al %3$S\nde %4$S a %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=Té lloc %1$S\na partir del %2$S fins al %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=Té lloc %1$S\na partir del %2$S\nde %3$S a %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=Té lloc %1$S\na partir del %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=l'últim dia
+
+# 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=Feu clic aquí per a més informació
+
+# 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=No es coneixen els detalls de repetició
+
+# differences between the dialog for an Event or a Task
+newEvent=Cita nova
+newTask=Tasca nova
+itemMenuLabelEvent=Cita
+itemMenuAccesskeyEvent2=C
+itemMenuLabelTask=Tasca
+itemMenuAccesskeyTask2=T
+
+emailSubjectReply=Re: %1$S
+
+# Link Location Dialog
+specifyLinkLocation=Indiqueu l'adreça de l'enllaç
+enterLinkLocation=Escriviu l'adreça d'una pàgina web o la ubicació d'un document.
+
+summaryDueTaskLabel=Venciment:
+
+# Attach File Dialog
+attachViaFilelink=Fitxer mitjançant %1$S
+selectAFile=Seleccioneu els fitxers que voleu adjuntar
+removeCalendarsTitle=Suprimeix les adjuncions
+
+# LOCALIZATION NOTE (removeAttachmentsText): Semi-colon list of plural forms for
+# prompting attachment removal.
+# See http://developer.mozilla.org/en/Localization_and_Plurals
+removeAttachmentsText=Segur que voleu esborrar #1 adjunció?; Segur que voleu esborrar #1 adjuncions?
+
+# Recurrence Dialog Widget Order
+# LOCALIZATION NOTE: You can change the order of below params
+# Edit recurrence window -> Recurrence pattern -> Repeat monthly
+# %1$S - ordinal with article, %2$S - weekday
+# e.g. "the First Saturday"
+# DONT_TRANSLATE: Make sure there are no extra words in this property, just variables.
+monthlyOrder=%1$S %2$S
+
+# Edit recurrence window -> Recurrence pattern -> Repeat yearly
+# %1$S - day of month, %2$S - of, %3$S - month
+# e.g. "6 [of] September"
+# If you don't need %2$S in your locale - please put this on the third place.
+# DONT_TRANSLATE: Make sure there are no extra words in this property, just variables.
+yearlyOrder=%1$S %3$S %2$S
+
+# Edit recurrence window -> Recurrence pattern -> Repeat yearly
+# %1$S - ordinal with article, %2$S - weekday, %3$S - of, %4$S - month
+# e.g. "the First Saturday of September"
+# If you don't need %3$S in your locale - please put this on the third place.
+# DONT_TRANSLATE: Make sure there are no extra words in this property, just variables.
+yearlyOrder2=%1$S %2$S %3$S %4$S
+
+# LOCALIZATION NOTE (pluralForWeekdays):
+# This string allows to set the use of weekdays nouns in plural form for
+# languages that need them in sentences like "every Monday" or "every Sunday
+# of March" etc.
+# Rule strings involved by this setting are:
+# - weeklyNthOn (only the first part) e.g. "every Sunday"
+# - monthlyEveryOfEvery
+# e.g. "every Monday of every month;every Monday every 2 months"
+# - yearlyOnEveryNthOfNth
+# e.g. "every Friday of March;every 2 years on every Friday of March"
+# In your local write:
+# "true" if sentences like those above need weekday in plural form;
+# "false" if sentences like those above don't need weekday in plural form;
+pluralForWeekdays=false
+
+# LOCALIZATION NOTE (repeatDetailsDayxxxPlural):
+# Edit recurrence window -> Recurrence details link on Event/Task dialog window
+# Weekdays in plural form used inside sentences like "every Monday" or
+# "every Sunday of May" etc. for languages that need them.
+# These plurals will be used inside the following rule strings only if string
+# 'pluralForWeekdays' (see above) is set to "true":
+# - weeklyNthOn (only the first part) e.g. "every Sunday"
+# - monthlyEveryOfEvery
+# e.g. "every Monday of every month;every Monday every 2 months"
+# - yearlyOnEveryNthOfNth
+# e.g. "every Friday of March;every 2 years on every Friday of March"
+repeatDetailsDay1Plural=diumenges
+repeatDetailsDay2Plural=dilluns
+repeatDetailsDay3Plural=dimarts
+repeatDetailsDay4Plural=dimecres
+repeatDetailsDay5Plural=dijous
+repeatDetailsDay6Plural=divendres
+repeatDetailsDay7Plural=dissabtes
+
+# 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=Per sempre
+
+# 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=Últim dia
+
+# 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 ha acceptat la invitació, però ha fet una contraproposta:
+
+# 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 ha declinat la invitació, però ha fet una contraproposta:
+
+# 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 ha delegat la invitació, però ha fet una contraproposta:
+
+# 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 no ha decidit si participarà i ha fet una contraproposta:
+
+# 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 ha acceptat la invitació provisionalment i ha fet una contraproposta:
+
+# LOCALIZATION NOTE (counterOnPreviousVersionNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnPreviousVersionNotification=Aquesta és la contraproposta d'una versió anterior d'aquesta cita.
+
+# LOCALIZATION NOTE (counterOnCounterDisallowedNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnCounterDisallowedNotification=Heu inhabilitat les contrapropostes quan heu enviat la invitació.
+
+# LOCALIZATION NOTE (eventAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation
+eventAccepted=Heu acceptat aquesta invitació
+
+# LOCALIZATION NOTE (eventTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation tentatively
+eventTentative=Heu acceptat provisionalment aquesta invitació
+
+# LOCALIZATION NOTE (eventDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the event invitation
+eventDeclined=Heu declinat aquesta invitació
+
+# 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=Heu delegat aquesta invitació
+
+# LOCALIZATION NOTE (eventNeedsAction) - this will be displayed as notification
+# in the summary dialog if the user hasn't yet responded to an invitation
+eventNeedsAction=Encara no heu respost a aquesta invitació
+
+# LOCALIZATION NOTE (taskAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the assigned task
+taskAccepted=Heu acceptat participar en aquesta tasca
+
+# LOCALIZATION NOTE (taskTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted tentatively the assigned task
+taskTentative=Heu acceptat provisionalment participar en aquesta tasca
+
+# LOCALIZATION NOTE (taskDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the assigned task
+taskDeclined=Heu declinat participar en aquesta tasca
+
+# 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=Heu delegat la participació en aquesta tasca
+
+# 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=Encara no heu respost a l'assignació d'aquesta tasca
+
+# LOCALIZATION NOTE (taskInProgress) - this will be displayed as notification
+# in the summary dialog if the user is working on an assigned task
+taskInProgress=Heu començat a participar en aquesta tasca assignada
+
+# 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=Heu acabat la vostra participació en aquesta tasca assignada
+
+# 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=Envia i tanca
+
+# 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=Notifica els assistents i tanca
+
+# 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=Desa i tanca
+
+# 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=Desa i notifica els assistents
+
+# 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=Desa i tanca
+
+# 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=Envia i tanca
+
+# 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=Assistents (%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=Adjuncions (%1$S):
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-extract.properties b/l10n-ca/calendar/chrome/calendar/calendar-extract.properties
new file mode 100644
index 0000000000..3f0d9107d3
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-extract.properties
@@ -0,0 +1,294 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# LOCALIZATION NOTE:
+# Strings here are used to create events and tasks with start and end times
+# based on email content.
+# None of the strings are displayed in the user interface.
+#
+# You don't have to fill all from.*, until.*, *.prefix and *.suffix patterns.
+# It's ok to leave some empty.
+# Please consider declensions and gender if your language has them.
+# Don't just translate directly. The number of variants doesn't have to be
+# the same as in en-US. All of 0, 1, 2, etc is allowed in patterns except alphabet
+# pattern. You can and should add language specific variants.
+#
+# There are two different ways to find a start time text in email:
+# 1) it matches a from.* pattern and does not have end.prefix or end.suffix next to it
+# 2) it matches until.* pattern and has start.prefix or start.suffix next to it
+# Similar inverse logic applies to end times.
+# These rules enable using prefix and suffix values with only start.* or only until.*
+# patterns localized for some languages and thus not having to repeat the same
+# values in both.
+#
+# Patterns are partially space-insensitive.
+# "deadline is" pattern will find both "deadlineis" and "deadline is"
+# but "deadlineis" won't find "deadline is" or "deadline is".
+# Therefore you should include all spaces that are valid within a pattern.
+
+# LOCALIZATION NOTE (start.prefix):
+# datetimes with these in front are extracted as start times
+# can be a list of values, separate variants by |
+start.prefix =de | de la | de les | des de | des de la | des de les | a partir de | a partir de la | a partir de les | entre | entre la | entre les
+
+# LOCALIZATION NOTE (start.suffix):
+# datetimes followed by these are extracted as start times
+start.suffix = a la | a les | fins la | fins les | fins a la | fins a les | - | i | i la | i les
+
+# LOCALIZATION NOTE (end.prefix):
+# datetimes with these in front are extracted as end times
+end.prefix = a la | a les | fins la | fins les | - | i | venciment: | venciment | acaba | data límit | data límit:
+
+# 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 = la setmana passada | la darrera setmana | enviat | correu | correu electrònic | en lloc de | > | desafortunadament | en | no
+
+# LOCALIZATION NOTE (no.datetime.suffix):
+# datetimes followed by these won't be used
+no.datetime.suffix = de la darrera setmana | : | correu | correu electrònic | > | & | eur | euros | $
+
+# LOCALIZATION NOTE (from.*):
+# can be a list of values, separate variants by |
+
+# LOCALIZATION NOTE (from.today):
+# must not be empty!
+from.today = avui
+
+from.tomorrow = demà
+# 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 = #1er | #1n | #1r | #1t | #1è
+
+# LOCALIZATION NOTE (until.ordinal.date):
+# #1 = matches numbers 1-31 and number.x
+until.ordinal.date =
+
+from.noon = migdia
+until.noon =migdia
+
+# 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 = a la #1 | a les #1 | pels volts de la #1 | pels volts de les #1 | al voltant de la #1 | al voltant de les #1 | #1 - | #1 a | #1 fins
+
+# 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 | a #1 | a la #1 | a les #1 | fins a la #1 | fins a les #1 | fins la #1 | fins les #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 = mitja hora abans de la #1 | mitja hora abans de les #1 | dos quarts d'#1 | dos quarts de #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 = #1 i mitja
+
+# 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 | #1.#2 | a la #1:#2 | a la #1.#2 | a les #1:#2 | a les #1.#2 | de la #1:#2 | de la #1.#2 | de les #1:#2 | de les #1.#2
+
+# LOCALIZATION NOTE (until.hour.minutes):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+until.hour.minutes =- #1:#2 | - #1.#2 | fins a la #1:#2 | fins a la #1.#2 | fins a les #1:#2 | fins a les #1.#2 | fins la #1:#2 | fins la #1.#2 | fins les #1:#2 | fins les #1.#2
+
+# 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 | #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 | #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 | #2 #1 | #1 de #2 | #1 d'#2 | #1er de #2 | #1n de #2 | #1r de #2 | #1t de #2 | #1è de #2 | #1er d'#2 | #1n d'#2 | #1r d'#2 | #1t d'#2 | #1è d'#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 | #1/#2 | #1.#2
+
+# LOCALIZATION NOTE (until.month.day):
+# #1 = matches numbers 1-31 and number.x
+# #2 = matches numbers 1-12
+until.month.day =
+
+# LOCALIZATION NOTE (from.year.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+# #3 = matches 2/4 numbers
+from.year.month.day = #1/#2/#3 | #1-#2-#3 | #1.#2.#3
+
+# LOCALIZATION NOTE (until.year.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+# #3 = matches 2/4 numbers
+until.year.month.day =
+
+# LOCALIZATION NOTE (from.year.monthname.day):
+# #1 = matches numbers 1-31
+# #2 = matches monthname
+# #3 = matches 2/4 numbers
+from.year.monthname.day = #1 #2 #3 | #1 de #2 de #3 | #1 d'#2 de #3 | #1 de #2 del #3 | #1 d'#2 del #3 | #1er de #2 de #3 | #1er d'#2 de #3 | #1er de #2 del #3 | #1er d'#2 del #3 | #1n de #2 de #3 | #1n d'#2 de #3 | #1n de #2 del #3 | #1n d'#2 del #3 | #1r de #2 de #3 | #1r d'#2 de #3 | #1r de #2 del #3 | #1r d'#2 del #3 | #1t de #2 de #3 | #1t d'#2 de #3 | #1t de #2 del #3 | #1t d'#2 del #3 | #1è de #2 de #3 | #1è d'#2 de #3 | #1è de #2 del #3 | #1è d'#2 del #3 | #1/#2/#3 | #1-#2-#3 | #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 minuts | #1 min | #1 mins
+
+# LOCALIZATION NOTE (duration.hours):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.hours = #1 hora | #1 hores
+
+# LOCALIZATION NOTE (duration.days):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.days = #1 dia | #1 dies
+
+# LOCALIZATION NOTE (month.*):
+# can be a list of values, separate variants by |
+month.1 = gener | gen | gen.
+month.2 = febrer | feb | feb. | febr | febr.
+month.3 = març | mar | mar.
+month.4 = abril | abr | abr.
+month.5 = maig | mai | mai.
+month.6 = juny | jun | jun.
+month.7 = juliol | jul | jul.
+month.8 = agost | ag | ag. | ago | ago.
+month.9 = setembre | set | set.
+month.10 = octubre | oct | oct.
+month.11 = novembre | nov | nov.
+month.12 = desembre | des | des.
+
+# 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 = diumenge | diumenges | dg | dg. | diu. | dium.
+from.weekday.1 = dilluns | dl | dl. | dll | dll. | dill | dill.
+from.weekday.2 = dimarts | dt | dt.
+from.weekday.3 = dimecres | dc | dc. | dx | dx.
+from.weekday.4 = dijous | dj | dj. | dij | dij.
+from.weekday.5 = divendres | dv | dv. | div | div.
+from.weekday.6 = dissabte | dissabtes | ds | ds. | dss | dss. | dis | dis. | diss | diss.
+
+# 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 = zero
+number.1 = u | un | una | uns | unes | primer | primera | primers | primeres
+number.2 = dos | dues | segon | segona | segons | segones
+number.3 = tres | tercer | tercera | tercers | terceres
+number.4 = quatre | quart | quarta | quarts | quartes
+number.5 = cinc | cinquè | cinquena | cinquens | cinquenes | cinqué | quint | quinta
+number.6 = sis | sisè | sisena | sisens | sisenes | sisé
+number.7 = set | setè | setena | setens | setenes | seté
+number.8 = vuit | vuitè | vuitena | vuitens | vuitenes | vuité
+number.9 = nou | novè | novena | novens | novenes | nové
+number.10 = deu | desè | desena | desens | desenes | desé
+number.11 = onze | onzè | onzena | onzens | onzenes | onzé
+number.12 = dotze | dotzè | dotzena | dotzens | dotzenes | dotzé
+number.13 = tretze | tretzè | tretzena | tretzens | tretzenes | tretzé
+number.14 = catorze | catorzè | catorzena | catorzens | catorzenes | catorzé
+number.15 = quinze | quinzè | quinzena | quinzens | quinzenes | quinzé
+number.16 = setze | setzè | setzena | setzens | setzenes | setzé
+number.17 = disset | dissetè | dissetena | dissetens | dissetenes | disseté
+number.18 = divuit | divuitè | divuitena | divuitens | divuitenes | divuité | dihuit | dihuité | dihuitè
+number.19 = dinou | dinovè | dinovena | dinovens | dinovenes | dinové
+number.20 = vint | vintè | vintena | vintens | vintenes | vinté
+number.21 = vint-i-u | vint-i-un | vint-i-una | vint-i-unè | vint-i-unena | vint-i-uné
+number.22 = vint-i-dos | vint-i-dues | vint-i-dosè | vint-i-dosena | vint-i-dosé
+number.23 = vint-i-tres | vint-i-tresè | vint-i-tresena | vint-i-tresé
+number.24 = vint-i-quatre | vint-i-quatrè | vint-i-quatrena | vint-i-quatré
+number.25 = vint-i-cinc | vint-i-cinquè | vint-i-cinquena | vint-i-cinqué
+number.26 = vint-i-sis | vint-i-sisè | vint-i-sisena | vint-i-sisé
+number.27 = vint-i-set | vint-i-setè | vint-i-setena | vint-i-seté
+number.28 = vint-i-vuit | vint-i-vuitè | vint-i-vuitena | vint-i-vuité | vint-i-huit | vint-i-huitè | vint-i-huité
+number.29 = vint-i-nou | vint-i-novè | vint-i-novena | vint-i-nové
+number.30 = trenta | trentè | trentena | trentens | trentenes | trenté
+number.31 = trenta-u | trenta-un | trenta-una | trenta-unè | trenta-unena | trenta-uné
+
+# LOCALIZATION NOTE (alphabet):
+# list all lower and uppercase letters if your language has an alphabet
+# otherwise leave it empty
+alphabet = abcçdefghijklmnopqrstuvwxyzABCÇDEFGHIJKLMNOPQRSTUVWXYZ
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.dtd b/l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.dtd
new file mode 100644
index 0000000000..dc6ca94306
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.dtd
@@ -0,0 +1,19 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-->
+<!-- Calendar Invitations Dialog -->
+
+<!ENTITY calendar.invitations.dialog.invitations.text "Invitacions">
+<!ENTITY calendar.invitations.dialog.statusmessage.updating.text "S'està actualitzant la llista d'invitacions.">
+<!ENTITY calendar.invitations.dialog.statusmessage.noinvitations.text "No s'han trobat invitacions per confirmar.">
+<!-- Calendar Invitations List -->
+
+<!ENTITY calendar.invitations.list.accept.button.label "Accepta">
+<!ENTITY calendar.invitations.list.decline.button.label "Declina">
+<!ENTITY calendar.invitations.list.recurrentevent.text "Cita repetitiva">
+<!ENTITY calendar.invitations.list.alldayevent.text "Cita de tot el dia">
+<!ENTITY calendar.invitations.list.location.text "Ubicació: ">
+<!ENTITY calendar.invitations.list.organizer.text "Organitzador: ">
+<!ENTITY calendar.invitations.list.attendee.text "Assistent: ">
+<!ENTITY calendar.invitations.list.none.text "Cap">
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.properties b/l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.properties
new file mode 100644
index 0000000000..04b1d42e62
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-invitations-dialog.properties
@@ -0,0 +1,10 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+allday-event=Cita de tot el dia
+recurrent-event=Cita repetitiva
+location=Ubicació: %S
+organizer=Organitzador: %S
+attendee=Assistent: %S
+none=Cap
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.dtd b/l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.dtd
new file mode 100644
index 0000000000..5864a9335f
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.dtd
@@ -0,0 +1,7 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY buttons.occurrence.accesskey "t">
+<!ENTITY buttons.allfollowing.accesskey "f">
+<!ENTITY buttons.parent.accesskey "a">
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.properties b/l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.properties
new file mode 100644
index 0000000000..4de19200ca
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-occurrence-prompt.properties
@@ -0,0 +1,53 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+header.isrepeating.event.label=és una cita periòdica
+header.isrepeating.task.label=és una tasca periòdica
+header.containsrepeating.event.label=conté cites periòdiques
+header.containsrepeating.task.label=conté tasques periòdiques
+header.containsrepeating.mixed.label=conté elements periòdics de diversos tipus
+
+windowtitle.event.copy=Copia la cita periòdica
+windowtitle.task.copy=Copia la tasca periòdica
+windowtitle.mixed.copy=Copia els elements periòdics
+windowtitle.event.cut=Retalla la cita periòdica
+windowtitle.task.cut=Retalla la tasca periòdica
+windowtitle.mixed.cut=Retalla els elements periòdics
+windowtitle.event.delete=Suprimeix la cita periòdica
+windowtitle.task.delete=Suprimeix la tasca periòdica
+windowtitle.mixed.delete=Suprimeix els elements periòdics
+windowtitle.event.edit=Edita la cita periòdica
+windowtitle.task.edit=Edita la tasca periòdica
+windowtitle.mixed.edit=Edita els elements periòdics
+windowtitle.multipleitems=Elements seleccionats
+
+buttons.single.occurrence.copy.label=Copia només aquesta ocurrència
+buttons.single.occurrence.cut.label=Retalla només aquesta ocurrència
+buttons.single.occurrence.delete.label=Suprimeix només aquesta ocurrència
+buttons.single.occurrence.edit.label=Edita només aquesta ocurrència
+
+buttons.multiple.occurrence.copy.label=Copia només les ocurrències seleccionades
+buttons.multiple.occurrence.cut.label=Retalla només les ocurrències seleccionades
+buttons.multiple.occurrence.delete.label=Suprimeix només les ocurrències seleccionades
+buttons.multiple.occurrence.edit.label=Edita només les ocurrències seleccionades
+
+buttons.single.allfollowing.copy.label=Copia aquesta ocurrència i totes les posteriors
+buttons.single.allfollowing.cut.label=Retalla aquesta ocurrència i totes les posteriors
+buttons.single.allfollowing.delete.label=Suprimeix aquesta ocurrència i totes les posteriors
+buttons.single.allfollowing.edit.label=Edita aquesta ocurrència i totes les posteriors
+
+buttons.multiple.allfollowing.copy.label=Copia les ocurrències seleccionades i totes les posteriors
+buttons.multiple.allfollowing.cut.label=Retalla les ocurrències seleccionades i totes les posteriors
+buttons.multiple.allfollowing.delete.label=Suprimeix les ocurrències seleccionades i totes les posteriors
+buttons.multiple.allfollowing.edit.label=Edita les ocurrències seleccionades i totes les posteriors
+
+buttons.single.parent.copy.label=Copia totes les ocurrències
+buttons.single.parent.cut.label=Retalla totes les ocurrències
+buttons.single.parent.delete.label=Suprimeix totes les ocurrències
+buttons.single.parent.edit.label=Edita totes les ocurrències
+
+buttons.multiple.parent.copy.label=Copia totes les ocurrències dels elements seleccionats
+buttons.multiple.parent.cut.label=Retalla totes les ocurrències dels elements seleccionats
+buttons.multiple.parent.delete.label=Suprimeix totes les ocurrències dels elements seleccionats
+buttons.multiple.parent.edit.label=Edita totes les ocurrències dels elements seleccionats
diff --git a/l10n-ca/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd b/l10n-ca/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd
new file mode 100644
index 0000000000..2399a38c63
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar-subscriptions-dialog.dtd
@@ -0,0 +1,14 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/.
+-->
+<!-- Calendar Subscriptions Dialog -->
+
+<!ENTITY calendar.subscriptions.dialog.title "Subscripció de calendaris">
+<!ENTITY calendar.subscriptions.dialog.search.label.value "Mostra els calendaris que continguin:">
+<!ENTITY calendar.subscriptions.dialog.search.button.label "Cerca">
+<!ENTITY calendar.subscriptions.dialog.select.label.value "Selecciona els calendaris on subscriure's:">
+<!ENTITY calendar.subscriptions.dialog.subscribe.button.label "Subscriu-me">
+<!ENTITY calendar.subscriptions.dialog.unsubscribe.button.label "Cancel·la la subscripció">
+<!ENTITY calendar.subscriptions.dialog.statusmessage.busy.label "S'està cercant…">
+<!ENTITY calendar.subscriptions.dialog.statusmessage.nomatches.label "No s'ha trobat cap coincidència.">
diff --git a/l10n-ca/calendar/chrome/calendar/calendar.dtd b/l10n-ca/calendar/chrome/calendar/calendar.dtd
new file mode 100644
index 0000000000..26dba2e50b
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar.dtd
@@ -0,0 +1,411 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- General -->
+<!ENTITY calendar.calendar.label "Calendari">
+<!ENTITY calendar.calendar.accesskey "C">
+
+<!ENTITY calendar.newevent.button.tooltip "Crea una cita nova" >
+<!ENTITY calendar.newtask.button.tooltip "Crea una tasca nova" >
+
+<!ENTITY calendar.unifinder.todoitems.label "Tasques" >
+
+<!ENTITY calendar.unifinder.showcompletedtodos.label "Mostra les tasques acabades">
+
+<!ENTITY calendar.today.button.label "Avui">
+<!ENTITY calendar.tomorrow.button.label "Demà">
+<!ENTITY calendar.upcoming.button.label "Properes">
+
+<!ENTITY calendar.events.filter.all.label "Totes les cites">
+<!ENTITY calendar.events.filter.today.label "Cites d'avui">
+<!ENTITY calendar.events.filter.future.label "Totes les cites futures">
+<!ENTITY calendar.events.filter.current.label "Dia seleccionat actualment">
+<!ENTITY calendar.events.filter.currentview.label "Cites de la vista actual">
+<!ENTITY calendar.events.filter.next7Days.label "Cites dels propers 7 dies">
+<!ENTITY calendar.events.filter.next14Days.label "Cites dels propers 14 dies">
+<!ENTITY calendar.events.filter.next31Days.label "Cites dels propers 31 dies">
+<!ENTITY calendar.events.filter.thisCalendarMonth.label "Cites d'aquest mes del calendari">
+
+<!-- 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 "Feta">
+<!ENTITY calendar.unifinder.tree.done.tooltip2 "Ordena per compleció">
+<!ENTITY calendar.unifinder.tree.priority.label "Prioritat">
+<!ENTITY calendar.unifinder.tree.priority.tooltip2 "Ordena per prioritat">
+<!ENTITY calendar.unifinder.tree.title.label "Títol">
+<!ENTITY calendar.unifinder.tree.title.tooltip2 "Ordena per títol">
+<!ENTITY calendar.unifinder.tree.percentcomplete.label "&#37; acabada">
+<!ENTITY calendar.unifinder.tree.percentcomplete.tooltip2 "Ordena per &#37; acabada">
+<!ENTITY calendar.unifinder.tree.startdate.label "Inici">
+<!ENTITY calendar.unifinder.tree.startdate.tooltip2 "Ordena per data d'inici">
+<!ENTITY calendar.unifinder.tree.enddate.label "Fi">
+<!ENTITY calendar.unifinder.tree.enddate.tooltip2 "Ordena per data de fi">
+<!ENTITY calendar.unifinder.tree.duedate.label "Venciment">
+<!ENTITY calendar.unifinder.tree.duedate.tooltip2 "Ordena per data de venciment">
+<!ENTITY calendar.unifinder.tree.completeddate.label "Acabada">
+<!ENTITY calendar.unifinder.tree.completeddate.tooltip2 "Ordena per data d'acabament">
+<!ENTITY calendar.unifinder.tree.categories.label "Categoria">
+<!ENTITY calendar.unifinder.tree.categories.tooltip2 "Ordena per categoria">
+<!ENTITY calendar.unifinder.tree.location.label "Ubicació">
+<!ENTITY calendar.unifinder.tree.location.tooltip2 "Ordena per ubicació">
+<!ENTITY calendar.unifinder.tree.status.label "Estat">
+<!ENTITY calendar.unifinder.tree.status.tooltip2 "Ordena per estat">
+<!ENTITY calendar.unifinder.tree.calendarname.label "Nom del calendari">
+<!ENTITY calendar.unifinder.tree.calendarname.tooltip2 "Ordena per nom del calendari">
+<!ENTITY calendar.unifinder.tree.duration.label "Temps restant">
+<!ENTITY calendar.unifinder.tree.duration.tooltip2 "Ordena per temps restant">
+<!ENTITY calendar.unifinder.close.tooltip "Tanca la llista i la cerca de cites">
+
+<!ENTITY calendar.today.button.tooltip "Vés a avui" >
+<!ENTITY calendar.todaypane.button.tooltip "Mostra el plafó d'avui" >
+
+<!ENTITY calendar.day.button.tooltip "Canvia a la vista diària" >
+<!ENTITY calendar.week.button.tooltip "Canvia a la vista setmanal" >
+<!ENTITY calendar.month.button.tooltip "Canvia a la vista mensual" >
+<!ENTITY calendar.multiweek.button.tooltip "Canvia a la vista multisetmanal" >
+
+<!ENTITY calendar.nextday.label "Dia següent" >
+<!ENTITY calendar.prevday.label "Dia anterior" >
+<!ENTITY calendar.nextday.accesskey "s" >
+<!ENTITY calendar.prevday.accesskey "a" >
+<!ENTITY calendar.nextweek.label "Setmana següent" >
+<!ENTITY calendar.prevweek.label "Setmana anterior" >
+<!ENTITY calendar.nextweek.accesskey "S" >
+<!ENTITY calendar.prevweek.accesskey "a" >
+<!ENTITY calendar.nextmonth.label "Mes següent" >
+<!ENTITY calendar.prevmonth.label "Mes anterior" >
+<!ENTITY calendar.nextmonth.accesskey "s" >
+<!ENTITY calendar.prevmonth.accesskey "a" >
+
+<!ENTITY calendar.navigation.nextday.tooltip "Dia següent" >
+<!ENTITY calendar.navigation.prevday.tooltip "Dia anterior" >
+<!ENTITY calendar.navigation.nextweek.tooltip "Setmana següent" >
+<!ENTITY calendar.navigation.prevweek.tooltip "Setmana anterior" >
+<!ENTITY calendar.navigation.nextmonth.tooltip "Mes següent" >
+<!ENTITY calendar.navigation.prevmonth.tooltip "Mes anterior" >
+
+<!ENTITY calendar.newevent.button.label "Cita nova" >
+<!ENTITY calendar.newtask.button.label "Tasca nova" >
+<!ENTITY calendar.print.button.label "Imprimeix" >
+<!ENTITY calendar.print.button.accesskey "p">
+
+<!ENTITY calendar.day.button.label "Dia" >
+<!ENTITY calendar.week.button.label "Setmana" >
+<!ENTITY calendar.month.button.label "Mes" >
+<!ENTITY calendar.multiweek.button.label "Multisetmana" >
+<!ENTITY calendar.onlyworkday.checkbox.label "Només els dies feiners" >
+<!ENTITY calendar.onlyworkday.checkbox.accesskey "d" >
+<!ENTITY calendar.displaytodos.checkbox.label "Tasques de la vista" >
+<!ENTITY calendar.displaytodos.checkbox.accesskey "q" >
+<!ENTITY calendar.completedtasks.checkbox.label "Mostra les tasques acabades" >
+<!ENTITY calendar.completedtasks.checkbox.accesskey "c" >
+
+<!ENTITY calendar.orientation.label "Gira la vista" >
+<!ENTITY calendar.orientation.accesskey "G" >
+
+<!ENTITY calendar.search.options.searchfor " que continguin">
+
+<!ENTITY calendar.list.header.label "Calendari">
+
+<!ENTITY calendar.task.filter.title.label "Mostra">
+<!ENTITY calendar.task.filter.all.label "Totes">
+<!ENTITY calendar.task.filter.all.accesskey "T">
+<!ENTITY calendar.task.filter.today.label "Avui">
+<!ENTITY calendar.task.filter.today.accesskey "A">
+<!ENTITY calendar.task.filter.next7days.label "Els pròxims 7 dies">
+<!ENTITY calendar.task.filter.next7days.accesskey "7">
+<!ENTITY calendar.task.filter.notstarted.label "Tasques sense començar">
+<!ENTITY calendar.task.filter.notstarted.accesskey "o">
+<!ENTITY calendar.task.filter.overdue.label "Tasques endarrerides">
+<!ENTITY calendar.task.filter.overdue.accesskey "e">
+<!ENTITY calendar.task.filter.completed.label "Tasques acabades">
+<!ENTITY calendar.task.filter.completed.accesskey "c">
+<!ENTITY calendar.task.filter.open.label "Tasques inacabades">
+<!ENTITY calendar.task.filter.open.accesskey "b">
+
+<!-- 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 "Tasques actuals">
+<!ENTITY calendar.task.filter.current.accesskey "u">
+
+<!ENTITY calendar.task-details.title.label "títol">
+<!ENTITY calendar.task-details.organizer.label "des de">
+<!ENTITY calendar.task-details.priority.label "prioritat">
+<!ENTITY calendar.task-details.priority.low.label "Baixa">
+<!ENTITY calendar.task-details.priority.normal.label "Normal">
+<!ENTITY calendar.task-details.priority.high.label "Alta">
+<!ENTITY calendar.task-details.status.label "estat">
+<!ENTITY calendar.task-details.category.label "categoria">
+<!ENTITY calendar.task-details.repeat.label "repetició">
+<!ENTITY calendar.task-details.attachments.label "adjuncions">
+<!ENTITY calendar.task-details.start.label "data d'inici">
+<!ENTITY calendar.task-details.due.label "data de venciment">
+
+<!ENTITY calendar.task.category.button.tooltip "Categorització de tasques">
+<!ENTITY calendar.task.complete.button.tooltip "Marca les tasques seleccionades com a acabades">
+<!ENTITY calendar.task.priority.button.tooltip "Canvia la prioritat">
+
+<!ENTITY calendar.task.text-filter.textbox.emptytext.base1 "Filtra les tasques #1">
+<!ENTITY calendar.task.text-filter.textbox.emptytext.keylabel.nonmac "&lt;Ctrl+Maj+K&gt;">
+<!ENTITY calendar.task.text-filter.textbox.emptytext.keylabel.mac "&lt;&#x21E7;&#x2318;K&gt;">
+
+<!-- Context Menu -->
+<!ENTITY calendar.context.modifyorviewitem.label "Obre">
+<!ENTITY calendar.context.modifyorviewitem.accesskey "O">
+<!ENTITY calendar.context.modifyorviewtask.label "Obre la tasca…">
+<!ENTITY calendar.context.modifyorviewtask.accesskey "b">
+<!ENTITY calendar.context.newevent.label "Cita nova…">
+<!ENTITY calendar.context.newevent.accesskey "i">
+<!ENTITY calendar.context.newtodo.label "Tasca nova…">
+<!ENTITY calendar.context.newtodo.accesskey "n">
+<!ENTITY calendar.context.deletetask.label "Suprimeix la tasca">
+<!ENTITY calendar.context.deletetask.accesskey "S">
+<!ENTITY calendar.context.deleteevent.label "Suprimeix la cita">
+<!ENTITY calendar.context.deleteevent.accesskey "S">
+<!ENTITY calendar.context.cutevent.label "Retalla">
+<!ENTITY calendar.context.cutevent.accesskey "t">
+<!ENTITY calendar.context.copyevent.label "Copia">
+<!ENTITY calendar.context.copyevent.accesskey "C">
+<!ENTITY calendar.context.pasteevent.label "Enganxa">
+<!ENTITY calendar.context.pasteevent.accesskey "x">
+<!ENTITY calendar.context.button.label "Plafó d'avui">
+<!ENTITY calendar.context.button.accesskey "a">
+
+<!ENTITY calendar.context.attendance.menu.label "Assistència">
+<!ENTITY calendar.context.attendance.menu.accesskey "A">
+<!ENTITY calendar.context.attendance.occurrence.label "Aquesta ocurrència">
+<!ENTITY calendar.context.attendance.all2.label "Sèrie completa">
+<!ENTITY calendar.context.attendance.send.label "Envia una notificació ara">
+<!ENTITY calendar.context.attendance.send.accesskey "E">
+<!ENTITY calendar.context.attendance.dontsend.label "No enviïs cap notificació">
+<!ENTITY calendar.context.attendance.dontsend.accesskey "N">
+
+<!ENTITY calendar.context.attendance.occ.accepted.accesskey "A">
+<!ENTITY calendar.context.attendance.occ.accepted.label "Acceptada">
+<!ENTITY calendar.context.attendance.occ.tentative.accesskey "v">
+<!ENTITY calendar.context.attendance.occ.tentative.label "Acceptada provisionalment">
+<!ENTITY calendar.context.attendance.occ.declined.accesskey "n">
+<!ENTITY calendar.context.attendance.occ.declined.label "Declinada">
+<!ENTITY calendar.context.attendance.occ.delegated.accesskey "g">
+<!ENTITY calendar.context.attendance.occ.delegated.label "Delegada">
+<!ENTITY calendar.context.attendance.occ.needsaction.accesskey "E">
+<!ENTITY calendar.context.attendance.occ.needsaction.label "Encara necessita una acció">
+<!ENTITY calendar.context.attendance.occ.inprogress.accesskey "r">
+<!ENTITY calendar.context.attendance.occ.inprogress.label "En curs">
+<!ENTITY calendar.context.attendance.occ.completed.accesskey "b">
+<!ENTITY calendar.context.attendance.occ.completed.label "Acabada">
+
+<!ENTITY calendar.context.attendance.all.accepted.accesskey "c">
+<!ENTITY calendar.context.attendance.all.accepted.label "Acceptada">
+<!ENTITY calendar.context.attendance.all.tentative.accesskey "o">
+<!ENTITY calendar.context.attendance.all.tentative.label "Acceptada provisionalment">
+<!ENTITY calendar.context.attendance.all.declined.accesskey "i">
+<!ENTITY calendar.context.attendance.all.declined.label "Declinada">
+<!ENTITY calendar.context.attendance.all.delegated.accesskey "l">
+<!ENTITY calendar.context.attendance.all.delegated.label "Delegada">
+<!ENTITY calendar.context.attendance.all.needsaction.accesskey "s">
+<!ENTITY calendar.context.attendance.all.needsaction.label "Encara necessita una acció">
+<!ENTITY calendar.context.attendance.all.inprogress.accesskey "u">
+<!ENTITY calendar.context.attendance.all.inprogress.label "En curs">
+<!ENTITY calendar.context.attendance.all.completed.accesskey "d">
+<!ENTITY calendar.context.attendance.all.completed.label "Acabada">
+
+<!-- Task Context Menu -->
+<!ENTITY calendar.context.progress.label "Progrés">
+<!ENTITY calendar.context.progress.accesskey "P">
+<!ENTITY calendar.context.priority.label "Prioritat">
+<!ENTITY calendar.context.priority.accesskey "r">
+<!ENTITY calendar.context.postpone.label "Ajorna la tasca">
+<!ENTITY calendar.context.postpone.accesskey "o">
+
+<!ENTITY percnt "&#38;#37;" ><!--=percent sign-->
+
+<!ENTITY calendar.context.markcompleted.label "Marca com a acabada">
+<!ENTITY calendar.context.markcompleted.accesskey "d">
+
+<!ENTITY progress.level.0 "0&percnt; acabat">
+<!ENTITY progress.level.0.accesskey "0">
+<!ENTITY progress.level.25 "25&percnt; acabat">
+<!ENTITY progress.level.25.accesskey "2">
+<!ENTITY progress.level.50 "50&percnt; acabat">
+<!ENTITY progress.level.50.accesskey "5">
+<!ENTITY progress.level.75 "75&percnt; acabat">
+<!ENTITY progress.level.75.accesskey "7">
+<!ENTITY progress.level.100 "100&percnt; acabat">
+<!ENTITY progress.level.100.accesskey "1">
+
+<!ENTITY priority.level.none "Sense especificar">
+<!ENTITY priority.level.none.accesskey "n">
+<!ENTITY priority.level.low "Baixa">
+<!ENTITY priority.level.low.accesskey "B">
+<!ENTITY priority.level.normal "Normal">
+<!ENTITY priority.level.normal.accesskey "N">
+<!ENTITY priority.level.high "Alta">
+<!ENTITY priority.level.high.accesskey "A">
+
+<!ENTITY calendar.context.postpone.1hour.label "1 hora">
+<!ENTITY calendar.context.postpone.1hour.accesskey "h">
+<!ENTITY calendar.context.postpone.1day.label "1 dia">
+<!ENTITY calendar.context.postpone.1day.accesskey "d">
+<!ENTITY calendar.context.postpone.1week.label "1 setmana">
+<!ENTITY calendar.context.postpone.1week.accesskey "s">
+
+<!ENTITY calendar.copylink.label "Copia l'enllaç">
+<!ENTITY calendar.copylink.accesskey "C">
+
+<!-- Task View -->
+<!-- Note that the above *.context.* strings are currently used for the other
+ task action buttons -->
+<!ENTITY calendar.taskview.delete.label "Suprimeix">
+
+<!-- Server Context Menu -->
+<!ENTITY calendar.context.newserver.label "Calendari nou…">
+<!ENTITY calendar.context.newserver.accesskey "n">
+<!ENTITY calendar.context.findcalendar.label "Cerca un calendari…" >
+<!ENTITY calendar.context.findcalendar.accesskey "C" >
+<!ENTITY calendar.context.deleteserver2.label "Suprimeix el calendari…">
+<!ENTITY calendar.context.deleteserver2.accesskey "S">
+
+<!-- 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 "Elimina el calendari…">
+<!ENTITY calendar.context.removeserver.accesskey "E">
+<!ENTITY calendar.context.unsubscribeserver.label "Cancel·la la subscripció al calendari…">
+<!ENTITY calendar.context.unsubscribeserver.accesskey "C">
+<!ENTITY calendar.context.synccalendars.label "Sincronitza els calendaris">
+<!ENTITY calendar.context.synccalendars.accesskey "S">
+<!ENTITY calendar.context.publish.label "Publica el calendari…">
+<!ENTITY calendar.context.publish.accesskey "b">
+<!ENTITY calendar.context.export.label "Exporta el calendari…">
+<!ENTITY calendar.context.export.accesskey "E">
+<!ENTITY calendar.context.properties.label "Propietats">
+<!ENTITY calendar.context.properties.accesskey "P">
+
+<!-- LOCALIZATION NOTE (calendar.context.showcalendar.accesskey)
+ This is the access key used for the showCalendar string -->
+<!ENTITY calendar.context.showcalendar.accesskey "o">
+
+<!-- LOCALIZATION NOTE (calendar.context.hidecalendar.accesskey)
+ This is the access key used for the hideCalendar string -->
+<!ENTITY calendar.context.hidecalendar.accesskey "m">
+
+<!-- LOCALIZATION NOTE (calendar.context.showonly.accesskey)
+ This is the access key used for the showOnlyCalendar string -->
+<!ENTITY calendar.context.showonly.accesskey "o">
+<!ENTITY calendar.context.showall.label "Mostra tots els calendaris">
+<!ENTITY calendar.context.showall.accesskey "t">
+
+<!ENTITY calendar.context.convertmenu.label "Converteix en">
+<!ENTITY calendar.context.convertmenu.accesskey.mail "n">
+<!ENTITY calendar.context.convertmenu.accesskey.calendar "v">
+<!ENTITY calendar.context.convertmenu.event.label "Cita…">
+<!ENTITY calendar.context.convertmenu.event.accesskey "C">
+<!ENTITY calendar.context.convertmenu.message.label "Missatge…">
+<!ENTITY calendar.context.convertmenu.message.accesskey "M">
+<!ENTITY calendar.context.convertmenu.task.label "Tasca…">
+<!ENTITY calendar.context.convertmenu.task.accesskey "T">
+
+<!ENTITY calendar.tasks.view.minimonth.label "Mini mes">
+<!ENTITY calendar.tasks.view.minimonth.accesskey "M">
+
+<!ENTITY calendar.tasks.view.calendarlist.label "Llista de calendaris">
+<!ENTITY calendar.tasks.view.calendarlist.accesskey "L">
+
+<!ENTITY calendar.tasks.view.filtertasks.label "Filtra les tasques">
+<!ENTITY calendar.tasks.view.filtertasks.accesskey "F">
+
+<!-- Calendar Alarm Dialog -->
+
+<!ENTITY calendar.alarm.location.label "Ubicació:" >
+<!ENTITY calendar.alarm.details.label "Detalls…" >
+
+<!ENTITY calendar.alarm.snoozefor.label "Ajorna fins d'aquí" >
+<!ENTITY calendar.alarm.snoozeallfor.label "Ajorna-ho tot fins d'aquí" >
+<!ENTITY calendar.alarm.title.label "Recordatoris del calendari" >
+<!ENTITY calendar.alarm.dismiss.label "Atura l'alarma" >
+<!ENTITY calendar.alarm.dismissall.label "Atura totes les alarmes" >
+
+<!ENTITY calendar.alarm.snooze.5minutes.label "5 minuts" >
+<!ENTITY calendar.alarm.snooze.10minutes.label "10 minuts" >
+<!ENTITY calendar.alarm.snooze.15minutes.label "15 minuts" >
+<!ENTITY calendar.alarm.snooze.30minutes.label "30 minuts" >
+<!ENTITY calendar.alarm.snooze.45minutes.label "45 minuts" >
+<!ENTITY calendar.alarm.snooze.1hour.label "1 hora" >
+<!ENTITY calendar.alarm.snooze.2hours.label "2 hores" >
+<!ENTITY calendar.alarm.snooze.1day.label "1 dia" >
+
+<!-- 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 "Cancel·la l'ajornament">
+
+<!-- Calendar Server Dialog -->
+<!ENTITY calendar.server.dialog.title.edit "Edita el calendari">
+<!ENTITY calendar.server.dialog.name.label "Nom del calendari:">
+
+<!-- Calendar Properties -->
+<!ENTITY calendarproperties.color.label "Color:">
+<!ENTITY calendarproperties.webdav.label "iCalendar (ICS)">
+<!ENTITY calendarproperties.caldav.label "CalDAV">
+<!ENTITY calendarproperties.wcap.label "Servidor de sistema de calendaris de Java de Sun (WCAP)">
+<!ENTITY calendarproperties.format.label "Format:">
+<!ENTITY calendarproperties.location.label "Ubicació:">
+<!ENTITY calendarproperties.refreshInterval.label "Actualització:">
+<!ENTITY calendarproperties.refreshInterval.manual.label "Manual">
+<!ENTITY calendarproperties.name.label "Nom:">
+<!ENTITY calendarproperties.readonly.label "Només de lectura">
+<!ENTITY calendarproperties.firealarms.label "Mostra els recordatoris">
+<!ENTITY calendarproperties.cache3.label "Funcionament fora de línia">
+<!ENTITY calendarproperties.enabled.label "Mostra aquest calendari">
+<!ENTITY calendarproperties.enabled2.label "Activa aquest calendari">
+<!ENTITY calendarproperties.forceDisabled.label "No s'ha pogut trobar el proveïdor d'aquest calendari. Això sol passar quan s'han inhabilitat o s'han desinstal·lat complements.">
+<!ENTITY calendarproperties.unsubscribe.label "Cancel·la la subscripció">
+<!ENTITY calendarproperties.unsubscribe.accesskey "C">
+
+<!-- Calendar Publish Dialog -->
+<!ENTITY calendar.publish.dialog.title "Publica el calendari">
+<!ENTITY calendar.publish.url.label "URL de publicació">
+<!ENTITY calendar.publish.publish.button "Publica">
+<!ENTITY calendar.publish.close.button "Tanca">
+
+<!ENTITY calendar.publish.example.url.description "Quelcom semblant a http://www.myserver.com/webdav/test.ics">
+
+<!-- Select Calendar Dialog -->
+<!ENTITY calendar.select.dialog.title "Selecció d'un calendari">
+
+<!-- Calendar Printing -->
+<!ENTITY calendar.print.window.title "Imprimeix un calendari">
+<!ENTITY calendar.print.title.label "Títol:">
+<!ENTITY calendar.print.layout.label "Format:">
+<!ENTITY calendar.print.range.label "Què s'imprimirà:">
+<!ENTITY calendar.print.currentView2.label "Vista actual">
+<!ENTITY calendar.print.selectedEventsAndTasks.label "Cites i tasques seleccionades">
+<!ENTITY calendar.print.tasks.label "Tasques">
+<!ENTITY calendar.print.events.label "Cites">
+<!ENTITY calendar.print.custom.label "Interval de dates personalitzat:">
+<!ENTITY calendar.print.from.label "Des de:">
+<!ENTITY calendar.print.to.label "Fins:">
+<!ENTITY calendar.print.settingsGroup.label "Paràmetres d'impressió">
+<!ENTITY calendar.print.optionsGroup.label "Opcions">
+<!ENTITY calendar.print.taskswithnoduedate.label "Tasques sense data de venciment">
+<!ENTITY calendar.print.completedtasks.label "Tasques acabades">
+
+<!-- Error reporting -->
+<!ENTITY calendar.error.detail "Detalls…">
+<!ENTITY calendar.error.code "Codi d'error:">
+<!ENTITY calendar.error.description "Descripció:">
+<!ENTITY calendar.error.title "S'ha produït un error">
+
+<!-- Extract buttons in message header -->
+<!ENTITY calendar.extract.event.button "Afegeix com a cita">
+<!ENTITY calendar.extract.task.button "Afegeix com a tasca">
+<!ENTITY calendar.extract.event.button.tooltip "Extreu la informació temporal del missatge i l'afegeix al calendari com a cita">
+<!ENTITY calendar.extract.task.button.tooltip "Extreu la informació temporal del missatge i l'afegeix al calendari com a tasca">
diff --git a/l10n-ca/calendar/chrome/calendar/calendar.properties b/l10n-ca/calendar/chrome/calendar/calendar.properties
new file mode 100644
index 0000000000..658f1339ba
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendar.properties
@@ -0,0 +1,818 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Misc. strings in JS
+
+# LOCALIZATION NOTE (PrintPreviewWindowTitle):
+# %1$S will be replaced with the title of a html frame
+PrintPreviewWindowTitle=Exemple d'impressió de %1$S
+Untitled=Sense títol
+
+# Default name for new events
+newEvent=Cita nova
+
+# Titles for the event/task dialog
+newEventDialog=Cita nova
+editEventDialog=Edita la cita
+newTaskDialog=Tasca nova
+editTaskDialog=Edita la tasca
+
+# Do you want to save changes?
+askSaveTitleEvent=Desa la cita
+askSaveTitleTask=Desa la tasca
+askSaveMessageEvent=La cita encara no s'ha desat. Voleu desar-la?
+askSaveMessageTask=La tasca encara no s'ha desat. Voleu desar-la?
+
+# Event Dialog Warnings
+warningEndBeforeStart=La data de finalització que heu escrit és anterior a la data d'inici
+warningUntilDateBeforeStart=La data de finalització és anterior a la data d'inici
+
+# The name of the calendar provided with the application by default
+homeCalendarName=Inici
+
+# The name given to a calendar if an opened calendar has an empty filename
+untitledCalendarName=Calendari sense títol
+
+# Event status: Tentative, Confirmed, Cancelled
+# ToDo task status: NeedsAction, InProcess, Completed, Cancelled
+statusTentative =Provisional
+statusConfirmed =Confirmada
+eventStatusCancelled=Cancel·lada
+todoStatusCancelled =Cancel·lada
+statusNeedsAction =Necessita una acció
+statusInProcess =En curs
+statusCompleted =Acabada
+
+# Task priority, these should match the priority.level.* labels in calendar.dtd
+highPriority=Alta
+normalPriority=Normal
+lowPriority=Baixa
+
+importPrompt=En quin calendari voleu importar-hi aquestes entrades?
+exportPrompt=Des de quin calendari voleu exportar?
+pastePrompt=En quin dels calendaris amb permís d'escriptura voleu enganxar la informació?
+publishPrompt=Quin calendari voleu publicar?
+
+# LOCALIZATION NOTE (pasteEventAlso): The users pasting operation includes among
+# others also a meeting invitation - this is used as a affix in
+# pasteNotifyAbout
+pasteEventAlso=El contingut que heu enganxat inclou una reunió
+# LOCALIZATION NOTE (pasteEventsAlso): The users pasting operation includes among
+# others also several meeting invitations - this is used as a affix in
+# pasteNotifyAbout
+pasteEventsAlso=El contingut que heu enganxat inclou reunions
+# LOCALIZATION NOTE (pasteTaskAlso): The users pasting operation includes among
+# others also an assigned task - this is used as a affix in pasteNotifyAbout
+pasteTaskAlso=El contingut que heu enganxat inclou una tasca assignada
+# LOCALIZATION NOTE (pasteTasksAlso): The users pasting operation include among
+# others also several assigned tasks - this is used as a affix in
+# pasteNotifyAbout
+pasteTasksAlso=El contingut que heu enganxat inclou tasques assignada
+# 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=El contingut que heu enganxat inclou reunions i tasques assignades
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting a meeting -
+# this is used as a affix in pasteNotifyAbout
+pasteEventOnly=Esteu enganxant una reunió
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several meetings -
+# this is used as a affix in pasteNotifyAbout
+pasteEventsOnly=Esteu enganxant reunions
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting an assigned task -
+# this is used as a affix in pasteNotifyAbout
+pasteTaskOnly=Esteu enganxant una tasca assignada
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several assigned
+# tasks - this is used as a affix in pasteNotifyAbout
+pasteTasksOnly=Esteu enganxant tasques assignades
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting assigned task(s) and
+# meeting(s) - this is used as a affix in pasteNotifyAbout
+pasteItemsOnly=Esteu enganxant reunions i tasques assignades
+
+# LOCALIZATION NOTE (pasteNotifyAbout): Text displayed if pasting an invitation
+# or assigned task
+# %1$S - pasteEvent* or pasteTask*
+pasteNotifyAbout=%1$S - Voleu enviar una actualització a totes les persones implicades?
+
+# LOCALIZATION NOTE (pasteAndNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteAndNotifyLabel=Enganxa i envia-ho ara
+# LOCALIZATION NOTE (pasteDontNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteDontNotifyLabel=Enganxa-ho però no ho enviïs
+
+# 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=No s'han pogut importar %1$S elements. El darrer error ha estat: %2$S
+# LOCALIZATION NOTE (noItemsInCalendarFile):
+# %1$S will be replaced with file path
+noItemsInCalendarFile=Ha fallat la importació des de %1$S. Aquest fitxer no conté cap element que es pugui importar.
+
+# LOCALIZATION NOTE (noItemsInCalendarFile2):
+# %1$S will be replaced with file path
+noItemsInCalendarFile2=No s'ha pogut importar de %1$S. Aquest fitxer no conté cap element que es pugui importar.
+
+#spaces needed at the end of the following lines
+eventDescription=Descripció:
+
+unableToRead=No s'ha pogut llegir del fitxer:
+unableToWrite=No s'ha pogut escriure al fitxer:
+defaultFileName=MozillaCalCites
+HTMLTitle=Calendari del 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=S'ha trobat un fus horari desconegut i indefinit mentre es llegia %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=S'ha(n) ignorat %1$S element(s) perquè existeixen tant al calendari de destinació com a %2$S.
+
+unableToCreateProvider=S'ha produït un error quan s'estava preparant el calendari %1$S per utilitzar-lo. No estarà disponible.
+unknownTimezonesError=S'ha produït un error quan s'estava preparant el calendari %1$S per utilitzar-lo. El calendari fa referència a fusos horaris desconeguts. Instal·leu l'últim calendar-timezones.xpi.
+missingCalendarTimezonesError=No s'ha trobat cap fus horari. Instal·leu calendar-timezones.xpi.
+
+# Sample: Unknown timezone "USPacific" in "Dentist Appt". Using the 'floating' local timezone instead: 2008/02/28 14:00:00
+unknownTimezoneInItem=S'ha trobat el fus horari desconegut «%1$S» a «%2$S». Es tractarà com a fus horari local «flotant»: %3$S
+TimezoneErrorsAlertTitle=Errors de fus horari
+TimezoneErrorsSeeConsole=Vegeu la consola d'errors: Els fusos horaris desconeguts es tractaran com a fus horari local «flotant».
+
+# The following strings are for the prompt to delete/unsubscribe from the calendar
+removeCalendarTitle=Elimina el calendari
+removeCalendarButtonDelete=Suprimeix el calendari
+removeCalendarButtonUnsubscribe=Cancel·la la subscripció
+
+# LOCALIZATION NOTE (removeCalendarMessageDeleteOrUnsubscribe): Shown for
+# calendar where both deleting and unsubscribing is possible.
+# %1$S: The name of a calendar
+removeCalendarMessageDeleteOrUnsubscribe=Voleu eliminar el calendari «%1$S»? Si cancel·leu la subscripció, s'eliminarà el calendari de la llista; si suprimiu el calendari, també se'n suprimiran les dades.
+
+# LOCALIZATION NOTE (removeCalendarMessageDelete): Shown for calendar where
+# deleting is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageDelete=Voleu suprimir permanentment el calendari «%1$S»?
+
+# LOCALIZATION NOTE (removeCalendarMessageUnsubscribe): Shown for calendar
+# where unsubscribing is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageUnsubscribe=Voleu cancel·lar la subscripció al calendari «%1$S»?
+
+WeekTitle=setmana %1$S
+None=Cap
+
+# Error strings
+## @name UID_NOT_FOUND
+## @loc none
+tooNewSchemaErrorBoxTitle=Les vostres dades de calendari no són compatibles amb aquesta versió del %1$S
+
+# LOCALIZATION NOTE (tooNewSchemaErrorBoxTextLightning):
+# %1$S will be replaced with the name of the calendar application e.g. 'Lightning'
+# %2$S will be replaced with the name of the host application 'calendar'
+tooNewSchemaErrorBoxTextLightning=Les dades de calendari en el vostre perfil s'han actualitzat a una versió nova del %1$S, i si continueu, segurament la informació es perdrà o es farà malbé. Ara s'inhabilitarà el %1$S i el %2$S es tornarà a iniciar.
+
+# LOCALIZATION NOTE (tooNewSchemaButtonRestart):
+# %1$S will be replaced with the name of the host application 'Calendar'
+tooNewSchemaButtonRestart=Torna a iniciar el %1$S
+
+# LOCALIZATION NOTE (tooNewSchemaButtonQuit):
+# %1$S will be replaced with the name of the host application 'Calendar'
+tooNewSchemaButtonQuit=Surt del %1$S
+
+# Error strings
+## @name UID_NOT_FOUND
+## @loc none
+
+# LOCALIZATION NOTE (tooNewSchemaErrorText):
+# %1$S will be replaced with the name of the host application, e.g. 'Thunderbird'
+# %2$S will be replaced with the name of the new copy of the file, e.g. 'local-2020-05-11T21-30-17.sqlite'
+tooNewSchemaErrorText=Les dades del calendari no són compatibles amb aquesta versió del %1$S. Una versió més recent del %1$S va actualitzar les dades del calendari del vostre perfil. S'ha creat una còpia de seguretat del fitxer de dades anomenat «%2$S». Es continuarà amb un fitxer de dades nou.
+
+# List of events or todos (unifinder)
+eventUntitled=Sense títol
+
+# Tooltips of events or todos
+tooltipTitle=Títol:
+tooltipLocation=Ubicació:
+# 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=Data:
+# event calendar name
+tooltipCalName=Nom del calendari:
+# event status: tentative, confirmed, cancelled
+tooltipStatus=Estat:
+# event organizer
+tooltipOrganizer=Organitzador:
+# task/todo fields
+# start date time, due date time, task priority number, completed date time
+tooltipStart=Inici:
+tooltipDue=Venciment:
+tooltipPriority=Prioritat:
+tooltipPercent=% acabada:
+tooltipCompleted=Acabat:
+
+# 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 presideix la cita.
+# 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 no hi participa.
+# 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 és un participant opcional.
+# 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 és un participant necessari.
+
+# 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 ha confirmat l'assistència.
+# 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 ha declinat l'assistència.
+# 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 ha delegat l'assistència.
+# 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 encara no ha respost.
+# 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 ha confirmat l'assistència provisionalment.
+
+# 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 (grup)
+# 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 (recurs)
+# 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 (sala)
+# 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=Nou
+Open=Obre
+filepickerTitleImport=Importa
+filepickerTitleExport=Exporta
+
+# 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=Document XML (%1$S)
+filterHtml=Pàgina web (%1$S)
+filterOutlookCsv=Valors separats per comes de l'Outlook (%1$S)
+
+# Remote calendar errors
+genericErrorTitle=S'ha produït un error
+httpPutError=La publicació del fitxer de calendari ha fallat.\nCodi d'estat: %1$S: %2$S
+otherPutError=La publicació del fitxer de calendari ha fallat.\nCodi d'estat: 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=S'ha produït un error en llegir dades per al calendari: %1$S. S'ha posat en mode només de lectura, perquè els canvis podrien suposar una pèrdua de dades. Podeu canviar aquest paràmetre triant «Edita el calendari».
+
+# 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=S'ha produït un error quan es llegien les dades per al calendari: %1$S. S'ha inhabilitat fins que sigui més segur utilitzar-lo.
+
+# 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=S'ha produït un error en llegir les dades per al calendari: %1$S. No obstant això, aquest error sembla ser menor; per això, el programa intentarà continuar.
+
+# 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=S'ha produït un error en llegir les dades per al calendari: %1$S.
+utf8DecodeError=S'ha produït un error en descodificar un fitxer iCalendar (ics) com UTF-8. Comproveu que el fitxer, incloent-hi els símbols i les lletres accentuades, està codificat fent servir la codificació de caràcters UTF-8.
+icsMalformedError=L'anàlisi del fitxer iCalendar (ics) ha fallat. Comproveu que aquest compleix la sintaxi de fitxer d'iCalendar (ics).
+itemModifiedOnServerTitle=L'element s'ha canviat al servidor
+itemModifiedOnServer=Aquest element s'ha canviat recentment al servidor.\n
+modifyWillLoseData=En enviar els vostres canvis, se sobreescriuran els que s'hagin fet al servidor.
+deleteWillLoseData=Si se suprimeix aquest element, es perdran els canvis fets al servidor.
+updateFromServer=Descarta els meus canvis i torna a carregar
+proceedModify=Envia els meus canvis igualment
+proceedDelete=Suprimeix igualment
+dav_notDav=El recurs %1$S o bé no és de tipus DAV o bé no està disponible
+dav_davNotCaldav=El recurs %1$S és de tipus DAV però no és un calendari CalDAV
+itemPutError=S'ha produït un error quan es desava l'element al servidor.
+itemDeleteError=S'ha produït un error quan se suprimia l'element del servidor.
+caldavRequestError=S'ha produït un error quan s'estava enviant la invitació.
+caldavResponseError=S'ha produït un error quan s'estava enviant la resposta.
+caldavRequestStatusCode=Codi d'estat: %1$S
+caldavRequestStatusCodeStringGeneric=La sol·licitud no es pot processar.
+caldavRequestStatusCodeString400=La sol·licitud té un error de sintaxi i no es pot processar.
+caldavRequestStatusCodeString403=L'usuari no té permisos per fer la sol·licitud.
+caldavRequestStatusCodeString404=El recurs no s'ha trobat.
+caldavRequestStatusCodeString409=Conflicte amb el recurs.
+caldavRequestStatusCodeString412=La precondició ha fallat.
+caldavRequestStatusCodeString500=Error intern del servidor.
+caldavRequestStatusCodeString502=Error en el servidor intermediari (pot ser un error de configuració).
+caldavRequestStatusCodeString503=Error intern del servidor (pot ser un error temporal).
+caldavRedirectTitle=Voleu actualitzar la ubicació del calendari «%1$S»?
+caldavRedirectText=Les sol·licituds de %1$S s'estan redirigint a una altra ubicació. Voleu canviar la ubicació per al valor següent?
+caldavRedirectDisableCalendar=Desactiva el calendari
+
+
+# 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=Europe/Andorra
+
+# 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=Avís: el fus horari del vostre sistema operatiu «%1$S»\nno concorda amb el fus horari configurat «%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=Sense tenir en compte el fus horari del sistema operatiu '%1$S'.
+
+# "Skipping locale timezone 'America/New_Yawk'."
+# Testing note: Skipping occurs if a likelyTimezone id is unknown or misspelled.
+SkippingLocaleTimezone=Sense tenir en compte el fus horari de la configuració '%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=Avís: s'està utilitzant un fus horari desconegut.\nNo hi ha informació sobre el fus horari del vostre sistema operatiu.
+
+# "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=Avís: s'ha deduït que el vostre fus horari és\n %1$S (UTC%2$S).\n%3$S\n%4$S
+
+# Testing note: "Almost match" timezones include Cairo on W2k.
+TZAlmostMatchesOSDifferAtMostAWeek=Aquest fus horari pràcticament correspon amb la del vostre sistema operatiu.\nPer això, el proper canvi d'horari estiu/hivern pot variar una setmana\nrespecte a la transició del vostre sistema operatiu.\nPer tant, es poden produir discrepàncies en les dades, per exemple\nuna data d'inici diferent, una regla que canvia,\no una aproximació incorrecta a una regla d'un calendari no-Gregorià.
+
+TZSeemsToMatchOS=Aquest fus horari sembla que correspon al del vostre sistema operatiu aquest any.
+
+# LOCALIZATION NOTE (TZFromOS):
+# used for a display of a chosen timezone
+# %1$S will be replaced with the name of a timezone
+TZFromOS=Aquest fus horari ha estat seleccionat a partir de l'identificador del fus horari\ndel sistema operatiu «%1$S».
+
+# Localization note (TZFromLocale): Substitute name of your locale language.
+TZFromLocale=Aquest fus horari ha estat seleccionat a partir de la informació,\nen anglès americà,d'altres usuaris d'Internet que tenen un fus horari\ndel sistema operatiu semblant al del vostre.
+
+TZFromKnownTimezones=Aquest fus horari ha estat seleccionat a partir de concordar el fus horari\ndel vostre sistema operatiu amb una llista de fusos horaris coneguts\nordenats alfabèticament pel seu id.
+
+# Print Layout
+formatListName = Llista
+weekPrinterName = Planificador setmanal
+monthPrinterName = Graella mensual
+tasksWithNoDueDate = Tasques sense data de venciment
+
+# Providers
+caldavName=CalDAV
+compositeName=Composite
+icsName=iCalendar (ICS)
+memoryName=Temporal (memòria)
+storageName=Local (SQLite)
+
+# Used in created html code for list layout print and html export
+htmlPrefixTitle=Títol
+htmlPrefixWhen=Quan
+htmlPrefixLocation=Ubicació
+htmlPrefixDescription=Descripció
+htmlTaskCompleted=%1$S (acabada)
+
+# Categories
+addCategory=Afegeix una categoria
+multipleCategories=Múltiples categories
+
+today=Avui
+tomorrow=Demà
+yesterday=Ahir
+
+#Today pane
+eventsonly=Cites
+eventsandtasks=Cites i tasques
+tasksonly=Tasques
+shortcalendarweek=Setm.
+
+go=Vés
+
+# 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=següent
+next2=següent
+last1=darrer
+last2=darrer
+
+# Alarm Dialog
+# LOCALIZATION NOTE (alarmWindowTitle.label): Semi-colon list of plural
+# forms. See: http://developer.mozilla.org/en/Localization_and_Plurals
+alarmWindowTitle.label=#1 recordatori;#1 recordatoris
+
+# 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=Inici: %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=Avui a les %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=Demà a les %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=Ahir a les %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=Descripció per defecte de Mozilla
+alarmDefaultSummary=Resum per defecte de Mozilla
+
+# LOCALIZATION NOTE (alarmSnoozeLimitExceeded): Semi-colon list of plural
+# forms.
+alarmSnoozeLimitExceeded=No podeu ajornar una alarma més enllà d'#1 mes.;No podeu ajornar una alarma més enllà de #1 mesos.
+
+taskDetailsStatusNeedsAction=Necessita una acció
+
+# 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%% acabada
+taskDetailsStatusCompleted=Acabada
+
+# 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=Acabada el %1$S
+taskDetailsStatusCancelled=Cancel·lada
+
+gettingCalendarInfoCommon=S'estan comprovant els calendaris…
+
+# 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=S'està comprovant el calendari %1$S de %2$S
+
+# LOCALIZATION NOTE (errorCode):
+# %1$S will be replaced with the number of an error code
+errorCode=Codi d'error: %1$S
+
+# LOCALIZATION NOTE (errorDescription):
+# %1$S will be replaced with the description of an error
+errorDescription=Descripció: %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=S'ha produït un error en escriure al calendari «%1$S». Vegeu-ne més informació a continuació.
+
+# LOCALIZATION NOTE (errorWritingDetails):
+# This will be displayed in the detail section of the error dialog
+errorWritingDetails=Si veieu aquest missatge després d'ajornar o aturar un recordatori que pertany a un calendari del qual no voleu afegir ni editar cites, podeu marcar aquest calendari com a només de lectura per evitar aquest missatge en el futur. Per fer-ho, aneu a les propietats del calendari fent clic amb el botó dret en aquest calendari a la llista de la vista de calendaris o tasques.
+
+# 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=El calendari %1$S no està disponible temporalment
+
+# 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=El calendari %1$S és només de lectura
+
+taskEditInstructions=Feu clic aquí per afegir una tasca nova
+taskEditInstructionsReadonly=Seleccioneu un calendari editable
+taskEditInstructionsCapability=Seleccioneu un calendari que permeti tasques
+
+eventDetailsStartDate=Inici:
+eventDetailsEndDate=Fi:
+
+# 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=Setmana del calendari: %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=Setmanes del calendari %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=Setm.: %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=Setm.: %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 dia;#1 dies
+dueInHours=#1 hora;#1 hores
+dueInLessThanOneHour=< 1 hora
+
+# 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 de %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 de %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=genitive
+
+# LOCALIZATION NOTE (daysIntervalBetweenMonths):
+# used for display of intervals in the form 'September 29 - October 5, 2008'
+# %1$S will be replaced with name of the month of the start date
+# %2$S will be replaced with the day-index of the start date possibly followed by an ordinal symbol
+# %3$S will be replaced with name of the month of the end date
+# %4$S will be replaced with the day-index of the end date possibly followed by an ordinal symbol
+# %5$S will be replaced with the common year of both dates
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalBetweenMonths=%2$S %1$S – %4$S %3$S de %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=genitive
+
+# 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 de %3$S – %5$S %4$S de %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=genitive
+
+# 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 a les %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 de %2$S a %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 a les %2$S – %3$S a les %4$S
+
+# LOCALIZATION NOTE (datetimeIntervalTaskWithoutDate):
+# used for task without start and due date
+# (showed only in exported calendar in Html format)
+datetimeIntervalTaskWithoutDate= sense data d'inici ni de venciment
+# 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=data d'inici el %1$S a les %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=data de venciment el %1$S a les %2$S
+
+# LOCALIZATION NOTE (dragLabelTasksWithOnlyEntryDate
+# dragLabelTasksWithOnlyDueDate)
+# Labels that appear while dragging a task with only
+# entry date OR due date
+dragLabelTasksWithOnlyEntryDate=Hora d'inici
+dragLabelTasksWithOnlyDueDate=S'acaba a
+
+deleteTaskLabel=Suprimeix la tasca
+deleteTaskMessage=Segur que voleu suprimir aquesta tasca?
+deleteTaskAccesskey=S
+deleteItemLabel=Suprimeix
+deleteItemMessage=Segur que voleu suprimir-ho?
+deleteItemAccesskey=S
+deleteEventLabel=Suprimeix la cita
+deleteEventMessage=Segur que voleu suprimir aquesta cita?
+deleteEventAccesskey=S
+
+calendarPropertiesEveryMinute=Cada minut;Cada #1 minuts
+
+# LOCALIZATION NOTE (extractUsing)
+# Used in message header
+# %1$S will be replaced with language name from languageNames.properties
+extractUsing=S'està utilitzant %1$S
+
+# LOCALIZATION NOTE (extractUsingRegion)
+# Used in message header
+# %1$S will be replaced with language name from languageNames.properties
+# %2$S will be replaced with region like US in en-US
+extractUsingRegion=S'està utilitzant %1$S (%2$S)
+
+# LOCALIZATION NOTE (unit)
+# Used to determine the correct plural form of a unit
+unitMinutes=#1 minut;#1 minuts
+unitHours=#1 hora;#1 hores
+unitDays=#1 dia;#1 dies
+unitWeeks=#1 setmana;#1 setmanes
+
+# 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=Mostra %1$S
+hideCalendar=Amaga %1$S
+# uses the access key calendar.context.showonly.accesskey
+showOnlyCalendar=Mostra només %1$S
+
+# LOCALIZATION NOTE (modifyConflict)
+# Used by the event dialog to resolve item modification conflicts.
+modifyConflictPromptTitle=Conflicte de modificació d'element
+modifyConflictPromptMessage=L'element que s'està editant al diàleg s'ha modificat des que es va obrir.
+modifyConflictPromptButton1=Sobreescriu els altres canvis
+modifyConflictPromptButton2=Descarta aquests canvis
+
+# LOCALIZATION_NOTE(dialog.attendee.append.delegatedFrom): this is appended behind an attendee name
+# in the tooltip and the visible name for an attendee in the event summary dialog - don't add
+# leading or trailing whitespaces here
+# %1$S - a single delegatee or a comma separated list of delegatees
+# delegation is different from simple invitation forwarding - in case of delegation the original
+# invited attendee gets replaced
+dialog.attendee.append.delegatedFrom=(s'ha delegat de %1$S)
+# LOCALIZATION_NOTE(dialog.attendee.append.delegatedTo): this is appended behind an attendee name
+# in the tooltip for an attendee in the event summary dialog - don't add leading or trailing
+# whitespaces here
+# delegation is different from simple invitation forwarding - in case of delegation the original
+# invited attendee gets replaced
+dialog.attendee.append.delegatedTo=(s'ha delegat a %1$S)
+
+# Accessible description of a grid calendar with no selected date
+minimonthNoSelectedDate=No s'ha seleccionat cap data
diff --git a/l10n-ca/calendar/chrome/calendar/calendarCreation.dtd b/l10n-ca/calendar/chrome/calendar/calendarCreation.dtd
new file mode 100644
index 0000000000..00c822310f
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendarCreation.dtd
@@ -0,0 +1,51 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY wizard.title "Crea un calendari nou" >
+<!ENTITY wizard.label "Crea un calendari nou" >
+<!ENTITY wizard.description "Ubicació del calendari" >
+
+<!ENTITY initialpage.description "Podeu emmagatzemar el calendari a l'ordinador o en un servidor per poder accedir-hi remotament o compartir-lo amb els vostres amics o companys de feina." >
+<!ENTITY initialpage.computer.label "Al meu ordinador">
+<!ENTITY initialpage.network.label "A la xarxa">
+
+<!ENTITY locationpage.description "Proporcioneu la informació que calgui per accedir al calendari remot" >
+<!ENTITY locationpage.login.description "Opcional: introduïu un nom d'usuari i contrasenya" >
+<!ENTITY locationpage.username.label "Nom d'usuari:" >
+<!ENTITY locationpage.password.label "Contrasenya:" >
+
+<!ENTITY custompage.shortdescription "Personalitzeu el calendari" >
+<!ENTITY custompage.longdescription "Podeu assignar un sobrenom al calendari i seleccionar el color de les cites." >
+
+<!ENTITY finishpage.shortdescription "S'ha creat el calendari" >
+<!ENTITY finishpage.longdescription "S'ha creat el calendari." >
+
+<!-- Below are new strings for the revised new calendar dialog. The above strings should be
+ removed/renamed later on -->
+
+<!ENTITY sourcetabs.other.label "Altres">
+
+<!ENTITY buttons.create.label "Crea un calendari">
+<!ENTITY buttons.create.accesskey "r">
+
+<!ENTITY buttons.find.label "Cerca un calendari">
+<!ENTITY buttons.find.accesskey "C">
+
+<!ENTITY buttons.back.label "Enrere">
+<!ENTITY buttons.back.accesskey "E">
+
+<!ENTITY buttons.subscribe.label "Subscriu">
+<!ENTITY buttons.subscribe.accesskey "S">
+
+<!ENTITY calendartype.label "Tipus de calendari:">
+<!ENTITY location.label "Ubicació:">
+<!ENTITY location.placeholder "URL o nom del servidor del calendari">
+
+<!ENTITY network.nocredentials.label "Aquesta ubicació no requereix credencials">
+<!ENTITY network.loading.description "S'estan detectant els vostres calendaris. Espereu...">
+<!ENTITY network.notfound.description "No s'ha trobat cap calendari en aquesta ubicació. Comproveu els paràmetres.">
+<!ENTITY network.authfail.description "No s'han acceptat les credencials que heu introduït. Comproveu els paràmetres.">
+
+<!ENTITY network.subscribe.single.description "Seleccioneu els calendaris als quals us voleu subscriure.">
+<!ENTITY network.subscribe.multiple.description "Hi ha diversos tipus de calendari disponibles en aquesta ubicació. Seleccioneu el tipus de calendari i, a continuació, marqueu els calendaris als quals us voleu subscriure.">
diff --git a/l10n-ca/calendar/chrome/calendar/calendarCreation.properties b/l10n-ca/calendar/chrome/calendar/calendarCreation.properties
new file mode 100644
index 0000000000..859db55d19
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/calendarCreation.properties
@@ -0,0 +1,6 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+error.invalidUri=Introduïu una ubicació correcta.
+error.alreadyExists=Ja esteu subscrit a un calendari en aquesta ubicació.
diff --git a/l10n-ca/calendar/chrome/calendar/categories.properties b/l10n-ca/calendar/chrome/calendar/categories.properties
new file mode 100644
index 0000000000..2c72febcc2
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/categories.properties
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# default categories
+
+categories2=Aniversari,Negocis,Trucades,Clients,Competència,Consumidors,Preferits,Seguiments,Regals,Vacances,Idees,Assumptes,Reunió,Miscel·lània,Personal,Projectes,Dia festiu,Estat,Proveïdors,Viatge,Descans
diff --git a/l10n-ca/calendar/chrome/calendar/dateFormat.properties b/l10n-ca/calendar/chrome/calendar/dateFormat.properties
new file mode 100644
index 0000000000..e67441fc45
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/dateFormat.properties
@@ -0,0 +1,146 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# In case you are looking for the note about different declensions on date
+# formats, here it is. If your language doesn't use different declensions of
+# month names, you shouldn't have much work. Just leave the *.monthFormat
+# string on "nominative" and the string month.*.name will be filled in.
+#
+# If you need a different form for a string, you can change the
+# *.monthFormat to a different value. Supported values are currently:
+# nominative (default), genitive
+# The modified month name form will then be filled in accordingly. If this
+# system does not suit your needs, please file a bug!
+
+# LOCALIZATION NOTE (month.*.name):
+# Some languages require different declensions of month names.
+# These values will be used if *.monthFormat is set to "nominative" or in places
+# where using a different declension is not yet supported.
+month.1.name=gener
+month.2.name=febrer
+month.3.name=març
+month.4.name=abril
+month.5.name=maig
+month.6.name=juny
+month.7.name=juliol
+month.8.name=agost
+month.9.name=setembre
+month.10.name=octubre
+month.11.name=novembre
+month.12.name=desembre
+
+# 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=de gener
+month.2.genitive=de febrer
+month.3.genitive=de març
+month.4.genitive=d'abril
+month.5.genitive=de maig
+month.6.genitive=de juny
+month.7.genitive=de juliol
+month.8.genitive=d'agost
+month.9.genitive=de setembre
+month.10.genitive=d'octubre
+month.11.genitive=de novembre
+month.12.genitive=de desembre
+
+month.1.Mmm=gen.
+month.2.Mmm=febr.
+month.3.Mmm=març
+month.4.Mmm=abr.
+month.5.Mmm=maig
+month.6.Mmm=juny
+month.7.Mmm=jul.
+month.8.Mmm=ag.
+month.9.Mmm=set.
+month.10.Mmm=oct.
+month.11.Mmm=nov.
+month.12.Mmm=des.
+
+day.1.name=diumenge
+day.2.name=dilluns
+day.3.name=dimarts
+day.4.name=dimecres
+day.5.name=dijous
+day.6.name=divendres
+day.7.name=dissabte
+
+day.1.Mmm=dg.
+day.2.Mmm=dl.
+day.3.Mmm=dt.
+day.4.Mmm=dc.
+day.5.Mmm=dj.
+day.6.Mmm=dv.
+day.7.Mmm=ds.
+
+# Can someone tell me why we're not counting from zero?
+day.1.short=dg
+day.2.short=dl
+day.3.short=dt
+day.4.short=dc
+day.5.short=dj
+day.6.short=dv
+day.7.short=ds
+
+# 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=Migdia
+midnight=Mitjanit
+
+AllDay=Tot el dia
+Repeating=(amb repetició)
diff --git a/l10n-ca/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd b/l10n-ca/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd
new file mode 100644
index 0000000000..492c831304
--- /dev/null
+++ b/l10n-ca/calendar/chrome/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 "Configura els recordatoris">
+<!ENTITY reminder.add.label "Afegeix">
+<!ENTITY reminder.add.accesskey "A">
+<!ENTITY reminder.remove.label "Suprimeix">
+<!ENTITY reminder.remove.accesskey "S">
+
+<!ENTITY reminder.reminderDetails.label "Detalls del recordatori">
+<!ENTITY reminder.action.label "Seleccioneu una acció de recordatori">
+
+<!ENTITY reminder.action.alert.label "Mostra una alerta">
+<!ENTITY reminder.action.email.label "Envia un correu electrònic">
+
+<!ENTITY alarm.units.minutes "minuts" >
+<!ENTITY alarm.units.hours "hores" >
+<!ENTITY alarm.units.days "dies" >
diff --git a/l10n-ca/calendar/chrome/calendar/global.dtd b/l10n-ca/calendar/chrome/calendar/global.dtd
new file mode 100644
index 0000000000..9e31686464
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/global.dtd
@@ -0,0 +1,54 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY time.midnight "Mitjanit" >
+<!ENTITY time.noon "Migdia" >
+
+<!-- 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 "dg" >
+<!ENTITY day.1.Ddd.accesskey "g">
+<!ENTITY day.2.Ddd "dl" >
+<!ENTITY day.2.Ddd.accesskey "l">
+<!ENTITY day.3.Ddd "dt" >
+<!ENTITY day.3.Ddd.accesskey "t">
+<!ENTITY day.4.Ddd "dc" >
+<!ENTITY day.4.Ddd.accesskey "c">
+<!ENTITY day.5.Ddd "dj" >
+<!ENTITY day.5.Ddd.accesskey "j">
+<!ENTITY day.6.Ddd "dv" >
+<!ENTITY day.6.Ddd.accesskey "v">
+<!ENTITY day.7.Ddd "ds" >
+<!ENTITY day.7.Ddd.accesskey "s">
+
+<!ENTITY day.1.name "diumenge" >
+<!ENTITY day.2.name "dilluns" >
+<!ENTITY day.3.name "dimarts" >
+<!ENTITY day.4.name "dimecres" >
+<!ENTITY day.5.name "dijous" >
+<!ENTITY day.6.name "divendres" >
+<!ENTITY day.7.name "dissabte" >
+
+<!ENTITY month.1.name "gener" >
+<!ENTITY month.2.name "febrer" >
+<!ENTITY month.3.name "març" >
+<!ENTITY month.4.name "abril" >
+<!ENTITY month.5.name "maig" >
+<!ENTITY month.6.name "juny" >
+<!ENTITY month.7.name "juliol" >
+<!ENTITY month.8.name "agost" >
+<!ENTITY month.9.name "setembre" >
+<!ENTITY month.10.name "octubre" >
+<!ENTITY month.11.name "novembre" >
+<!ENTITY month.12.name "desembre" >
+
+<!ENTITY onemonthbackward.tooltip "Mes anterior" >
+<!ENTITY onemonthforward.tooltip "Mes següent" >
+<!ENTITY oneyearbackward.tooltip "Any anterior" >
+<!ENTITY oneyearforward.tooltip "Any següent" >
+<!ENTITY showToday.tooltip "Vés a avui">
+<!ENTITY onedayforward.tooltip "Dia següent">
+<!ENTITY onedaybackward.tooltip "Dia anterior">
+<!ENTITY showselectedday.tooltip "Mostra les cites del dia seleccionat">
diff --git a/l10n-ca/calendar/chrome/calendar/menuOverlay.dtd b/l10n-ca/calendar/chrome/calendar/menuOverlay.dtd
new file mode 100644
index 0000000000..87df6f3699
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/menuOverlay.dtd
@@ -0,0 +1,50 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+<!-- Event Menu -->
+
+<!ENTITY event.new.event "Cita nova…">
+<!ENTITY event.new.event.accesskey "N">
+
+<!ENTITY event.new.task "Tasca nova…">
+<!ENTITY event.new.task.accesskey "t">
+
+<!ENTITY calendar.import.label "Importa…">
+<!ENTITY calendar.import.accesskey "I">
+
+<!ENTITY calendar.export.label "Exporta…">
+<!ENTITY calendar.export.accesskey "E">
+
+<!ENTITY calendar.publish.label "Publica…">
+<!ENTITY calendar.publish.accesskey "b">
+
+<!ENTITY calendar.deletecalendar.label "Suprimeix el calendari seleccionat…">
+<!ENTITY calendar.deletecalendar.accesskey "S">
+<!ENTITY calendar.unsubscribecalendar.label "Cancel·la la subscripció al calendari seleccionat…">
+<!ENTITY calendar.unsubscribecalendar.accesskey "u">
+<!-- LOCALIZATION NOTE (calendar.removecalendar.label): Removing the calendar
+ is the general action of removing it, while deleting means to clear the
+ data and unsubscribing means just taking it out of the calendar list. -->
+
+<!ENTITY calendar.removecalendar.label "Elimina el calendari seleccionat…">
+<!ENTITY calendar.removecalendar.accesskey "E">
+
+
+<!ENTITY calendar.menu.customize.label "Personalitza…">
+<!ENTITY calendar.menu.customize.accesskey "z">
+
+<!ENTITY showUnifinderCmd.label "Cerca cites">
+<!ENTITY showUnifinderCmd.accesskey "C">
+<!ENTITY showUnifinderCmd.tooltip "Mostra/amaga la subfinestra de cerca de cites">
+
+<!ENTITY calendar.displaytodos.checkbox.label "Mostra les tasques al calendari">
+<!ENTITY calendar.displaytodos.checkbox.accesskey "t">
+
+<!ENTITY goTodayCmd.label "Avui">
+<!ENTITY goTodayCmd.accesskey "u">
+
+<!ENTITY showCurrentView.label "Vista actual">
+<!ENTITY showCurrentView.accesskey "V">
+
+<!ENTITY calendar.properties.label "Propietats del calendari…">
+<!ENTITY calendar.properties.accesskey "P">
diff --git a/l10n-ca/calendar/chrome/calendar/migration.dtd b/l10n-ca/calendar/chrome/calendar/migration.dtd
new file mode 100644
index 0000000000..c277321dff
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/migration.dtd
@@ -0,0 +1,9 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY migration.title "&brandFullName;: Importació de dades">
+<!ENTITY migration.welcome "Us donem la benvinguda">
+<!ENTITY migration.importing "S'està important">
+<!ENTITY migration.list.description "El &brandShortName; pot importar les dades de calendari de moltes aplicacions conegudes. S'han trobat les aplicacions següents a l'ordinador. Seleccioneu de quines aplicacions voleu importar les dades.">
+<!ENTITY migration.progress.description "S'estan important les dades seleccionades">
diff --git a/l10n-ca/calendar/chrome/calendar/migration.properties b/l10n-ca/calendar/chrome/calendar/migration.properties
new file mode 100644
index 0000000000..973dd15f09
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/migration.properties
@@ -0,0 +1,13 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+migratingApp = S'està migrant: %1$S…
+
+# The next two lines are duplicated from migration.dtd until there is branding
+# for lightning
+migrationTitle = %1$S: Importació de dades
+migrationDescription=El %1$S pot importar les dades de calendari de moltes aplicacions conegudes. S'han trobat les aplicacions següents a l'ordinador. Seleccioneu de quines aplicacions voleu importar les dades.
+finished = S'ha acabat
+disableExtTitle = S'ha trobat una extensió incompatible
+disableExtText = Teniu una extensió antiga del Mozilla Calendar instal·lada que no és compatible amb el Lightning. S'inhabilitarà i es reiniciarà el %1$S.
diff --git a/l10n-ca/calendar/chrome/calendar/provider-uninstall.dtd b/l10n-ca/calendar/chrome/calendar/provider-uninstall.dtd
new file mode 100644
index 0000000000..c14dc79e9c
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/provider-uninstall.dtd
@@ -0,0 +1,12 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY providerUninstall.title "Desinstal·la un proveïdor">
+<!ENTITY providerUninstall.accept.label "Cancel·la la subscripció seleccionada">
+<!ENTITY providerUninstall.accept.accesskey "b">
+<!ENTITY providerUninstall.cancel.label "Conserva el complement">
+<!ENTITY providerUninstall.cancel.accesskey "C">
+<!ENTITY providerUninstall.preName.label "Heu sol·licitat desinstal·lar o inhabilitar:">
+<!ENTITY providerUninstall.postName.label "Això farà que s'inhabilitin els calendaris següents.">
+<!ENTITY providerUninstall.reinstallNote.label "Si no teniu intenció de reinstal·lar aquest proveïdor, podeu cancel·lar la subscripció als calendaris d'aquest proveïdor.">
diff --git a/l10n-ca/calendar/chrome/calendar/timezones.properties b/l10n-ca/calendar/chrome/calendar/timezones.properties
new file mode 100644
index 0000000000..7be91db760
--- /dev/null
+++ b/l10n-ca/calendar/chrome/calendar/timezones.properties
@@ -0,0 +1,488 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# extension:
+extensions.calendar-timezones@mozilla.org.name=Definicions de fusos horaris del Mozilla Calendar
+extensions.calendar-timezones@mozilla.org.description=Fusos horaris necessaris per al Lightning
+extensions.calendar-timezones@mozilla.org.creator=Projecte Mozilla Calendar
+
+pref.timezone.floating=Hora local
+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=Àfrica/Abidjan
+pref.timezone.Africa.Accra=Àfrica/Accra
+pref.timezone.Africa.Addis_Ababa=Àfrica/Addis_Ababa
+pref.timezone.Africa.Algiers=Àfrica/Algers
+pref.timezone.Africa.Asmara=Àfrica/Asmara
+pref.timezone.Africa.Bamako=Àfrica/Bamako
+pref.timezone.Africa.Bangui=Àfrica/Bangui
+pref.timezone.Africa.Banjul=Àfrica/Banjul
+pref.timezone.Africa.Bissau=Àfrica/Bissau
+pref.timezone.Africa.Blantyre=Àfrica/Blantyre
+pref.timezone.Africa.Brazzaville=Àfrica/Brazzaville
+pref.timezone.Africa.Bujumbura=Àfrica/Bujumbura
+pref.timezone.Africa.Cairo=Àfrica/El_Caire
+pref.timezone.Africa.Casablanca=Àfrica/Casablanca
+pref.timezone.Africa.Ceuta=Àfrica/Ceuta
+pref.timezone.Africa.Conakry=Àfrica/Conakry
+pref.timezone.Africa.Dakar=Àfrica/Dakar
+pref.timezone.Africa.Dar_es_Salaam=Àfrica/Dar_es_Salaam
+pref.timezone.Africa.Djibouti=Àfrica/Djibouti
+pref.timezone.Africa.Douala=Àfrica/Douala
+pref.timezone.Africa.El_Aaiun=Àfrica/El_Aaiun
+pref.timezone.Africa.Freetown=Àfrica/Freetown
+pref.timezone.Africa.Gaborone=Àfrica/Gaborone
+pref.timezone.Africa.Harare=Àfrica/Harare
+pref.timezone.Africa.Johannesburg=Àfrica/Johannesburg
+pref.timezone.Africa.Kampala=Àfrica/Kampala
+pref.timezone.Africa.Khartoum=Àfrica/Khartoum
+pref.timezone.Africa.Kigali=Àfrica/Kigali
+pref.timezone.Africa.Kinshasa=Àfrica/Kinshasa
+pref.timezone.Africa.Lagos=Àfrica/Lagos
+pref.timezone.Africa.Libreville=Àfrica/Libreville
+pref.timezone.Africa.Lome=Àfrica/Lome
+pref.timezone.Africa.Luanda=Àfrica/Luanda
+pref.timezone.Africa.Lubumbashi=Àfrica/Lubumbashi
+pref.timezone.Africa.Lusaka=Àfrica/Lusaka
+pref.timezone.Africa.Malabo=Àfrica/Malabo
+pref.timezone.Africa.Maputo=Àfrica/Maputo
+pref.timezone.Africa.Maseru=Àfrica/Maseru
+pref.timezone.Africa.Mbabane=Àfrica/Mbabane
+pref.timezone.Africa.Mogadishu=Àfrica/Mogadishu
+pref.timezone.Africa.Monrovia=Àfrica/Monrovia
+pref.timezone.Africa.Nairobi=Àfrica/Nairobi
+pref.timezone.Africa.Ndjamena=Àfrica/Ndjamena
+pref.timezone.Africa.Niamey=Àfrica/Niamey
+pref.timezone.Africa.Nouakchott=Àfrica/Nouakchott
+pref.timezone.Africa.Ouagadougou=Àfrica/Ouagadougou
+pref.timezone.Africa.Porto-Novo=Àfrica/Porto-Novo
+pref.timezone.Africa.Sao_Tome=Àfrica/Sao_Tome
+pref.timezone.Africa.Tripoli=Àfrica/Trípoli
+pref.timezone.Africa.Tunis=Àfrica/Tunis
+pref.timezone.Africa.Windhoek=Àfrica/Windhoek
+pref.timezone.America.Adak=Amèrica/Adak
+pref.timezone.America.Anchorage=Amèrica/Anchorage
+pref.timezone.America.Anguilla=Amèrica/Anguilla
+pref.timezone.America.Antigua=Amèrica/Antigua
+pref.timezone.America.Araguaina=Amèrica/Araguaina
+pref.timezone.America.Argentina.Buenos_Aires=Amèrica/Argentina/Buenos_Aires
+pref.timezone.America.Argentina.Catamarca=Amèrica/Argentina/Catamarca
+pref.timezone.America.Argentina.Cordoba=Amèrica/Argentina/Cordoba
+pref.timezone.America.Argentina.Jujuy=Amèrica/Argentina/Jujuy
+pref.timezone.America.Argentina.La_Rioja=Amèrica/Argentina/La_Rioja
+pref.timezone.America.Argentina.Mendoza=Amèrica/Argentina/Mendoza
+pref.timezone.America.Argentina.Rio_Gallegos=Amèrica/Argentina/Rio_Gallegos
+pref.timezone.America.Argentina.San_Juan=Amèrica/Argentina/San_Juan
+pref.timezone.America.Argentina.Tucuman=Amèrica/Argentina/Tucuman
+pref.timezone.America.Argentina.Ushuaia=Amèrica/Argentina/Ushuaia
+pref.timezone.America.Aruba=Amèrica/Aruba
+pref.timezone.America.Asuncion=Amèrica/Asunción
+pref.timezone.America.Atikokan=Amèrica/Atikokan
+pref.timezone.America.Bahia=Amèrica/Bahia
+pref.timezone.America.Barbados=Amèrica/Barbados
+pref.timezone.America.Belem=Amèrica/Belem
+pref.timezone.America.Belize=Amèrica/Belize
+pref.timezone.America.Blanc-Sablon=Amèrica/Blanc-Sablon
+pref.timezone.America.Boa_Vista=Amèrica/Boa_Vista
+pref.timezone.America.Bogota=Amèrica/Bogotà
+pref.timezone.America.Boise=Amèrica/Boise
+pref.timezone.America.Cambridge_Bay=Amèrica/Cambridge_Bay
+pref.timezone.America.Campo_Grande=Amèrica/Campo_Grande
+pref.timezone.America.Cancun=Amèrica/Cancún
+pref.timezone.America.Caracas=Amèrica/Caracas
+pref.timezone.America.Cayenne=Amèrica/Cayenne
+pref.timezone.America.Cayman=Amèrica/Cayman
+pref.timezone.America.Chicago=Amèrica/Chicago
+pref.timezone.America.Chihuahua=Amèrica/Chihuahua
+pref.timezone.America.Costa_Rica=Amèrica/Costa_Rica
+pref.timezone.America.Cuiaba=Amèrica/Cuiaba
+pref.timezone.America.Curacao=Amèrica/Curaçao
+pref.timezone.America.Danmarkshavn=Amèrica/Danmarkshavn
+pref.timezone.America.Dawson=Amèrica/Dawson
+pref.timezone.America.Dawson_Creek=Amèrica/Dawson_Creek
+pref.timezone.America.Denver=Amèrica/Denver
+pref.timezone.America.Detroit=Amèrica/Detroit
+pref.timezone.America.Dominica=Amèrica/Dominica
+pref.timezone.America.Edmonton=Amèrica/Edmonton
+pref.timezone.America.Eirunepe=Amèrica/Eirunepe
+pref.timezone.America.El_Salvador=Amèrica/El_Salvador
+pref.timezone.America.Fortaleza=Amèrica/Fortaleza
+pref.timezone.America.Glace_Bay=Amèrica/Glace_Bay
+pref.timezone.America.Godthab=Amèrica/Godthab
+pref.timezone.America.Goose_Bay=Amèrica/Goose_Bay
+pref.timezone.America.Grand_Turk=Amèrica/Grand_Turk
+pref.timezone.America.Grenada=Amèrica/Grenada
+pref.timezone.America.Guadeloupe=Amèrica/Guadeloupe
+pref.timezone.America.Guatemala=Amèrica/Guatemala
+pref.timezone.America.Guayaquil=Amèrica/Guayaquil
+pref.timezone.America.Guyana=Amèrica/Guyana
+pref.timezone.America.Halifax=Amèrica/Halifax
+pref.timezone.America.Havana=Amèrica/Havana
+pref.timezone.America.Hermosillo=Amèrica/Hermosillo
+pref.timezone.America.Indiana.Indianapolis=Amèrica/Indiana/Indianapolis
+pref.timezone.America.Indiana.Knox=Amèrica/Indiana/Knox
+pref.timezone.America.Indiana.Marengo=Amèrica/Indiana/Marengo
+pref.timezone.America.Indiana.Petersburg=Amèrica/Indiana/Petersburg
+pref.timezone.America.Indiana.Vevay=Amèrica/Indiana/Vevay
+pref.timezone.America.Indiana.Vincennes=Amèrica/Indiana/Vincennes
+pref.timezone.America.Inuvik=Amèrica/Inuvik
+pref.timezone.America.Iqaluit=Amèrica/Iqaluit
+pref.timezone.America.Jamaica=Amèrica/Jamaica
+pref.timezone.America.Juneau=Amèrica/Juneau
+pref.timezone.America.Kentucky.Louisville=Amèrica/Kentucky/Louisville
+pref.timezone.America.Kentucky.Monticello=Amèrica/Kentucky/Monticello
+pref.timezone.America.La_Paz=Amèrica/La_Paz
+pref.timezone.America.Lima=Amèrica/Lima
+pref.timezone.America.Los_Angeles=Amèrica/Los_Angeles
+pref.timezone.America.Maceio=Amèrica/Maceio
+pref.timezone.America.Managua=Amèrica/Managua
+pref.timezone.America.Manaus=Amèrica/Manaus
+pref.timezone.America.Martinique=Amèrica/Martinique
+pref.timezone.America.Mazatlan=Amèrica/Mazatlan
+pref.timezone.America.Menominee=Amèrica/Menominee
+pref.timezone.America.Merida=Amèrica/Mérida
+pref.timezone.America.Mexico_City=Amèrica/Ciutat_de_Mèxic
+pref.timezone.America.Miquelon=Amèrica/Miquelon
+pref.timezone.America.Moncton=Amèrica/Moncton
+pref.timezone.America.Monterrey=Amèrica/Monterrey
+pref.timezone.America.Montevideo=Amèrica/Montevideo
+pref.timezone.America.Montreal=Amèrica/Montreal
+pref.timezone.America.Montserrat=Amèrica/Montserrat
+pref.timezone.America.Nassau=Amèrica/Nassau
+pref.timezone.America.New_York=Amèrica/Nova_York
+pref.timezone.America.Nipigon=Amèrica/Nipigon
+pref.timezone.America.Nome=Amèrica/Nome
+pref.timezone.America.Noronha=Amèrica/Noronha
+pref.timezone.America.North_Dakota.Center=Amèrica/North_Dakota/Center=>
+pref.timezone.America.North_Dakota.New_Salem=Amèrica/Dakota_del_Nord/New_Salem
+pref.timezone.America.Panama=Amèrica/Panamà
+pref.timezone.America.Pangnirtung=Amèrica/Pangnirtung
+pref.timezone.America.Paramaribo=Amèrica/Paramaribo
+pref.timezone.America.Phoenix=Amèrica/Phoenix
+pref.timezone.America.Port-au-Prince=Amèrica/Port-au-Prince
+pref.timezone.America.Port_of_Spain=Amèrica/Port_of_Spain
+pref.timezone.America.Porto_Velho=Amèrica/Porto_Velho
+pref.timezone.America.Puerto_Rico=Amèrica/Puerto_Rico
+pref.timezone.America.Rainy_River=Amèrica/Rainy_River
+pref.timezone.America.Rankin_Inlet=Amèrica/Rankin_Inlet
+pref.timezone.America.Recife=Amèrica/Recife
+pref.timezone.America.Regina=Amèrica/Regina
+pref.timezone.America.Rio_Branco=Amèrica/Rio_Branco
+pref.timezone.America.Santiago=Amèrica/Santiago
+pref.timezone.America.Santo_Domingo=Amèrica/Santo_Domingo
+pref.timezone.America.Sao_Paulo=Amèrica/Sao_Paulo
+pref.timezone.America.Scoresbysund=Amèrica/Scoresbysund
+pref.timezone.America.Shiprock=Amèrica/Shiprock
+pref.timezone.America.St_Johns=Amèrica/St_Johns
+pref.timezone.America.St_Kitts=Amèrica/St_Kitts
+pref.timezone.America.St_Lucia=Amèrica/St_Lucia
+pref.timezone.America.St_Thomas=Amèrica/St_Thomas
+pref.timezone.America.St_Vincent=Amèrica/St_Vincent
+pref.timezone.America.Swift_Current=Amèrica/Swift_Current
+pref.timezone.America.Tegucigalpa=Amèrica/Tegucigalpa
+pref.timezone.America.Thule=Amèrica/Thule
+pref.timezone.America.Thunder_Bay=Amèrica/Thunder_Bay
+pref.timezone.America.Tijuana=Amèrica/Tijuana
+pref.timezone.America.Toronto=Amèrica/Toronto
+pref.timezone.America.Tortola=Amèrica/Tortola
+pref.timezone.America.Vancouver=Amèrica/Vancouver
+pref.timezone.America.Whitehorse=Amèrica/Whitehorse
+pref.timezone.America.Winnipeg=Amèrica/Winnipeg
+pref.timezone.America.Yakutat=Amèrica/Yakutat
+pref.timezone.America.Yellowknife=Amèrica/Yellowknife
+pref.timezone.Antarctica.Casey=Antàrtida/Casey
+pref.timezone.Antarctica.Davis=Antàrtida/Davis
+pref.timezone.Antarctica.DumontDUrville=Antàrtida/DumontDUrville
+pref.timezone.Antarctica.Mawson=Antàrtida/Mawson
+pref.timezone.Antarctica.McMurdo=Antàrtida/McMurdo
+pref.timezone.Antarctica.Palmer=Antàrtida/Palmer
+pref.timezone.Antarctica.Rothera=Antàrtida/Rothera
+pref.timezone.Antarctica.South_Pole=Antàrtida/Pol Sud
+pref.timezone.Antarctica.Syowa=Antàrtida/Syowa
+pref.timezone.Antarctica.Vostok=Antàrtida/Vostok
+pref.timezone.Arctic.Longyearbyen=Àrtic/Longyearbyen
+pref.timezone.Asia.Aden=Àsia/Aden
+pref.timezone.Asia.Almaty=Àsia/Almaty
+pref.timezone.Asia.Amman=Àsia/Amman
+pref.timezone.Asia.Anadyr=Àsia/Anadyr
+pref.timezone.Asia.Aqtau=Àsia/Aqtau
+pref.timezone.Asia.Aqtobe=Àsia/Aqtobe
+pref.timezone.Asia.Ashgabat=Àsia/Ashgabat
+pref.timezone.Asia.Baghdad=Àsia/Bagdad
+pref.timezone.Asia.Bahrain=Àsia/Bahrain
+pref.timezone.Asia.Baku=Àsia/Baku
+pref.timezone.Asia.Bangkok=Àsia/Bangkok
+pref.timezone.Asia.Beirut=Àsia/Beirut
+pref.timezone.Asia.Bishkek=Àsia/Bishkek
+pref.timezone.Asia.Brunei=Àsia/Brunei
+pref.timezone.Asia.Choibalsan=Àsia/Choibalsan
+pref.timezone.Asia.Chongqing=Àsia/Chongqing
+pref.timezone.Asia.Colombo=Àsia/Colombo
+pref.timezone.Asia.Damascus=Àsia/Damascus
+pref.timezone.Asia.Dhaka=Àsia/Dhaka
+pref.timezone.Asia.Dili=Àsia/Dili
+pref.timezone.Asia.Dubai=Àsia/Dubai
+pref.timezone.Asia.Dushanbe=Àsia/Dushanbe
+pref.timezone.Asia.Gaza=Àsia/Gaza
+pref.timezone.Asia.Harbin=Àsia/Harbin
+pref.timezone.Asia.Hong_Kong=Àsia/Hong_Kong
+pref.timezone.Asia.Hovd=Àsia/Hovd
+pref.timezone.Asia.Irkutsk=Àsia/Irkutsk
+pref.timezone.Asia.Istanbul=Àsia/Istanbul
+pref.timezone.Asia.Jakarta=Àsia/Jakarta
+pref.timezone.Asia.Jayapura=Àsia/Jayapura
+pref.timezone.Asia.Jerusalem=Àsia/Jerusalem
+pref.timezone.Asia.Kabul=Àsia/Kabul
+pref.timezone.Asia.Kamchatka=Àsia/Kamchatka
+pref.timezone.Asia.Karachi=Àsia/Karachi
+pref.timezone.Asia.Kashgar=Àsia/Kashgar
+pref.timezone.Asia.Kathmandu=Àsia/Katmandú
+pref.timezone.Asia.Krasnoyarsk=Àsia/Krasnoyarsk
+pref.timezone.Asia.Kuala_Lumpur=Àsia/Kuala_Lumpur
+pref.timezone.Asia.Kuching=Àsia/Kuching
+pref.timezone.Asia.Kuwait=Àsia/Kuwait
+pref.timezone.Asia.Macau=Àsia/Macau
+pref.timezone.Asia.Magadan=Àsia/Magadan
+pref.timezone.Asia.Makassar=Àsia/Makassar
+pref.timezone.Asia.Manila=Àsia/Manila
+pref.timezone.Asia.Muscat=Àsia/Muscat
+pref.timezone.Asia.Nicosia=Àsia/Nicosia
+pref.timezone.Asia.Novosibirsk=Àsia/Novosibirsk
+pref.timezone.Asia.Omsk=Àsia/Omsk
+pref.timezone.Asia.Oral=Àsia/Oral
+pref.timezone.Asia.Phnom_Penh=Àsia/Phnom_Penh
+pref.timezone.Asia.Pontianak=Àsia/Pontianak
+pref.timezone.Asia.Pyongyang=Àsia/Pyongyang
+pref.timezone.Asia.Qatar=Àsia/Qatar
+pref.timezone.Asia.Qyzylorda=Àsia/Qyzylorda
+pref.timezone.Asia.Rangoon=Àsia/Rangoon
+pref.timezone.Asia.Riyadh=Àsia/Riyadh
+pref.timezone.Asia.Sakhalin=Àsia/Sakhalin
+pref.timezone.Asia.Samarkand=Àsia/Samarkand
+pref.timezone.Asia.Seoul=Àsia/Seül
+pref.timezone.Asia.Shanghai=Àsia/Shanghai
+pref.timezone.Asia.Singapore=Àsia/Singapore
+pref.timezone.Asia.Taipei=Àsia/Taipei
+pref.timezone.Asia.Tashkent=Àsia/Tashkent
+pref.timezone.Asia.Tbilisi=Àsia/Tbilisi
+pref.timezone.Asia.Tehran=Àsia/Tehran
+pref.timezone.Asia.Thimphu=Àsia/Thimphu
+pref.timezone.Asia.Tokyo=Àsia/Tokyo
+pref.timezone.Asia.Ulaanbaatar=Àsia/Ulaanbaatar
+pref.timezone.Asia.Urumqi=Àsia/Urumqi
+pref.timezone.Asia.Vientiane=Àsia/Vientiane
+pref.timezone.Asia.Vladivostok=Àsia/Vladivostok
+pref.timezone.Asia.Yakutsk=Àsia/Yakutsk
+pref.timezone.Asia.Yekaterinburg=Àsia/Yekaterinburg
+pref.timezone.Asia.Yerevan=Àsia/Yerevan
+pref.timezone.Atlantic.Azores=Atlàntic/Açores
+pref.timezone.Atlantic.Bermuda=Atlàntic/Bermuda
+pref.timezone.Atlantic.Canary=Atlàntic/Canàries
+pref.timezone.Atlantic.Cape_Verde=Atlàntic/Cap_Verd
+pref.timezone.Atlantic.Faroe=Atlàntic/Fèroe
+pref.timezone.Atlantic.Madeira=Atlàntic/Madeira
+pref.timezone.Atlantic.Reykjavik=Atlàntic/Reykjavik
+pref.timezone.Atlantic.South_Georgia=Atlàntic/South_Georgia
+pref.timezone.Atlantic.St_Helena=Atlàntic/St_Helena
+pref.timezone.Atlantic.Stanley=Atlàntic/Stanley
+pref.timezone.Australia.Adelaide=Austràlia/Adelaide
+pref.timezone.Australia.Brisbane=Austràlia/Brisbane
+pref.timezone.Australia.Broken_Hill=Austràlia/Broken_Hill
+pref.timezone.Australia.Currie=Austràlia/Currie
+pref.timezone.Australia.Darwin=Austràlia/Darwin
+pref.timezone.Australia.Eucla=Austràlia/Eucla
+pref.timezone.Australia.Hobart=Austràlia/Hobart
+pref.timezone.Australia.Lindeman=Austràlia/Lindeman
+pref.timezone.Australia.Lord_Howe=Austràlia/Lord_Howe
+pref.timezone.Australia.Melbourne=Austràlia/Melbourne
+pref.timezone.Australia.Perth=Austràlia/Perth
+pref.timezone.Australia.Sydney=Austràlia/Sydney
+pref.timezone.Europe.Amsterdam=Europa/Amsterdam
+pref.timezone.Europe.Andorra=Europa/Andorra
+pref.timezone.Europe.Athens=Europa/Atenes
+pref.timezone.Europe.Belgrade=Europa/Belgrad
+pref.timezone.Europe.Berlin=Europa/Berlín
+pref.timezone.Europe.Bratislava=Europa/Bratislava
+pref.timezone.Europe.Brussels=Europa/Brussel·les
+pref.timezone.Europe.Bucharest=Europa/Bucarest
+pref.timezone.Europe.Budapest=Europa/Budapest
+pref.timezone.Europe.Chisinau=Europa/Chisinau
+pref.timezone.Europe.Copenhagen=Europa/Copenhagen
+pref.timezone.Europe.Dublin=Europa/Dublín
+pref.timezone.Europe.Gibraltar=Europa/Gibraltar
+pref.timezone.Europe.Guernsey=Europa/Guernsey
+pref.timezone.Europe.Helsinki=Europa/Helsinki
+pref.timezone.Europe.Isle_of_Man=Europa/Illa_de_Man
+pref.timezone.Europe.Istanbul=Europa/Istanbul
+pref.timezone.Europe.Jersey=Europa/Jersey
+pref.timezone.Europe.Kaliningrad=Europa/Kaliningrad
+pref.timezone.Europe.Kiev=Europa/Kiev
+pref.timezone.Europe.Lisbon=Europa/Lisboa
+pref.timezone.Europe.Ljubljana=Europa/Ljubljana
+pref.timezone.Europe.London=Europa/Londres
+pref.timezone.Europe.Luxembourg=Europa/Luxemburg
+pref.timezone.Europe.Madrid=Europa/Madrid
+pref.timezone.Europe.Malta=Europa/Malta
+pref.timezone.Europe.Mariehamn=Europa/Mariehamn
+pref.timezone.Europe.Minsk=Europa/Minsk
+pref.timezone.Europe.Monaco=Europa/Mònaco
+pref.timezone.Europe.Moscow=Europa/Moscou
+pref.timezone.Europe.Nicosia=Europa/Nicosia
+pref.timezone.Europe.Oslo=Europa/Oslo
+pref.timezone.Europe.Paris=Europa/París
+pref.timezone.Europe.Podgorica=Europa/Podgorica
+pref.timezone.Europe.Prague=Europa/Praga
+pref.timezone.Europe.Riga=Europa/Riga
+pref.timezone.Europe.Rome=Europa/Roma
+pref.timezone.Europe.Samara=Europa/Samara
+pref.timezone.Europe.San_Marino=Europa/San_Marino
+pref.timezone.Europe.Sarajevo=Europa/Sarajevo
+pref.timezone.Europe.Simferopol=Europa/Simferopol
+pref.timezone.Europe.Skopje=Europa/Skopje
+pref.timezone.Europe.Sofia=Europa/Sofia
+pref.timezone.Europe.Stockholm=Europa/Estocolm
+pref.timezone.Europe.Tallinn=Europa/Tallinn
+pref.timezone.Europe.Tirane=Europa/Tirane
+pref.timezone.Europe.Uzhgorod=Europa/Uzhgorod
+pref.timezone.Europe.Vaduz=Europa/Vaduz
+pref.timezone.Europe.Vatican=Europa/Vaticà
+pref.timezone.Europe.Vienna=Europa/Viena
+pref.timezone.Europe.Vilnius=Europa/Vilnius
+pref.timezone.Europe.Volgograd=Europa/Volgograd
+pref.timezone.Europe.Warsaw=Europa/Varsòvia
+pref.timezone.Europe.Zagreb=Europa/Zagreb
+pref.timezone.Europe.Zaporozhye=Europa/Zaporozhye
+pref.timezone.Europe.Zurich=Europa/Zurich
+pref.timezone.Indian.Antananarivo=Índia/Antananarivo
+pref.timezone.Indian.Chagos=Índia/Chagos
+pref.timezone.Indian.Christmas=Índia/Christmas
+pref.timezone.Indian.Cocos=Índia/Cocos
+pref.timezone.Indian.Comoro=Índia/Comoro
+pref.timezone.Indian.Kerguelen=Índia/Kerguelen
+pref.timezone.Indian.Mahe=Índia/Mahe
+pref.timezone.Indian.Maldives=Índia/Maldives
+pref.timezone.Indian.Mauritius=Índia/Mauritius
+pref.timezone.Indian.Mayotte=Índia/Mayotte
+pref.timezone.Indian.Reunion=Índia/Reunion
+pref.timezone.Pacific.Apia=Pacífic/Apia
+pref.timezone.Pacific.Auckland=Pacífic/Auckland
+pref.timezone.Pacific.Chatham=Pacífic/Chatham
+pref.timezone.Pacific.Easter=Pacífic/Easter
+pref.timezone.Pacific.Efate=Pacífic/Efate
+pref.timezone.Pacific.Enderbury=Pacífic/Enderbury
+pref.timezone.Pacific.Fakaofo=Pacífic/Fakaofo
+pref.timezone.Pacific.Fiji=Pacífic/Fiji
+pref.timezone.Pacific.Funafuti=Pacífic/Funafuti
+pref.timezone.Pacific.Galapagos=Pacífic/Galapagos
+pref.timezone.Pacific.Gambier=Pacífic/Gambier
+pref.timezone.Pacific.Guadalcanal=Pacífic/Guadalcanal
+pref.timezone.Pacific.Guam=Pacífic/Guam
+pref.timezone.Pacific.Honolulu=Pacífic/Honolulu
+pref.timezone.Pacific.Johnston=Pacífic/Johnston
+pref.timezone.Pacific.Kiritimati=Pacífic/Kiritimati
+pref.timezone.Pacific.Kosrae=Pacífic/Kosrae
+pref.timezone.Pacific.Kwajalein=Pacífic/Kwajalein
+pref.timezone.Pacific.Majuro=Pacífic/Majuro
+pref.timezone.Pacific.Marquesas=Pacífic/Marquesas
+pref.timezone.Pacific.Midway=Pacífic/Midway
+pref.timezone.Pacific.Nauru=Pacífic/Naüru
+pref.timezone.Pacific.Niue=Pacífic/Niue
+pref.timezone.Pacific.Norfolk=Pacífic/Norfolk
+pref.timezone.Pacific.Noumea=Pacífic/Noumea
+pref.timezone.Pacific.Pago_Pago=Pacífic/Pago_Pago
+pref.timezone.Pacific.Palau=Pacífic/Palau
+pref.timezone.Pacific.Pitcairn=Pacífic/Pitcairn
+pref.timezone.Pacific.Ponape=Pacífic/Ponape
+pref.timezone.Pacific.Port_Moresby=Pacífic/Port_Moresby
+pref.timezone.Pacific.Rarotonga=Pacífic/Rarotonga
+pref.timezone.Pacific.Saipan=Pacífic/Saipan
+pref.timezone.Pacific.Tahiti=Pacífic/Tahití
+pref.timezone.Pacific.Tarawa=Pacífic/Tarawa
+pref.timezone.Pacific.Tongatapu=Pacífic/Tongatapu
+pref.timezone.Pacific.Truk=Pacífic/Truk
+pref.timezone.Pacific.Wake=Pacífic/Wake
+pref.timezone.Pacific.Wallis=Pacífic/Wallis
+
+# the following have been missing
+pref.timezone.America.Indiana.Tell_City=Amèrica/Indiana/Ciutat Tell
+pref.timezone.America.Indiana.Winamac=Amèrica/Indiana/Winamac
+pref.timezone.America.Marigot=Amèrica/Marigot
+pref.timezone.America.Resolute=Amèrica/Resolute
+pref.timezone.America.St_Barthelemy=Amèrica/St. Bartomeu
+
+# added with 2008d:
+pref.timezone.America.Argentina.San_Luis=Amèrica/Argentina/Sant Lluís
+pref.timezone.America.Santarem=Amèrica/Santarem
+pref.timezone.Asia.Ho_Chi_Minh=Àsia/Ho Chi Minh
+pref.timezone.Asia.Kolkata=Àsia/Calcuta
+
+# added with 2008i:
+pref.timezone.America.Argentina.Salta=Amèrica/Argentina/Salta
+
+# added with 2010i
+pref.timezone.America.Matamoros=Amèrica/Matamoros
+pref.timezone.America.Ojinaga=Amèrica/Ojinaga
+pref.timezone.America.Santa_Isabel=Amèrica/Santa Isabel
+pref.timezone.Antarctica.Macquarie=Antàrtida/Macquarie
+pref.timezone.Asia.Novokuznetsk=Àsia/Novokuznetsk
+
+#added with 2011b
+pref.timezone.America.Bahia_Banderas=Amèrica/Badia Banderas
+pref.timezone.America.North_Dakota.Beulah=Amèrica/Dakota del Nord/Beulah
+pref.timezone.Pacific.Chuuk=Pacífic/Chuuk
+pref.timezone.Pacific.Pohnpei=Pacífic/Pohnpei
+
+#added with 2011n
+pref.timezone.Africa.Juba=Àfrica/Juba
+pref.timezone.America.Kralendijk=Amèrica/Kralendijk
+pref.timezone.America.Lower_Princes=Amèrica/Lower Princes
+pref.timezone.America.Metlakatla=Amèrica/Metlakatla
+pref.timezone.America.Sitka=Amèrica/Sitka
+pref.timezone.Asia.Hebron=Àsia/Hebron
+
+#added with 2013a
+pref.timezone.America.Creston=Amèrica/Creston
+pref.timezone.Asia.Khandyga=Àsia/Khandyga
+pref.timezone.Asia.Ust-Nera=Àsia/Ust-Nera
+pref.timezone.Europe.Busingen=Europa/Busingen
+
+#added with 2014b
+pref.timezone.Antarctica.Troll=Antàrtida/Troll
+
+#added with 2014j
+pref.timezone.Asia.Chita=Àsia/Chita
+pref.timezone.Asia.Srednekolymsk=Àsia/Srednekolymsk
+pref.timezone.Pacific.Bougainville=Pacífic/Bougainville
+
+#added with 2.2015g
+pref.timezone.America.Fort_Nelson=Amèrica/Fort Nelson
+
+#added with 2.2016b
+pref.timezone.Europe.Ulyanovsk=Europa/Uliànovsk
+pref.timezone.Europe.Astrakhan=Europa/Àstrakhan
+pref.timezone.Asia.Barnaul=Àsia/Barnaül
+
+#added with 2.2016i
+pref.timezone.Asia.Yangon=Àsia/Yangon
+pref.timezone.Asia.Tomsk=Àsia/Tomsk
+pref.timezone.Asia.Famagusta=Àsia/Famagusta
+pref.timezone.Europe.Kirov=Europa/Kírov
+
+#added with 2.2016j
+pref.timezone.Europe.Saratov=Europa/Saràtov
+pref.timezone.Asia.Atyrau=Àsia/Atirau
+
+#added with 2.2017b
+pref.timezone.America.Punta_Arenas=Amèrica/Punta Arenas
+
+#added with 2.2018i
+pref.timezone.Asia.Qostanay=Àsia/Qostanay
+
+#added with 2.2020a
+pref.timezone.America.Nuuk=Amèrica/Nuuk
diff --git a/l10n-ca/calendar/chrome/lightning/lightning-toolbar.dtd b/l10n-ca/calendar/chrome/lightning/lightning-toolbar.dtd
new file mode 100644
index 0000000000..ccde9a8933
--- /dev/null
+++ b/l10n-ca/calendar/chrome/lightning/lightning-toolbar.dtd
@@ -0,0 +1,51 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY lightning.toolbar.calendar.name "Barra d'eines del calendari">
+<!ENTITY lightning.toolbar.calendar.name.accesskey "C">
+<!ENTITY lightning.toolbar.task.name "Barra d'eines de les tasques">
+<!ENTITY lightning.toolbar.task.name.accesskey "T">
+
+<!ENTITY lightning.toolbar.sync.label "Sincronitza">
+<!ENTITY lightning.toolbar.sync.tooltip "Torna a carregar els calendaris i sincronitza els canvis">
+<!ENTITY lightning.toolbar.delete.label "Suprimeix">
+<!ENTITY lightning.toolbar.delete.tooltip "Suprimeix les cites o les tasques seleccionades">
+<!ENTITY lightning.toolbar.edit.label "Edita">
+<!ENTITY lightning.toolbar.edit.tooltip "Edita la cita o la tasca seleccionada">
+<!ENTITY lightning.toolbar.gototoday.label "Vés a avui">
+<!ENTITY lightning.toolbar.gototoday.tooltip "Vés a avui">
+<!ENTITY lightning.toolbar.print.label "Imprimeix">
+<!ENTITY lightning.toolbar.print.tooltip "Imprimeix cites o tasques">
+
+<!-- Mode Toolbar -->
+<!ENTITY lightning.toolbar.calendar.label "Calendari">
+<!ENTITY lightning.toolbar.calendar.tooltip "Mostra la pestanya del calendari">
+<!ENTITY lightning.toolbar.calendar.accesskey "C">
+<!ENTITY lightning.toolbar.task.label "Tasques">
+<!ENTITY lightning.toolbar.task.tooltip "Mostra la pestanya de les tasques">
+<!ENTITY lightning.toolbar.task.accesskey "T">
+
+<!-- Toolbar write button -->
+<!ENTITY lightning.toolbar.newevent.label "Cita">
+<!ENTITY lightning.toolbar.newevent.tooltip "Crea una cita nova">
+<!ENTITY lightning.toolbar.newtask.label "Tasca">
+<!ENTITY lightning.toolbar.newtask.tooltip "Crea una tasca nova">
+
+<!-- Calendar and Task Mode Toolbar -->
+<!ENTITY lightning.toolbar.day.label "Dia">
+<!ENTITY lightning.toolbar.day.accesskey "D">
+<!ENTITY lightning.toolbar.week.label "Setmana">
+<!ENTITY lightning.toolbar.week.accesskey "S">
+<!ENTITY lightning.toolbar.multiweek.label "Multisetmana">
+<!ENTITY lightning.toolbar.multiweek.accesskey "u">
+<!ENTITY lightning.toolbar.month.label "Mes">
+<!ENTITY lightning.toolbar.month.accesskey "M">
+<!-- LOCALIZATION NOTE: the same as appmenuButton.label and appmenuButton1.tooltip
+ from messenger.dtd -->
+<!ENTITY lightning.toolbar.appmenuButton.label "Menú d'aplicacions">
+<!ENTITY lightning.toolbar.appmenuButton1.tooltip "Mostra el menú del &brandShortName;">
+<!ENTITY lightning.toolbar.calendarmenu.label "Subfinestra del calendari">
+<!ENTITY lightning.toolbar.calendarmenu.accesskey "b">
+<!ENTITY lightning.toolbar.calendarpane.label "Mostra la subfinestra del calendari">
+<!ENTITY lightning.toolbar.calendarpane.accesskey "b">
diff --git a/l10n-ca/calendar/chrome/lightning/lightning.dtd b/l10n-ca/calendar/chrome/lightning/lightning.dtd
new file mode 100644
index 0000000000..7e8dba5230
--- /dev/null
+++ b/l10n-ca/calendar/chrome/lightning/lightning.dtd
@@ -0,0 +1,116 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!-- WARNING! This file contains UTF-8 encoded characters!
+ - If this ==> … <== doesn't look like an ellipsis (three dots in a row),
+ - your editor isn't using UTF-8 encoding and may munge up the document!
+ -->
+
+<!-- Tools menu -->
+<!ENTITY lightning.preferencesLabel "Calendari">
+
+<!-- New menu popup in File menu -->
+<!ENTITY lightning.menupopup.new.event.label "Cita…">
+<!ENTITY lightning.menupopup.new.event.accesskey "C">
+<!ENTITY lightning.menupopup.new.task.label "Tasca…">
+<!ENTITY lightning.menupopup.new.task.accesskey "T">
+<!ENTITY lightning.menupopup.new.calendar.label "Calendari…">
+<!ENTITY lightning.menupopup.new.calendar.accesskey "n">
+
+<!-- Open menu popup in File menu -->
+<!ENTITY lightning.menupopup.open.label "Obre">
+<!ENTITY lightning.menupopup.open.accesskey "O">
+<!ENTITY lightning.menupopup.open.message.label "Missatge desat…">
+<!ENTITY lightning.menupopup.open.message.accesskey "M">
+
+<!-- Open menu popup in File menu -->
+<!ENTITY lightning.menupopup.open.calendar.label "Fitxer de calendari…">
+<!ENTITY lightning.menupopup.open.calendar.accesskey "c">
+
+<!-- View Menu -->
+<!ENTITY lightning.menu.view.calendar.label "Calendari">
+<!ENTITY lightning.menu.view.calendar.accesskey "C">
+<!ENTITY lightning.menu.view.tasks.label "Tasques">
+<!ENTITY lightning.menu.view.tasks.accesskey "T">
+
+<!-- Events and Tasks menu -->
+<!ENTITY lightning.menu.eventtask.label "Cites i tasques">
+<!ENTITY lightning.menu.eventtask.accesskey "i">
+
+<!-- properties dialog, calendar creation wizard -->
+<!-- LOCALIZATON NOTE(lightning.calendarproperties.email.label,
+ lightning.calendarproperties.forceEmailScheduling.label)
+ These strings are used in the calendar wizard and the calendar properties dialog, but are only
+ displayed when setting/using a caldav calendar -->
+<!ENTITY lightning.calendarproperties.email.label "Correu electrònic:">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.label "Prefereix la planificació del correu electrònic del costat del client">
+<!-- LOCALIZATON NOTE(lightning.calendarproperties.forceEmailScheduling.tooltiptext1,
+ lightning.calendarproperties.forceEmailScheduling.tooltiptext2)
+ - tooltiptext1 is used in the calendar wizard when setting a new caldav calendar
+ - tooltiptext2 is used in the calendar properties dialog for caldav calendars -->
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.tooltiptext1 "Per ara, només podeu activar-ho després d'haver configurat aquest calendari en el seu diàleg de propietats si el servidor de calendari s'encarrega de la planificació.">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.tooltiptext2 "Aquesta opció només està disponible si el servidor del calendari s'encarrega de la planificació. Si l'activeu, s'utilitzarà la planificació basada en correu electrònic estàndard en lloc de deixar que se n'encarregui el servidor.">
+
+<!-- iMIP Bar (meeting support) -->
+<!ENTITY lightning.imipbar.btnAccept.label "Accepta">
+<!ENTITY lightning.imipbar.btnAccept2.tooltiptext "Accepta la invitació a la cita">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences.label "Accepta-ho tot">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences2.tooltiptext "Accepta la invitació en totes les ocurrències de la cita">
+<!ENTITY lightning.imipbar.btnAdd.label "Afegeix">
+<!ENTITY lightning.imipbar.btnAdd.tooltiptext "Afegeix la cita al calendari">
+<!ENTITY lightning.imipbar.btnDecline.label "Declina">
+<!ENTITY lightning.imipbar.btnDecline2.tooltiptext "Declina la invitació a la cita">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences.label "Declina-ho tot">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences2.tooltiptext "Declina la invitació en totes les ocurrències de la cita">
+<!ENTITY lightning.imipbar.btnDeclineCounter.label "Declina">
+<!ENTITY lightning.imipbar.btnDeclineCounter.tooltiptext "Declina la contraproposta">
+<!ENTITY lightning.imipbar.btnDelete.label "Suprimeix">
+<!ENTITY lightning.imipbar.btnDelete.tooltiptext "Suprimeix del calendari">
+<!ENTITY lightning.imipbar.btnDetails.label "Detalls…">
+<!ENTITY lightning.imipbar.btnDetails.tooltiptext "Mostra els detalls de la cita">
+<!ENTITY lightning.imipbar.btnDoNotShowImipBar.label "No mostris aquests missatges">
+<!ENTITY lightning.imipbar.btnGoToCalendar.label "Calendari">
+<!ENTITY lightning.imipbar.btnGoToCalendar.tooltiptext "Vés a la pestanya del calendari">
+<!ENTITY lightning.imipbar.btnMore.label "Més">
+<!ENTITY lightning.imipbar.btnMore.tooltiptext "Feu clic aquí per veure més opcions">
+<!ENTITY lightning.imipbar.btnReconfirm2.label "Reconfirma">
+<!ENTITY lightning.imipbar.btnReconfirm.tooltiptext "Envia una reconfirmació a l'organitzador">
+<!ENTITY lightning.imipbar.btnReschedule.label "Replanifica">
+<!ENTITY lightning.imipbar.btnReschedule.tooltiptext "Replanifica la cita">
+<!ENTITY lightning.imipbar.btnSaveCopy.label "Desa'n una còpia">
+<!ENTITY lightning.imipbar.btnSaveCopy.tooltiptext "Desa una còpia de la cita al calendari independentment de la resposta a l'organitzador. S'esborrarà la llista d'assistents.">
+<!ENTITY lightning.imipbar.btnTentative.label "Provisional">
+<!ENTITY lightning.imipbar.btnTentative2.tooltiptext "Accepta la invitació a la cita provisionalment">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences.label "Tot provisional">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences2.tooltiptext "Accepta la invitació provisionalment en totes les ocurrències de la cita">
+<!ENTITY lightning.imipbar.btnUpdate.label "Actualitza">
+<!ENTITY lightning.imipbar.btnUpdate.tooltiptext "Actualitza la cita al calendari">
+<!ENTITY lightning.imipbar.description "Aquest missatge conté una invitació a una cita.">
+
+<!ENTITY lightning.imipbar.btnSend.label "Envia una resposta ara">
+<!ENTITY lightning.imipbar.btnSend.tooltiptext "Envia una resposta a l'organitzador">
+<!ENTITY lightning.imipbar.btnSendSeries.tooltiptext "Envia una resposta a l'organitzador per a tota la sèrie">
+<!ENTITY lightning.imipbar.btnDontSend.label "No enviïs cap resposta">
+<!ENTITY lightning.imipbar.btnDontSend.tooltiptext "Canvia el vostre estat de participació sense enviar cap resposta a l'organitzador">
+<!ENTITY lightning.imipbar.btnDontSendSeries.tooltiptext "Canvia el vostre estat de participació de tota la sèrie sense enviar cap resposta a l'organitzador">
+
+<!-- Lightning specific keybindings -->
+<!ENTITY lightning.keys.event.showCalendar.key "C">
+<!ENTITY lightning.keys.event.showTasks.key "D">
+<!ENTITY lightning.keys.event.new "I">
+<!ENTITY lightning.keys.todo.new "D">
+
+<!-- Account Central page -->
+<!ENTITY lightning.acctCentral.newCalendar.label "Crea un calendari nou">
+
+<!-- today-pane-specific -->
+<!ENTITY todaypane.showMinimonth.label "Mostra el Mini-mes">
+<!ENTITY todaypane.showMinimonth.accesskey "M">
+<!ENTITY todaypane.showMiniday.label "Mostra el Mini-dia">
+<!ENTITY todaypane.showMiniday.accesskey "d">
+<!ENTITY todaypane.showNone.label "No mostris res">
+<!ENTITY todaypane.showNone.accesskey "r">
+<!ENTITY todaypane.showTodayPane.label "Mostra el plafó d'avui">
+<!ENTITY todaypane.showTodayPane.accesskey "a">
+<!ENTITY todaypane.statusButton.label "Plafó d'avui">
diff --git a/l10n-ca/calendar/chrome/lightning/lightning.properties b/l10n-ca/calendar/chrome/lightning/lightning.properties
new file mode 100644
index 0000000000..3e520cc6cd
--- /dev/null
+++ b/l10n-ca/calendar/chrome/lightning/lightning.properties
@@ -0,0 +1,201 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# addon description:
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.name=Lightning
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.description=Calendari i planificació integrats en el client de correu
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator=Projecte Mozilla Calendar
+
+# Lightning branding
+brandShortName=Lightning
+
+# Task mode title
+taskModeApplicationTitle=Tasques
+
+# Tab titles
+tabTitleCalendar=Calendari
+tabTitleTasks=Tasques
+
+# Html event display in message
+imipHtml.header=Invitació a la cita
+imipHtml.summary=Títol:
+imipHtml.location=Ubicació:
+imipHtml.when=Quan:
+imipHtml.organizer=Organitzador:
+imipHtml.description=Descripció:
+# LOCALIZATION_NOTE(imipHtml.attachments): This is a label for one or more (additional) links to
+# documents or websites attached to this event.
+imipHtml.attachments=Adjuncions:
+imipHtml.comment=Comentari:
+imipHtml.attendees=Assistents:
+# LOCALIZATION_NOTE(imipHtml.url): This is a label for a reference to an (alternate) online
+# representation of the event (either directly human readable or not).
+imipHtml.url=Enllaç relacionat:
+imipHtml.canceledOccurrences=Ocurrències cancel·lades:
+imipHtml.modifiedOccurrences=Ocurrències modificades:
+imipHtml.newLocation=Ubicació nova: %1$S
+# LOCALIZATION_NOTE(imipHtml.attendeeDelegatedFrom): this is appended behind an attendee name in the
+# email invitation preview - don't add leading/trailing whitespaces here
+# %1$S - a single delegator or a comma separated list of delegators
+imipHtml.attendeeDelegatedFrom=(s'ha delegat de %1$S)
+# LOCALIZATION_NOTE(imipHtml.attendeeDelegatedTo): this is appended behind an attendee name in the
+# email invitation preview - don't add leading/trailing whitespaces here
+# %1$S - a single delegatee or a comma separated list of delegatees
+imipHtml.attendeeDelegatedTo=(s'ha delegat a %1$S)
+
+# LOCALIZATION_NOTE(imipHtml.attendee.combined): tooltip for itip icon in email invitation preview.
+# Given an attendee loungeexample.org of type room is a mandatory participant and has accepted the
+# invitation, the tooltip would be:
+# lounge@example.org (room) is a required participant. lounge@example.org has confirmed attendance.
+# %1$S - value of imipHtml.attendeeRole2.*
+# %2$S - value of imipHtml.attendeePartStat2.*
+imipHtml.attendee.combined=%1$S %2$S
+
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.CHAIR): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.CHAIR=%1$S presideix la cita.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.NON-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.NON-PARTICIPANT=%1$S no hi participa.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.OPT-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.OPT-PARTICIPANT=%1$S és un participant opcional.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.REQ-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.REQ-PARTICIPANT=%1$S és un participant necessari.
+
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.ACCEPTED): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.ACCEPTED=%1$S ha confirmat l'assistència.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.DECLINED): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.DECLINED=%1$S ha declinat l'assistència.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.DELEGATED): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+# %2$S - single delegatee or comma separated list of delegatees
+# delegation is different from invitation forwarding - in case of the former the original attendee
+# is replaced, while on the latter the receiver may take part additionally
+imipHtml.attendeePartStat2.DELEGATED=%1$S ha delegat l'assistència a %2$S.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.NEEDS-ACTION): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.NEEDS-ACTION=%1$S encara no ha respost.
+# LOCALIZATION_NOTE(imipHtml.attendeePartStat2.TENTATIVE): used to compose
+# imipHtml.attendee.combined
+# %1$S - common name or email address of the attendee
+imipHtml.attendeePartStat2.TENTATIVE=%1$S ha confirmat l'assistència provisionalment.
+
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.INDIVIDUAL): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing an individual attendee
+imipHtml.attendeeUserType2.INDIVIDUAL=%1$S
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.GROUP): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a group (e.g. a distribution list)
+imipHtml.attendeeUserType2.GROUP=%1$S (grup)
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.RESOURCE): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a resource (e.g. projector)
+imipHtml.attendeeUserType2.RESOURCE=%1$S (recurs)
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.ROOM): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a room
+imipHtml.attendeeUserType2.ROOM=%1$S (sala)
+# LOCALIZATION_NOTE(imipHtml.attendeeUserType2.UNKNOWN): used to compose
+# imipHtml.attendeeRole2.*
+# %1$S - email address or common name <email address> representing an attendee of unknown type
+imipHtml.attendeeUserType2.UNKNOWN=%1$S
+
+imipAddedItemToCal2=S'ha afegit la cita al calendari.
+imipCanceledItem2=S'ha suprimit la cita del calendari.
+imipUpdatedItem2=La cita s'ha actualitzat.
+imipBarCancelText=Aquest missatge conté una cancel·lació d'una cita.
+imipBarCounterErrorText=Aquest missatge conté una contraproposta a una invitació que no es pot processar.
+imipBarCounterPreviousVersionText=Aquest missatge conté una contraproposta a la versió anterior d'una invitació.
+imipBarCounterText=Aquest missatge conté una contraproposta a una invitació.
+imipBarDisallowedCounterText=Aquest missatge conté una contraproposta, malgrat que heu inhabilitat les contrapropostes per a aquesta cita.
+imipBarDeclineCounterText=Aquest missatge conté una resposta a la vostra contraproposta.
+imipBarRefreshText=Aquest missatge demana l'actualització d'una cita.
+imipBarPublishText=Aquest missatge conté una cita.
+imipBarRequestText=Aquest missatge conté una invitació a una cita.
+imipBarSentText=Aquest missatge conté una cita enviada.
+imipBarSentButRemovedText=Aquest missatge conté una cita enviada que ja no és al vostre calendari.
+imipBarUpdateText=Aquest missatge conté una actualització d'una cita ja existent.
+imipBarUpdateMultipleText=Aquest missatge conté actualitzacions de diverses cites ja existents.
+imipBarUpdateSeriesText=Aquest missatge conté una actualització d'una sèrie de cites ja existent.
+imipBarAlreadyProcessedText=Aquest missatge conté una invitació a una cita que ja ha estat tractada.
+imipBarProcessedNeedsAction=Aquest missatge conté una cita a la qual encara no heu respost.
+imipBarProcessedMultipleNeedsAction=Aquest missatge conté diverses cites a les quals encara no heu respost.
+imipBarProcessedSeriesNeedsAction=Aquest missatge conté una sèrie de cites a la qual encara no heu respost.
+imipBarReplyText=Aquest missatge conté una resposta a una invitació.
+imipBarReplyToNotExistingItem=Aquest missatge conté una resposta que fa referència a una cita que ja no és al vostre calendari.
+# LOCALIZATION_NOTE(imipBarReplyToRecentlyRemovedItem):
+# %1$S - datetime of deletion
+imipBarReplyToRecentlyRemovedItem=Aquest missatge conté una resposta que fa referència a una cita que es va suprimir del calendari el %1$S.
+imipBarUnsupportedText=Aquest missatge conté una cita que aquesta versió del Lightning no ha pogut tractar.
+imipBarUnsupportedText2=Aquest missatge conté una cita que aquesta versió del %1$S no ha pogut tractar.
+imipBarProcessingFailed=El tractament del missatge ha fallat. Estat: %1$S.
+imipBarCalendarDeactivated=Aquest missatge conté informació d'una cita. Activeu un calendari per gestionar-lo.
+imipBarNotWritable=No hi cap calendari per a invitacions que es pugui escriure. Comproveu les propietats del calendari.
+imipSendMail.title=Notificació via correu electrònic
+imipSendMail.text=Voleu enviar una notificació via correu electrònic ara?
+imipNoIdentity=Cap
+imipNoCalendarAvailable=No hi ha cap calendari per escriure-hi.
+
+itipReplySubject2=Resposta a la invitació: %1$S
+itipReplyBodyAccept=%1$S ha acceptat la vostra invitació a la cita.
+itipReplyBodyDecline=%1$S ha declinat la vostra invitació a la cita.
+itipReplySubjectAccept2=Acceptada: %1$S
+itipReplySubjectDecline2=Invitació declinada: %1$S
+itipReplySubjectTentative2=Provisional: %1$S
+itipRequestSubject2=Invitació: %1$S
+itipRequestUpdatedSubject2=Actualitzada: %1$S
+itipRequestBody=%1$S us ha invitat a %2$S
+itipCancelSubject2=Cancel·lada: %1$S
+itipCancelBody=%1$S ha cancel·lat aquesta cita: %2$S
+itipCounterBody=%1$S ha fet una contraproposta per a «%2$S»:
+itipDeclineCounterBody=%1$S ha declinat la vostra contraproposta per a «%2$S».
+itipDeclineCounterSubject=Contraproposta declinada: %1$S
+
+confirmProcessInvitation=Recentment heu suprimit aquest element. Esteu segur que voleu processar aquesta invitació?
+confirmProcessInvitationTitle=Voleu processar la invitació?
+
+invitationsLink.label=Invitacions: %1$S
+
+# LOCALIZATION_NOTE(binaryComponentKnown): This is shown when Lightning is
+# missing the binary component and knows how to calculate the expected version
+# number. To test, remove the binary component from the components/
+# subdirectory and start Lightning, or force install into a different
+# Thunderbird version. In the last part of the sentence it should be made clear
+# that the user can install e.g. 3.7, 3.7.1 or anything other 3.7.x version
+# %1$S - The Lightning brand name, from the brandShortName string above.
+# %2$S - The current Lightning version
+# %3$S - The expected Lightning version
+binaryComponentKnown=No s'ha pogut carregar el component binari necessari per al %1$S, probablement perquè la combinació de versions que utilitzeu és incorrecta. Actualment teniu instal·lat el %1$S %2$S, però hauríeu d'utilitzar una versió de la sèrie %3$S.
+
+# LOCALIZATION_NOTE(binaryComponentUnknown): This is shown when Lightning is
+# missing the binary component but can't calculate the expected version. This
+# happens in the rare case that Lightning is installed into something other
+# than Thunderbird or Seamonkey. You may link to a different page if you can
+# commit to keeping it up to date, I'd recommend staying with the English page.
+# %1$S - The Lightning brand name, from the brandShortName string above.
+# %2$S - The application brand name, e.g. Postbox
+# %3$S - The application version
+# %3$S - The current Lightning version
+binaryComponentUnknown=No s'ha pogut carregar el component binari necessari per al %1$S, probablement perquè la combinació de versions que utilitzeu és incorrecta. Actualment esteu utilitzant el %2$S %3$S juntament amb el %1$S %4$S. Vegeu més detalls a https://developer.mozilla.org/en/Calendar/Calendar_Versions.
+
+# LOCALIZATION_NOTE(binaryComponentTitle): The title for the dialog that
+# notifies about a version mismatch.
+# %1$S - The Lightning brand name, from the brandShortName string above.
+binaryComponentTitle=La versió del %1$S no coincideix
+
+# LOCALIZATION NOTE(noIdentitySelectedNotification):
+noIdentitySelectedNotification=Si voleu utilitzar aquest calendari per emmagatzemar les invitacions d'altres persones, heu d'assignar una identitat de correu electrònic a continuació.