summaryrefslogtreecommitdiffstats
path: root/l10n-fr/calendar
diff options
context:
space:
mode:
Diffstat (limited to 'l10n-fr/calendar')
-rw-r--r--l10n-fr/calendar/README.txt3
-rw-r--r--l10n-fr/calendar/calendar/calendar-context-menus.ftl7
-rw-r--r--l10n-fr/calendar/calendar/calendar-delete-prompt.ftl35
-rw-r--r--l10n-fr/calendar/calendar/calendar-editable-item.ftl30
-rw-r--r--l10n-fr/calendar/calendar/calendar-event-dialog-reminder.ftl10
-rw-r--r--l10n-fr/calendar/calendar/calendar-ics-file-dialog.ftl45
-rw-r--r--l10n-fr/calendar/calendar/calendar-invitation-panel.ftl96
-rw-r--r--l10n-fr/calendar/calendar/calendar-invitations-dialog.ftl10
-rw-r--r--l10n-fr/calendar/calendar/calendar-itip-identity-dialog.ftl8
-rw-r--r--l10n-fr/calendar/calendar/calendar-print.ftl17
-rw-r--r--l10n-fr/calendar/calendar/calendar-summary-dialog.ftl15
-rw-r--r--l10n-fr/calendar/calendar/calendar-uri-redirect-dialog.ftl11
-rw-r--r--l10n-fr/calendar/calendar/calendar-widgets.ftl9
-rw-r--r--l10n-fr/calendar/calendar/category-dialog.ftl7
-rw-r--r--l10n-fr/calendar/calendar/preferences.ftl192
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-alarms.properties39
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-event-dialog-attendees.properties15
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-event-dialog.dtd433
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-event-dialog.properties541
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-extract.properties294
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-invitations-dialog.dtd19
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-invitations-dialog.properties10
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-occurrence-prompt.dtd7
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar-occurrence-prompt.properties53
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar.dtd388
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendar.properties696
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendarCreation.dtd51
-rw-r--r--l10n-fr/calendar/chrome/calendar/calendarCreation.properties6
-rw-r--r--l10n-fr/calendar/chrome/calendar/categories.properties7
-rw-r--r--l10n-fr/calendar/chrome/calendar/dateFormat.properties146
-rw-r--r--l10n-fr/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd19
-rw-r--r--l10n-fr/calendar/chrome/calendar/global.dtd54
-rw-r--r--l10n-fr/calendar/chrome/calendar/menuOverlay.dtd50
-rw-r--r--l10n-fr/calendar/chrome/calendar/migration.dtd9
-rw-r--r--l10n-fr/calendar/chrome/calendar/migration.properties13
-rw-r--r--l10n-fr/calendar/chrome/calendar/provider-uninstall.dtd12
-rw-r--r--l10n-fr/calendar/chrome/calendar/timezones.properties489
-rw-r--r--l10n-fr/calendar/chrome/lightning/lightning-toolbar.dtd51
-rw-r--r--l10n-fr/calendar/chrome/lightning/lightning.dtd114
-rw-r--r--l10n-fr/calendar/chrome/lightning/lightning.properties201
-rw-r--r--l10n-fr/calendar/lightning-l10n.js23
41 files changed, 4235 insertions, 0 deletions
diff --git a/l10n-fr/calendar/README.txt b/l10n-fr/calendar/README.txt
new file mode 100644
index 0000000000..f1c54d3d0d
--- /dev/null
+++ b/l10n-fr/calendar/README.txt
@@ -0,0 +1,3 @@
+Pour des informations sur l’installation, l’exécution et la configuration
+de Sunbird, ainsi que pour une liste des problèmes connus et des informations
+de dépannage, veuillez consulter : http://www.mozilla.org/projects/calendar/ .
diff --git a/l10n-fr/calendar/calendar/calendar-context-menus.ftl b/l10n-fr/calendar/calendar/calendar-context-menus.ftl
new file mode 100644
index 0000000000..6233d10228
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-context-menus.ftl
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-item-context-menu-modify-menuitem =
+ .label = Modifier
+ .accesskey = M
diff --git a/l10n-fr/calendar/calendar/calendar-delete-prompt.ftl b/l10n-fr/calendar/calendar/calendar-delete-prompt.ftl
new file mode 100644
index 0000000000..a5ccb6eb4e
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-delete-prompt.ftl
@@ -0,0 +1,35 @@
+# 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-delete-event-prompt-title =
+ { $count ->
+ [one] Supprimer l’évènement
+ *[other] Supprimer les évènements
+ }
+calendar-delete-event-prompt-message =
+ { $count ->
+ [one] Voulez-vous vraiment supprimer cet évènement ?
+ *[other] Voulez-vous vraiment supprimer ces { $count } évènements ?
+ }
+calendar-delete-task-prompt-title =
+ { $count ->
+ [one] Supprimer la tâche
+ *[other] Supprimer les tâches
+ }
+calendar-delete-task-prompt-message =
+ { $count ->
+ [one] Voulez-vous vraiment supprimer cette tâche ?
+ *[other] Voulez-vous vraiment supprimer ces { $count } tâches ?
+ }
+calendar-delete-item-prompt-title =
+ { $count ->
+ [one] Supprimer l’élément
+ *[other] Supprimer les éléments
+ }
+calendar-delete-item-prompt-message =
+ { $count ->
+ [one] Voulez-vous vraiment supprimer cet élément ?
+ *[other] Voulez-vous vraiment supprimer ces { $count } éléments ?
+ }
+calendar-delete-prompt-disable-message = Ne plus demander à l’avenir.
diff --git a/l10n-fr/calendar/calendar/calendar-editable-item.ftl b/l10n-fr/calendar/calendar/calendar-editable-item.ftl
new file mode 100644
index 0000000000..b480ea586d
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-editable-item.ftl
@@ -0,0 +1,30 @@
+# 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-editable-item-privacy-icon-private =
+ .alt = Confidentialité : évènement privé
+calendar-editable-item-privacy-icon-confidential =
+ .alt = Confidentialité : n’afficher que la date et l’heure
+calendar-editable-item-recurrence =
+ .alt = Récurrent
+calendar-editable-item-recurrence-exception =
+ .alt = Exception de récurrence
+calendar-editable-item-todo-icon-task =
+ .alt = Tâche
+calendar-editable-item-todo-icon-completed-task =
+ .alt = Tâche achevée
+calendar-editable-item-multiday-event-icon-start =
+ .alt = Début de l’évènement sur plusieurs jours
+calendar-editable-item-multiday-event-icon-continue =
+ .alt = L’évènement se poursuit sur plusieurs jours
+calendar-editable-item-multiday-event-icon-end =
+ .alt = Fin de l’évènement sur plusieurs jours
+calendar-editable-item-reminder-icon-alarm =
+ .alt = Une alerte de rappel est programmée
+calendar-editable-item-reminder-icon-suppressed-alarm =
+ .alt = Une alerte de rappel est programmée mais est actuellement supprimée
+calendar-editable-item-reminder-icon-email =
+ .alt = Un courriel de rappel est programmé
+calendar-editable-item-reminder-icon-audio =
+ .alt = Une alerte audio de rappel est programmée
diff --git a/l10n-fr/calendar/calendar/calendar-event-dialog-reminder.ftl b/l10n-fr/calendar/calendar/calendar-event-dialog-reminder.ftl
new file mode 100644
index 0000000000..707a2a5aed
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-event-dialog-reminder.ftl
@@ -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/.
+
+calendar-event-reminder-icon-display =
+ .alt = Afficher une alerte
+calendar-event-reminder-icon-email =
+ .alt = Envoyer un courrier électronique
+calendar-event-reminder-icon-audio =
+ .alt = Lire une alerte audio
diff --git a/l10n-fr/calendar/calendar/calendar-ics-file-dialog.ftl b/l10n-fr/calendar/calendar/calendar-ics-file-dialog.ftl
new file mode 100644
index 0000000000..64caa1e15b
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-ics-file-dialog.ftl
@@ -0,0 +1,45 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-ics-file-window-2 =
+ .title = Importer des évènements et des tâches dans un agenda
+calendar-ics-file-dialog-import-event-button-label = Importer un évènement
+calendar-ics-file-dialog-import-task-button-label = Importer une tâche
+calendar-ics-file-dialog-2 =
+ .buttonlabelaccept = Tout importer
+calendar-ics-file-accept-button-ok-label = OK
+calendar-ics-file-cancel-button-close-label = Fermer
+calendar-ics-file-dialog-message-2 = Importer depuis un fichier :
+calendar-ics-file-dialog-calendar-menu-label = Importer dans l’agenda :
+calendar-ics-file-dialog-items-loading-message =
+ .value = Chargement des éléments…
+calendar-ics-file-dialog-search-input =
+ .placeholder = Filtrer les éléments…
+calendar-ics-file-dialog-sort-start-ascending =
+ .label = Trier par date de début (du premier au dernier)
+calendar-ics-file-dialog-sort-start-descending =
+ .label = Trier par date de début (du dernier au premier)
+# "A > Z" is used as a concise way to say "alphabetical order".
+# You may replace it with something appropriate to your language.
+calendar-ics-file-dialog-sort-title-ascending =
+ .label = Trier par titre (A > Z)
+# "Z > A" is used as a concise way to say "reverse alphabetical order".
+# You may replace it with something appropriate to your language.
+calendar-ics-file-dialog-sort-title-descending =
+ .label = Trier par titre (Z > A)
+calendar-ics-file-dialog-progress-message = Importation…
+calendar-ics-file-import-success = Importation réussie !
+calendar-ics-file-import-error = Une erreur s’est produite et l’importation a échoué.
+calendar-ics-file-import-complete = Importation terminée.
+calendar-ics-file-import-duplicates =
+ { $duplicatesCount ->
+ [one] Un élément a été ignoré car il existe déjà dans l’agenda de destination.
+ *[other] { $duplicatesCount } éléments ont été ignorés car ils existent déjà dans l’agenda de destination.
+ }
+calendar-ics-file-import-errors =
+ { $errorsCount ->
+ [one] Un élément n’a pas été importé. Consultez la console d’erreurs pour plus de détails.
+ *[other] { $errorsCount } éléments n’ont pas été importés. Consultez la console d’erreurs pour plus de détails.
+ }
+calendar-ics-file-dialog-no-calendars = Il n’y a aucun agenda susceptible d’importer des évènements ou des tâches.
diff --git a/l10n-fr/calendar/calendar/calendar-invitation-panel.ftl b/l10n-fr/calendar/calendar/calendar-invitation-panel.ftl
new file mode 100644
index 0000000000..9b153b19c6
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-invitation-panel.ftl
@@ -0,0 +1,96 @@
+# 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/.
+
+# Variables:
+# $organizer (String) - The participant that created the original invitation.
+calendar-invitation-panel-intro = { $organizer } vous a invité à :
+# Variables:
+# $organizer (String) - The participant that updated the original invitation.
+calendar-invitation-panel-intro-update = { $organizer } a mis à jour :
+# Variables:
+# $organizer (String) - The participant that cancelled the invitation.
+calendar-invitation-panel-intro-cancel = { $organizer } a annulé :
+# Variables:
+# $summary (String) - A short summary or title of the event.
+calendar-invitation-panel-title = { $summary }
+calendar-invitation-panel-action-button = Enregistrer
+calendar-invitation-panel-save-button = Enregistrer
+calendar-invitation-panel-view-button = Afficher
+calendar-invitation-panel-update-button = Mettre à jour
+calendar-invitation-panel-delete-button = Supprimer
+calendar-invitation-panel-accept-button = Oui
+calendar-invitation-panel-decline-button = Non
+calendar-invitation-panel-tentative-button = Peut-être
+calendar-invitation-panel-reply-status = * Vous n’avez pas encore décidé ou répondu
+calendar-invitation-panel-prop-title-when = Quand :
+calendar-invitation-panel-prop-title-location = Lieu :
+# Variables:
+# $dayOfWeek (String) - The day of the week for a given date.
+# $date (String) - The date example: Tuesday, February 24, 2022.
+calendar-invitation-datetime-date = { $dayOfWeek }, { $date }
+# Variables:
+# $time (String) - The time part of a datetime using the "short" timeStyle.
+# $timezone (String) - The timezone info for the datetime.
+calendar-invitation-datetime-time = { $time } ({ $timezone })
+# Example: Friday, September 16, 2022
+# Variables:
+# $startDate (String) - The date (without time) the event starts on.
+calendar-invitation-interval-all-day = { $startDate }
+# Example: September 16, 2022 – September 16, 2023
+# $startMonth (String) - The month the interval starts.
+# $startDay (String) - The day of the month the interval starts.
+# $startYear (String) - The year the interval starts.
+# $endMonth (String) - The month the interval ends.
+# $endDay (String) - The day of the month the interval ends.
+# $endYear (String) - The year the interval ends.
+calendar-invitation-interval-all-day-between-years = { $startDay } { $startMonth } { $startYear } - { $endDay } { $endMonth } { $endYear }
+# Example: September 16 – 20, 2022
+# $month (String) - The month the interval is in.
+# $startDay (String) - The day of the month the interval starts.
+# $endDay (String) - The day of the month the interval ends.
+# $year (String) - The year the interval is in.
+calendar-invitation-interval-all-day-in-month = { $startDay } - { $endDay } { $month } { $year }
+# Example: September 16 – October 20, 2022
+# $startMonth (String) - The month the interval starts.
+# $startDay (String) - The day of the month the interval starts.
+# $endDay (String) - The day of the month the interval ends.
+# $year (String) - The year the interval is in.
+calendar-invitation-interval-all-day-between-months = { $startDay } { $startMonth } - { $endDay } { $endMonth } { $year }
+# Example: Friday, September 16, 2022 15:00 America/Port of Spain
+# $startDate (String) - The date the interval starts.
+# $startTime (String) - The time the interval starts.
+# $timezone (String) - The timezone the interval is in.
+calendar-invitation-interval-same-date-time = { $startDate } <b>{ $startTime }</b> { $timezone }
+# Example: Friday, September 16, 2022 14:00 – 16:00 America/Port of Spain
+# $startDate (String) - The date the interval starts.
+# $startTime (String) - The time the interval starts.
+# $endTime (String) - The time the interval ends.
+# $timezone (String) - The timezone the interval is in.
+calendar-invitation-interval-same-day = { $startDate } <b>{ $startTime }</b> – <b>{ $endTime }</b> { $timezone }
+# Example: Friday, September 16, 2022 14:00 – Tuesday, September 20, 2022 16:00 America/Port of Spain
+# $startDate (String) - The date the interval starts.
+# $startTime (String) - The time the interval starts.
+# $startDate (String) - The date the interval ends.
+# $endTime (String) - The time the interval ends.
+# $timezone (String) - The timezone the interval is in.
+calendar-invitation-interval-several-days = { $startDate } <b>{ $startTime }</b> – { $endDate } <b>{ $endTime }</b> { $timezone }
+calendar-invitation-panel-prop-title-recurrence = Répétition :
+calendar-invitation-panel-prop-title-attendees = Participants :
+calendar-invitation-panel-prop-title-description = Description :
+# Variables:
+# $count (Number) - The number of attendees with the "ACCEPTED" participation status.
+calendar-invitation-panel-partstat-accepted = { $count } oui
+# Variables:
+# $count (Number) - The number of attendees with the "DECLINED" participation status.
+calendar-invitation-panel-partstat-declined = { $count } non
+# Variables:
+# $count (Number) - The number of attendees with the "TENTATIVE" participation status.
+calendar-invitation-panel-partstat-tentative = { $count } peut-être
+# Variables:
+# $count (Number) - The number of attendees with the "NEEDS-ACTION" participation status.
+calendar-invitation-panel-partstat-needs-action = { $count } en attente
+# Variables:
+# $count (Number) - The total number of attendees.
+calendar-invitation-panel-partstat-total = { $count } participants
+calendar-invitation-panel-prop-title-attachments = Pièces jointes :
diff --git a/l10n-fr/calendar/calendar/calendar-invitations-dialog.ftl b/l10n-fr/calendar/calendar/calendar-invitations-dialog.ftl
new file mode 100644
index 0000000000..91c9d61661
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-invitations-dialog.ftl
@@ -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/.
+
+calendar-invitation-current-participation-status-icon-accepted =
+ .alt = Actuellement acceptée
+calendar-invitation-current-participation-status-icon-declined =
+ .alt = Actuellement refusée
+calendar-invitation-current-participation-status-icon-needs-action =
+ .alt = Actuellement ni acceptée ni refusée
diff --git a/l10n-fr/calendar/calendar/calendar-itip-identity-dialog.ftl b/l10n-fr/calendar/calendar/calendar-itip-identity-dialog.ftl
new file mode 100644
index 0000000000..65dd6c7c67
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-itip-identity-dialog.ftl
@@ -0,0 +1,8 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-itip-identity-dialog-title = Vous vous invitez ?
+calendar-itip-identity-warning = Vous n’êtes pas encore sur la liste des invités.
+calendar-itip-identity-label = Répondre en tant que :
+calendar-itip-identity-label-none = Associer cet événement à :
diff --git a/l10n-fr/calendar/calendar/calendar-print.ftl b/l10n-fr/calendar/calendar/calendar-print.ftl
new file mode 100644
index 0000000000..ebf2f66433
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-print.ftl
@@ -0,0 +1,17 @@
+# 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-print-layout-label = Disposition
+calendar-print-layout-list = Liste
+calendar-print-layout-month-grid = Grille mensuelle
+calendar-print-layout-week-planner = Grille hebdomadaire
+calendar-print-filter-label = Plage à imprimer
+calendar-print-filter-events = Évènements
+calendar-print-filter-tasks = Tâches
+calendar-print-filter-completedtasks = Tâches terminées
+calendar-print-filter-taskswithnoduedate = Tâches sans date d’échéance
+calendar-print-range-from = De
+calendar-print-range-to = À
+calendar-print-back-button = Retour
+calendar-print-next-button = Suivant
diff --git a/l10n-fr/calendar/calendar/calendar-summary-dialog.ftl b/l10n-fr/calendar/calendar/calendar-summary-dialog.ftl
new file mode 100644
index 0000000000..16b05ecb96
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-summary-dialog.ftl
@@ -0,0 +1,15 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-summary-dialog-edit-button =
+ .label = Modifier
+ .accesskey = M
+calendar-summary-dialog-edit-menu-button =
+ .label = Modifier
+edit-button-context-menu-this-occurrence =
+ .label = Modifier uniquement cette occurrence
+ .accesskey = o
+edit-button-context-menu-all-occurrences =
+ .label = Modifier toutes les occurrences
+ .accesskey = t
diff --git a/l10n-fr/calendar/calendar/calendar-uri-redirect-dialog.ftl b/l10n-fr/calendar/calendar/calendar-uri-redirect-dialog.ftl
new file mode 100644
index 0000000000..62a084009a
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-uri-redirect-dialog.ftl
@@ -0,0 +1,11 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-uri-redirect-window =
+ .title = Redirection de l’adresse d’un agenda
+calendar-uri-redirect-description =
+ Le serveur redirige l’adresse (URI) de l’agenda « { $calendarName } ».
+ Accepter la redirection et commencer à utiliser la nouvelle adresse de cet agenda ?
+calendar-uri-redirect-original-uri-label = Adresse actuelle :
+calendar-uri-redirect-target-uri-label = Redirection vers :
diff --git a/l10n-fr/calendar/calendar/calendar-widgets.ftl b/l10n-fr/calendar/calendar/calendar-widgets.ftl
new file mode 100644
index 0000000000..02fb366cb4
--- /dev/null
+++ b/l10n-fr/calendar/calendar/calendar-widgets.ftl
@@ -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/.
+
+calendar-deactivated-notification-events = Tous les agendas sont actuellement désactivés. Activez un agenda existant ou ajoutez-en un nouveau pour créer et modifier des évènements.
+calendar-deactivated-notification-tasks = Tous les agendas sont actuellement désactivés. Activez un agenda existant ou ajoutez-en un nouveau pour créer et modifier des tâches.
+calendar-notifications-label = Afficher les notifications pour les évènements à venir
+calendar-add-notification-button =
+ .label = Ajouter une notification
diff --git a/l10n-fr/calendar/calendar/category-dialog.ftl b/l10n-fr/calendar/calendar/category-dialog.ftl
new file mode 100644
index 0000000000..15a47806ed
--- /dev/null
+++ b/l10n-fr/calendar/calendar/category-dialog.ftl
@@ -0,0 +1,7 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+category-name-label = Nom
+category-color-label =
+ .label = Utiliser une couleur
diff --git a/l10n-fr/calendar/calendar/preferences.ftl b/l10n-fr/calendar/calendar/preferences.ftl
new file mode 100644
index 0000000000..c548b48e57
--- /dev/null
+++ b/l10n-fr/calendar/calendar/preferences.ftl
@@ -0,0 +1,192 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+calendar-title = Agenda
+calendar-title-reminder = Rappels
+calendar-title-notification = Notifications
+calendar-title-category = Catégories
+dateformat-label =
+ .value = Format de la date :
+ .accesskey = F
+# $date (String) - the formatted example date
+dateformat-long =
+ .label = Long : { $date }
+# $date (String) - the formatted example date
+dateformat-short =
+ .label = Court : { $date }
+use-system-timezone-radio-button =
+ .label = Utiliser le fuseau horaire du système
+set-timezone-manually-radio-button =
+ .label = Définir manuellement le fuseau horaire
+timezone-label =
+ .value = Fuseau horaire :
+weekstart-label =
+ .value = Premier jour de la semaine :
+ .accesskey = P
+day-1-name =
+ .label = Dimanche
+day-2-name =
+ .label = Lundi
+day-3-name =
+ .label = Mardi
+day-4-name =
+ .label = Mercredi
+day-5-name =
+ .label = Jeudi
+day-6-name =
+ .label = Vendredi
+day-7-name =
+ .label = Samedi
+show-weeknumber-label =
+ .label = Afficher n° de semaine dans les vues et le « Mois réduit »
+ .accesskey = A
+workdays-label =
+ .value = Jours ouvrés :
+day-1-checkbox =
+ .label = Dim
+ .accesskey = D
+day-2-checkbox =
+ .label = Lun
+ .accesskey = L
+day-3-checkbox =
+ .label = Mar
+ .accesskey = M
+day-4-checkbox =
+ .label = Mer
+ .accesskey = e
+day-5-checkbox =
+ .label = Jeu
+ .accesskey = J
+day-6-checkbox =
+ .label = Ven
+ .accesskey = V
+day-7-checkbox =
+ .label = Sam
+ .accesskey = S
+dayweek-legend = Vues quotidienne et hebdomadaire
+visible-hours-label =
+ .value = Afficher :
+ .accesskey = h
+visible-hours-end-label =
+ .value = heures à la fois
+day-start-label =
+ .value = La journée commence à :
+ .accesskey = c
+day-end-label =
+ .value = La journée se termine à :
+ .accesskey = u
+midnight-label =
+ .label = Minuit
+noon-label =
+ .label = Midi
+location-checkbox =
+ .label = Afficher la localisation
+ .accesskey = e
+multiweek-legend = Vue multisemaine
+number-of-weeks-label =
+ .value = Nombre total de semaines par défaut :
+ .accesskey = N
+week-0-label =
+ .label = Aucune
+week-1-label =
+ .label = 1 semaine
+week-2-label =
+ .label = 2 semaines
+week-3-label =
+ .label = 3 semaines
+week-4-label =
+ .label = 4 semaines
+week-5-label =
+ .label = 5 semaines
+week-6-label =
+ .label = 6 semaines
+previous-weeks-label =
+ .value = Nombre de semaines passées :
+ .accesskey = o
+todaypane-legend = Panneau « Aujourd’hui »
+agenda-days =
+ .value = L’agenda indique :
+ .accesskey = a
+event-task-legend = Évènements et tâches
+default-length-label =
+ .value = Durée par défaut des évènements et tâches :
+ .accesskey = u
+task-start-label =
+ .value = Date de début :
+task-start-1-label =
+ .label = Aucune
+task-start-2-label =
+ .label = Début de journée
+task-start-3-label =
+ .label = Fin de journée
+task-start-4-label =
+ .label = Demain
+task-start-5-label =
+ .label = La semaine prochaine
+task-start-6-label =
+ .label = Par rapport à l’heure actuelle
+task-start-7-label =
+ .label = Par rapport au début
+task-start-8-label =
+ .label = Par rapport à l’heure suivante
+task-due-label =
+ .value = Fin prévue :
+edit-intab-label =
+ .label = Modifier les évènements et les tâches dans un onglet plutôt que dans une fenêtre de dialogue.
+ .accesskey = t
+prompt-delete-label =
+ .label = Demander avant de supprimer des évènements et des tâches.
+ .accesskey = D
+accessibility-legend = Accessibilité
+accessibility-colors-label =
+ .label = Optimiser les couleurs pour l’accessibilité
+ .accesskey = O
+reminder-legend = Quand survient une alarme :
+reminder-play-checkbox =
+ .label = Jouer un son
+ .accesskey = J
+reminder-play-alarm-button =
+ .label = Lire
+ .accesskey = L
+reminder-default-sound-label =
+ .label = Utiliser le son par défaut
+ .accesskey = U
+reminder-custom-sound-label =
+ .label = Utiliser le fichier son suivant
+ .accesskey = U
+reminder-browse-sound-label =
+ .label = Parcourir…
+ .accesskey = P
+reminder-dialog-label =
+ .label = Afficher une boîte d’alarme
+ .accesskey = b
+missed-reminder-label =
+ .label = Afficher les rappels manqués pour les agendas modifiables
+ .accesskey = m
+reminder-default-legend = Paramètres d’alarme par défaut
+default-snooze-label =
+ .value = Durée par défaut du report d’alarme :
+ .accesskey = D
+event-alarm-label =
+ .value = Paramètres d’alarme pour les évènements :
+ .accesskey = r
+alarm-on-label =
+ .label = Activée
+alarm-off-label =
+ .label = Désactivée
+task-alarm-label =
+ .value = Paramètres d’alarme pour les tâches :
+ .accesskey = e
+event-alarm-time-label =
+ .value = Temps de déclenchement d’une alarme avant un évènement :
+ .accesskey = T
+task-alarm-time-label =
+ .value = Temps de déclenchement d’une alarme avant une tâche :
+ .accesskey = s
+calendar-notifications-customize-label = Les notifications peuvent être personnalisées pour chaque agenda dans la fenêtre des propriétés de l’agenda.
+category-new-label = Nouvelle catégorie
+category-edit-label = Modifier la catégorie
+category-overwrite-title = Attention : nom en double
+category-overwrite = Une catégorie portant le même nom existe déjà. Voulez-vous la remplacer ?
+category-blank-warning = Vous devez saisir un nom de catégorie.
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-alarms.properties b/l10n-fr/calendar/chrome/calendar/calendar-alarms.properties
new file mode 100644
index 0000000000..9f1f5849b9
--- /dev/null
+++ b/l10n-fr/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=Quand l’évènement débute
+reminderTitleAtStartTask=Quand la tâche débute
+reminderTitleAtEndEvent=Quand l’évènement est terminé
+reminderTitleAtEndTask=Quand la tâche est terminée
+
+# 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=Reporter l’alarme pour %1$S
+
+reminderCustomOriginBeginBeforeEvent=avant le début de l’évènement
+reminderCustomOriginBeginAfterEvent=après le début de l’évènement
+reminderCustomOriginEndBeforeEvent=avant la fin de l’évènement
+reminderCustomOriginEndAfterEvent=après la fin de l’évènement
+reminderCustomOriginBeginBeforeTask=avant le début de la tâche
+reminderCustomOriginBeginAfterTask=après le début de la tâche
+reminderCustomOriginEndBeforeTask=avant la fin de la tâche
+reminderCustomOriginEndAfterTask=après la fin de la tâche
+
+reminderErrorMaxCountReachedEvent=L’agenda sélectionné est limité à #1 rappel par évènement.;L’agenda sélectionné est limité à #1 rappels par évènement.
+reminderErrorMaxCountReachedTask=L’agenda sélectionné est limité à #1 rappel par tâche.;L’agenda sélectionné est limité à #1 rappels par tâche.
+
+# 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=Les rappels pour les agendas en lecture seule ne peuvent pas être mis en attente mais peuvent seulement être rejetés. Le bouton « %1$S » ne fera que répéter les rappels pour les calendriers modifiables.
+# LOCALIZATION NOTE (reminderDisabledSnoozeButtonTooltip)
+# This tooltip is only displayed, if the button is disabled
+reminderDisabledSnoozeButtonTooltip=La mise en attente d’un rappel n’est pas prise en charge pour les agendas en lecture seule
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-event-dialog-attendees.properties b/l10n-fr/calendar/chrome/calendar/calendar-event-dialog-attendees.properties
new file mode 100644
index 0000000000..c9b36d9ea0
--- /dev/null
+++ b/l10n-fr/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 = Participation obligatoire
+event.attendee.role.optional = Participation facultative
+event.attendee.role.nonparticipant = Non participant
+event.attendee.role.chair = Organisateur
+event.attendee.role.unknown = Participant inconnu (%1$S)
+
+event.attendee.usertype.individual = Individu
+event.attendee.usertype.group = Groupe
+event.attendee.usertype.resource = Ressource
+event.attendee.usertype.room = Salle
+event.attendee.usertype.unknown = Type inconnu (%1$S)
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-event-dialog.dtd b/l10n-fr/calendar/chrome/calendar/calendar-event-dialog.dtd
new file mode 100644
index 0000000000..ca8b6cb08d
--- /dev/null
+++ b/l10n-fr/calendar/chrome/calendar/calendar-event-dialog.dtd
@@ -0,0 +1,433 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY event.title.label "Modifier l’élément" >
+
+<!ENTITY event.dialog.keepDurationButton.tooltip "Conserver la durée lors de la modification de la date de fin">
+<!ENTITY event.dialog.keepDurationButton.accesskey "C">
+
+<!ENTITY newevent.from.label "Du" >
+<!ENTITY newevent.to.label "Au" >
+
+<!ENTITY newevent.status.label "Statut" >
+<!ENTITY newevent.status.accesskey "S" >
+<!ENTITY newevent.eventStatus.none.label "Aucun" >
+<!ENTITY newevent.eventStatus.none.accesskey "A" >
+<!ENTITY newevent.todoStatus.none.label "Non spécifié" >
+<!ENTITY newevent.eventStatus.cancelled.label "Annulé" >
+<!ENTITY newevent.eventStatus.cancelled.accesskey "n" >
+<!ENTITY newevent.todoStatus.cancelled.label "Annulé" >
+<!ENTITY newevent.status.tentative.label "Provisoire" >
+<!ENTITY newevent.status.tentative.accesskey "P" >
+<!ENTITY newevent.status.confirmed.label "Confirmé" >
+<!ENTITY newevent.status.confirmed.accesskey "C" >
+<!ENTITY newevent.status.needsaction.label "Une action est requise" >
+<!ENTITY newevent.status.inprogress.label "En cours" >
+<!ENTITY newevent.status.completed.label "Achevé le" >
+
+<!-- The following entity is for New Task dialog only -->
+<!ENTITY newtodo.percentcomplete.label "&#37; d’achèvement">
+
+<!-- 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 "Informer les participants">
+<!ENTITY event.attendees.notify.accesskey "f">
+<!ENTITY event.attendees.notifyundisclosed.label "Invitation séparée pour chaque participant">
+<!ENTITY event.attendees.notifyundisclosed.accesskey "v">
+<!ENTITY event.attendees.notifyundisclosed.tooltip "Cette option envoie un courriel d’invitation à chaque participant. Chaque invitation est adressée à un seul participant afin que les autres participants restent inconnus.">
+<!ENTITY event.attendees.disallowcounter.label "Ne pas permettre les contre-propositions">
+<!ENTITY event.attendees.disallowcounter.accesskey "a">
+<!ENTITY event.attendees.disallowcounter.tooltip "Indique que vous n’accepterez pas les contre-propositions">
+
+<!-- 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 "Nouveau">
+<!ENTITY event.menu.item.new.accesskey "N">
+<!ENTITY event.menu.item.new.event.label "Évènement">
+<!ENTITY event.menu.item.new.event.accesskey "v">
+<!ENTITY event.menu.item.new.task.label "Tâche">
+<!ENTITY event.menu.item.new.task.accesskey "T">
+<!ENTITY event.menu.item.new.message.label "Message">
+<!ENTITY event.menu.item.new.message.accesskey "M">
+<!ENTITY event.menu.item.new.contact.label "Nouveau contact">
+<!ENTITY event.menu.item.new.contact.accesskey "c">
+<!ENTITY event.menu.item.close.label "Fermer">
+<!ENTITY event.menu.item.close.accesskey "F">
+
+<!-- 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 "Enregistrer">
+<!ENTITY event.menu.item.save.accesskey "E">
+<!ENTITY event.menu.item.save.tab.accesskey "n">
+
+<!-- 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 "Enregistrer et fermer">
+<!ENTITY event.menu.item.saveandclose.accesskey "r">
+<!ENTITY event.menu.item.saveandclose.tab.accesskey "f">
+
+<!ENTITY event.menu.item.delete.label "Supprimer…">
+<!ENTITY event.menu.item.delete.accesskey "u">
+<!ENTITY event.menu.item.page.setup.label "Mise en page">
+<!ENTITY event.menu.item.page.setup.accesskey "s">
+<!ENTITY event.menu.item.print.label "Imprimer">
+<!ENTITY event.menu.item.print.accesskey "I">
+
+<!ENTITY event.menu.edit.label "Édition">
+<!ENTITY event.menu.edit.accesskey "n">
+<!ENTITY event.menu.edit.undo.label "Annuler">
+<!ENTITY event.menu.edit.undo.accesskey "u">
+<!ENTITY event.menu.edit.redo.label "Rétablir">
+<!ENTITY event.menu.edit.redo.accesskey "R">
+<!ENTITY event.menu.edit.cut.label "Couper">
+<!ENTITY event.menu.edit.cut.accesskey "C">
+<!ENTITY event.menu.edit.copy.label "Copier">
+<!ENTITY event.menu.edit.copy.accesskey "p">
+<!ENTITY event.menu.edit.paste.label "Coller">
+<!ENTITY event.menu.edit.paste.accesskey "o">
+<!ENTITY event.menu.edit.select.all.label "Tout sélectionner">
+<!ENTITY event.menu.edit.select.all.accesskey "T">
+
+<!ENTITY event.menu.view.label "Affichage">
+<!ENTITY event.menu.view.accesskey "A">
+<!ENTITY event.menu.view.toolbars.label "Barre d’outils">
+<!ENTITY event.menu.view.toolbars.accesskey "t">
+<!ENTITY event.menu.view.toolbars.event.label "Barre d’outils des évènements">
+<!ENTITY event.menu.view.toolbars.event.accesskey "B">
+<!ENTITY event.menu.view.toolbars.customize.label "Personnaliser…">
+<!ENTITY event.menu.view.toolbars.customize.accesskey "P">
+<!ENTITY event.menu.view.showlink.label "Afficher le lien">
+<!ENTITY event.menu.view.showlink.accesskey "c">
+
+<!ENTITY event.menu.options.label "Options">
+<!ENTITY event.menu.options.accesskey "O">
+<!ENTITY event.menu.options.attendees.label "Inviter des participants…">
+<!ENTITY event.menu.options.attendees.accesskey "I">
+<!ENTITY event.menu.options.timezone2.label "Afficher les fuseaux horaires">
+<!ENTITY event.menu.options.timezone2.accesskey "f">
+<!ENTITY event.menu.options.priority2.label "Priorité">
+<!ENTITY event.menu.options.priority2.accesskey "P">
+<!ENTITY event.menu.options.priority.notspecified.label "Non spécifiée">
+<!ENTITY event.menu.options.priority.notspecified.accesskey "s">
+<!ENTITY event.menu.options.priority.low.label "Basse">
+<!ENTITY event.menu.options.priority.low.accesskey "B">
+<!ENTITY event.menu.options.priority.normal.label "Normale">
+<!ENTITY event.menu.options.priority.normal.accesskey "N">
+<!ENTITY event.menu.options.priority.high.label "Haute">
+<!ENTITY event.menu.options.priority.high.accesskey "H">
+<!ENTITY event.menu.options.privacy.label "Confidentialité">
+<!ENTITY event.menu.options.privacy.accesskey "d">
+<!ENTITY event.menu.options.privacy.public.label "Évènement public">
+<!ENTITY event.menu.options.privacy.public.accesskey "m">
+<!ENTITY event.menu.options.privacy.confidential.label "N’afficher que la date et l’heure">
+<!ENTITY event.menu.options.privacy.confidential.accesskey "r">
+<!ENTITY event.menu.options.privacy.private.label "Évènement privé">
+<!ENTITY event.menu.options.privacy.private.accesskey "t">
+<!ENTITY event.menu.options.show.time.label "Disponibilité">
+<!ENTITY event.menu.options.show.time.accesskey "o">
+<!ENTITY event.menu.options.show.time.busy.label "Occupé">
+<!ENTITY event.menu.options.show.time.busy.accesskey "u">
+<!ENTITY event.menu.options.show.time.free.label "Disponible">
+<!ENTITY event.menu.options.show.time.free.accesskey "s">
+
+<!ENTITY event.invite.attendees.label "Inviter des participants…">
+<!ENTITY event.invite.attendees.accesskey "I">
+<!ENTITY event.email.attendees.label "Écrire un courriel à tous les participants…">
+<!ENTITY event.email.attendees.accesskey "R">
+<!ENTITY event.email.tentative.attendees.label "Écrire un courriel aux participants indécis…">
+<!ENTITY event.email.tentative.attendees.accesskey "d">
+<!ENTITY event.remove.attendees.label2 "Retirer tous les participants">
+<!ENTITY event.remove.attendees.accesskey "t">
+<!ENTITY event.remove.attendee.label "Retirer le participant">
+<!ENTITY event.remove.attendee.accesskey "e">
+
+<!-- Toolbar -->
+<!ENTITY event.toolbar.save.label2 "Enregistrer">
+<!ENTITY event.toolbar.saveandclose.label "Enregistrer et fermer">
+<!ENTITY event.toolbar.delete.label "Supprimer">
+<!ENTITY event.toolbar.attendees.label "Inviter des participants">
+<!ENTITY event.toolbar.privacy.label "Confidentialité">
+
+<!ENTITY event.toolbar.save.tooltip2 "Enregistrer">
+<!ENTITY event.toolbar.saveandclose.tooltip "Enregistrer et fermer">
+<!ENTITY event.toolbar.delete.tooltip "Supprimer">
+<!ENTITY event.toolbar.attendees.tooltip "Inviter des participants">
+<!ENTITY event.toolbar.attachments.tooltip "Ajouter des pièces jointes">
+<!ENTITY event.toolbar.privacy.tooltip "Modifier la confidentialité">
+<!ENTITY event.toolbar.priority.tooltip "Modifier la priorité">
+<!ENTITY event.toolbar.status.tooltip "Modifier le statut">
+<!ENTITY event.toolbar.freebusy.tooltip "Modifier la disponibilité (disponible/occupé)">
+
+<!-- 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 "Appliquer la proposition">
+<!ENTITY counter.button.proposal.accesskey "p">
+<!ENTITY counter.button.proposal.tooltip2 "Les champs de l’évènement seront complétés avec les données de la contre-proposition. Enregistrer l’évènement avec ou sans modification supplémentaire notifiera tous les participants.">
+<!ENTITY counter.button.original.label "Appliquer les données originales">
+<!ENTITY counter.button.original.accesskey "r">
+<!ENTITY counter.button.original.tooltip2 "Les champs seront remplis avec les données de l’évènement d’origine, avant que la contre-proposition soit faite">
+
+<!-- Main page -->
+<!ENTITY event.title.textbox.label "Titre :" >
+<!ENTITY event.title.textbox.accesskey "T">
+<!ENTITY event.location.label "Lieu :" >
+<!ENTITY event.location.accesskey "L">
+<!ENTITY event.categories.label "Catégorie :">
+<!ENTITY event.categories.accesskey "C">
+<!ENTITY event.categories.textbox.label "Ajouter une nouvelle catégorie" >
+<!ENTITY event.calendar.label "Agenda :" >
+<!ENTITY event.calendar.accesskey "g">
+<!ENTITY event.attendees.label "Participants :" >
+<!ENTITY event.attendees.accesskey "i">
+<!ENTITY event.alldayevent.label "Évènement sur la journée" >
+<!ENTITY event.alldayevent.accesskey "v">
+<!ENTITY event.from.label "Du :" >
+<!ENTITY event.from.accesskey "D">
+<!ENTITY task.from.label "Début :" >
+<!ENTITY task.from.accesskey "D">
+<!ENTITY event.to.label "Au :" >
+<!ENTITY event.to.accesskey "u">
+<!ENTITY task.to.label "Fin prévue :" >
+<!ENTITY task.to.accesskey "u">
+<!ENTITY task.status.label "Statut :" >
+<!ENTITY task.status.accesskey "S">
+<!ENTITY event.repeat.label "Répétition :" >
+<!ENTITY event.repeat.accesskey "i">
+<!ENTITY event.until.label "Jusqu’à :">
+<!ENTITY event.until.accesskey "q">
+<!ENTITY event.reminder.label "Rappel :" >
+<!ENTITY event.reminder.accesskey "R">
+<!ENTITY event.description.label "Description :" >
+<!ENTITY event.description.accesskey "p">
+<!ENTITY event.attachments.label "Pièces jointes :" >
+<!ENTITY event.attachments.accesskey "P" >
+<!ENTITY event.attachments.menubutton.label "Joindre">
+<!ENTITY event.attachments.menubutton.accesskey "J">
+<!ENTITY event.attachments.url.label "Page web…">
+<!ENTITY event.attachments.url.accesskey "P">
+<!ENTITY event.attachments.popup.remove.label "Supprimer" >
+<!ENTITY event.attachments.popup.remove.accesskey "S" >
+<!ENTITY event.attachments.popup.open.label "Ouvrir" >
+<!ENTITY event.attachments.popup.open.accesskey "O" >
+<!ENTITY event.attachments.popup.removeAll.label "Tout supprimer" >
+<!ENTITY event.attachments.popup.removeAll.accesskey "T" >
+<!ENTITY event.attachments.popup.attachPage.label "Joindre une page web…" >
+<!ENTITY event.attachments.popup.attachPage.accesskey "W" >
+<!ENTITY event.url.label "Lien :" >
+<!ENTITY event.priority2.label "Priorité :">
+
+<!ENTITY event.reminder.none.label "Aucun " >
+<!ENTITY event.reminder.0minutes.before.label "0 minutes avant" >
+<!ENTITY event.reminder.5minutes.before.label "5 minutes avant" >
+<!ENTITY event.reminder.15minutes.before.label "15 minutes avant" >
+<!ENTITY event.reminder.30minutes.before.label "30 minutes avant" >
+<!ENTITY event.reminder.1hour.before.label "1 heure avant" >
+<!ENTITY event.reminder.2hours.before.label "2 heures avant" >
+<!ENTITY event.reminder.12hours.before.label "12 heures avant" >
+<!ENTITY event.reminder.1day.before.label "1 jour avant" >
+<!ENTITY event.reminder.2days.before.label "2 jours avant" >
+<!ENTITY event.reminder.1week.before.label "1 semaine avant" >
+<!ENTITY event.reminder.custom.label "Personnaliser…" >
+
+<!ENTITY event.reminder.multiple.label "Rappels multiples…" >
+
+<!ENTITY event.statusbarpanel.freebusy.label "Disponibilité :">
+<!ENTITY event.statusbarpanel.privacy.label "Confidentialité :">
+
+<!-- Recurrence dialog -->
+<!ENTITY recurrence.title.label "Modifier la répétition">
+
+<!ENTITY event.repeat.does.not.repeat.label "Jamais">
+<!ENTITY event.repeat.daily.label "Quotidienne">
+<!ENTITY event.repeat.weekly.label "Hebdomadaire">
+<!ENTITY event.repeat.every.weekday.label "Chaque jour ouvrable">
+<!ENTITY event.repeat.bi.weekly.label "Toutes les deux semaines">
+<!ENTITY event.repeat.monthly.label "Mensuelle">
+<!ENTITY event.repeat.yearly.label "Annuelle">
+<!ENTITY event.repeat.custom.label "Personnaliser…">
+
+<!ENTITY event.recurrence.pattern.label "Définir la fréquence">
+<!ENTITY event.recurrence.occurs.label "Répétition" >
+<!ENTITY event.recurrence.day.label "quotidienne" >
+<!ENTITY event.recurrence.week.label "hebdomadaire" >
+<!ENTITY event.recurrence.month.label "mensuelle" >
+<!ENTITY event.recurrence.year.label "annuelle" >
+
+<!ENTITY event.recurrence.pattern.every.label "Chaque" >
+<!ENTITY repeat.units.days.both "Jour(s)" >
+<!ENTITY event.recurrence.pattern.every.weekday.label "Chaque jour ouvrable" >
+
+<!ENTITY event.recurrence.pattern.weekly.every.label "Chaque" >
+<!ENTITY repeat.units.weeks.both "Semaine(s)" >
+<!ENTITY event.recurrence.on.label "Le :" >
+
+<!ENTITY event.recurrence.pattern.monthly.every.label "Chaque" >
+<!ENTITY repeat.units.months.both "Mois" >
+<!ENTITY event.recurrence.monthly.every.label "Chaque" >
+<!ENTITY event.recurrence.monthly.first.label "Le premier">
+<!ENTITY event.recurrence.monthly.second.label "Le deuxième">
+<!ENTITY event.recurrence.monthly.third.label "Le troisième">
+<!ENTITY event.recurrence.monthly.fourth.label "Le quatrième">
+<!ENTITY event.recurrence.monthly.fifth.label "Le cinquième">
+<!ENTITY event.recurrence.monthly.last.label "Le dernier">
+<!ENTITY event.recurrence.pattern.monthly.week.1.label "Dimanche" >
+<!ENTITY event.recurrence.pattern.monthly.week.2.label "Lundi" >
+<!ENTITY event.recurrence.pattern.monthly.week.3.label "Mardi" >
+<!ENTITY event.recurrence.pattern.monthly.week.4.label "Mercredi" >
+<!ENTITY event.recurrence.pattern.monthly.week.5.label "Jeudi" >
+<!ENTITY event.recurrence.pattern.monthly.week.6.label "Vendredi" >
+<!ENTITY event.recurrence.pattern.monthly.week.7.label "Samedi" >
+<!ENTITY event.recurrence.repeat.dayofmonth.label "Jour du mois">
+<!ENTITY event.recurrence.repeat.recur.label "Se répète le(s) jour(s)">
+
+<!ENTITY event.recurrence.every.label "Chaque :" >
+<!ENTITY repeat.units.years.both "Année(s)" >
+<!ENTITY event.recurrence.pattern.yearly.every.month.label "Chaque" >
+
+<!-- LOCALIZATON NOTE
+ Some languages use a preposition when describing dates:
+ Portuguese: 6 de Setembro
+ English: 6 [of] September
+ event.recurrence.pattern.yearly.of.label is "of" in
+ Edit recurrence window -> Recurrence pattern -> Repeat yearly
+-->
+<!ENTITY event.recurrence.pattern.yearly.of.label "" >
+
+<!ENTITY event.recurrence.pattern.yearly.month.1.label "Janvier" >
+<!ENTITY event.recurrence.pattern.yearly.month.2.label "Février" >
+<!ENTITY event.recurrence.pattern.yearly.month.3.label "Mars" >
+<!ENTITY event.recurrence.pattern.yearly.month.4.label "Avril" >
+<!ENTITY event.recurrence.pattern.yearly.month.5.label "Mai" >
+<!ENTITY event.recurrence.pattern.yearly.month.6.label "Juin" >
+<!ENTITY event.recurrence.pattern.yearly.month.7.label "Juillet" >
+<!ENTITY event.recurrence.pattern.yearly.month.8.label "Août" >
+<!ENTITY event.recurrence.pattern.yearly.month.9.label "Septembre" >
+<!ENTITY event.recurrence.pattern.yearly.month.10.label "Octobre" >
+<!ENTITY event.recurrence.pattern.yearly.month.11.label "Novembre" >
+<!ENTITY event.recurrence.pattern.yearly.month.12.label "Décembre" >
+<!ENTITY event.recurrence.yearly.every.label "Chaque">
+<!ENTITY event.recurrence.yearly.first.label "Le premier">
+<!ENTITY event.recurrence.yearly.second.label "Le deuxième">
+<!ENTITY event.recurrence.yearly.third.label "Le troisième">
+<!ENTITY event.recurrence.yearly.fourth.label "Le quatrième">
+<!ENTITY event.recurrence.yearly.fifth.label "Le cinquième">
+<!ENTITY event.recurrence.yearly.last.label "Le dernier">
+<!ENTITY event.recurrence.pattern.yearly.week.1.label "Dimanche" >
+<!ENTITY event.recurrence.pattern.yearly.week.2.label "Lundi" >
+<!ENTITY event.recurrence.pattern.yearly.week.3.label "Mardi" >
+<!ENTITY event.recurrence.pattern.yearly.week.4.label "Mercredi" >
+<!ENTITY event.recurrence.pattern.yearly.week.5.label "Jeudi" >
+<!ENTITY event.recurrence.pattern.yearly.week.6.label "Vendredi" >
+<!ENTITY event.recurrence.pattern.yearly.week.7.label "Samedi" >
+<!ENTITY event.recurrence.pattern.yearly.day.label "jour" >
+<!ENTITY event.recurrence.of.label "de" >
+<!ENTITY event.recurrence.pattern.yearly.month2.1.label "Janvier" >
+<!ENTITY event.recurrence.pattern.yearly.month2.2.label "Février" >
+<!ENTITY event.recurrence.pattern.yearly.month2.3.label "Mars" >
+<!ENTITY event.recurrence.pattern.yearly.month2.4.label "Avril" >
+<!ENTITY event.recurrence.pattern.yearly.month2.5.label "Mai" >
+<!ENTITY event.recurrence.pattern.yearly.month2.6.label "Juin" >
+<!ENTITY event.recurrence.pattern.yearly.month2.7.label "Juillet" >
+<!ENTITY event.recurrence.pattern.yearly.month2.8.label "Août" >
+<!ENTITY event.recurrence.pattern.yearly.month2.9.label "Septembre" >
+<!ENTITY event.recurrence.pattern.yearly.month2.10.label "Octobre" >
+<!ENTITY event.recurrence.pattern.yearly.month2.11.label "Novembre" >
+<!ENTITY event.recurrence.pattern.yearly.month2.12.label "Décembre" >
+
+<!ENTITY event.recurrence.range.label "Fenêtre de répétition">
+<!ENTITY event.recurrence.forever.label "Pas de date de fin" >
+<!ENTITY event.recurrence.repeat.for.label "Créer" >
+<!ENTITY event.recurrence.appointments.label "Rendez-vous" >
+<!ENTITY event.repeat.until.label "Répéter jusqu’à" >
+<!ENTITY event.recurrence.preview.label "Aperçu">
+
+<!-- Attendees dialog -->
+<!ENTITY invite.title.label "Inviter des participants">
+<!ENTITY event.organizer.label "Organisateur">
+<!ENTITY event.freebusy.suggest.slot "Suggérer un créneau horaire :">
+<!ENTITY event.freebusy.button.next.slot "Créneau horaire suivant">
+<!ENTITY event.freebusy.button.previous.slot "Créneau horaire précédent">
+<!ENTITY event.freebusy.zoom "Zoom :">
+<!ENTITY event.freebusy.legend.free "Disponible" >
+<!ENTITY event.freebusy.legend.busy "Occupé" >
+<!ENTITY event.freebusy.legend.busy_tentative "Provisoire" >
+<!ENTITY event.freebusy.legend.busy_unavailable "Absent" >
+<!ENTITY event.freebusy.legend.unknown "Pas d’information" >
+<!ENTITY event.attendee.role.required "Participation obligatoire">
+<!ENTITY event.attendee.role.optional "Participation facultative">
+<!ENTITY event.attendee.role.chair "Organisateur">
+<!ENTITY event.attendee.role.nonparticipant "Non participant">
+<!ENTITY event.attendee.usertype.individual "Individu">
+<!ENTITY event.attendee.usertype.group "Groupe">
+<!ENTITY event.attendee.usertype.resource "Ressource">
+<!ENTITY event.attendee.usertype.room "Salle">
+<!ENTITY event.attendee.usertype.unknown "Type inconnu">
+
+<!-- Timezone dialog -->
+<!ENTITY timezone.title.label "Veuillez indiquer le fuseau horaire">
+<!ENTITY event.timezone.custom.label "Plus de fuseaux horaires…">
+
+<!-- Read-Only dialog -->
+<!ENTITY read.only.general.label "Général">
+<!ENTITY read.only.title.label "Titre :">
+<!ENTITY read.only.calendar.label "Agenda :">
+<!ENTITY read.only.event.start.label "Date de début :">
+<!ENTITY read.only.task.start.label "Date de début :">
+<!ENTITY read.only.event.end.label "Date de fin :">
+<!ENTITY read.only.task.due.label "Fin prévue :">
+<!ENTITY read.only.repeat.label "Répétition :">
+<!ENTITY read.only.location.label "Lieu :">
+<!ENTITY read.only.category.label "Catégorie :">
+<!ENTITY read.only.organizer.label "Organisateur :">
+<!ENTITY read.only.reply.label "Réponse :">
+<!ENTITY read.only.accept.label "Je participerai">
+<!ENTITY read.only.decline.label "Je ne participerai pas">
+<!ENTITY read.only.tentative.label "Je participerai peut-être">
+<!ENTITY read.only.needs.action.label "Je confirmerai plus tard">
+<!ENTITY read.only.reminder.label "Rappel :">
+<!ENTITY read.only.attachments.label "Pièces jointes :">
+<!ENTITY read.only.attendees.label "Participants">
+<!ENTITY read.only.description.label "Description">
+<!ENTITY read.only.link.label "Lien">
+
+<!-- Summary dialog -->
+<!ENTITY summary.dialog.saveclose.label "Enregistrer et fermer">
+<!ENTITY summary.dialog.saveclose.tooltiptext "Enregistrer les modifications et fermer la fenêtre sans changer le statut de participation et sans envoyer de réponse">
+<!ENTITY summary.dialog.accept.label "Accepter">
+<!ENTITY summary.dialog.accept.tooltiptext "Accepter l’invitation">
+<!ENTITY summary.dialog.tentative.label "Accepter provisoirement">
+<!ENTITY summary.dialog.tentative.tooltiptext "Accepter provisoirement l’invitation">
+<!ENTITY summary.dialog.decline.label "Refuser">
+<!ENTITY summary.dialog.decline.tooltiptext "Refuser l’invitation">
+<!ENTITY summary.dialog.dontsend.label "Ne pas envoyer de réponse">
+<!ENTITY summary.dialog.dontsend.tooltiptext "Changer votre statut de participation sans envoyer de réponse à l’organisateur et fermer la fenêtre">
+<!ENTITY summary.dialog.send.label "Envoyer une réponse immédiatement">
+<!ENTITY summary.dialog.send.tooltiptext "Envoyer une réponse à l’organisateur et fermer la fenêtre">
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-event-dialog.properties b/l10n-fr/calendar/chrome/calendar/calendar-event-dialog.properties
new file mode 100644
index 0000000000..bb8407b272
--- /dev/null
+++ b/l10n-fr/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=tous les jours;tous les #1 jours
+repeatDetailsRuleDaily4=chaque jour ouvré
+
+# 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=chaque %1$S;toutes les #2 semaines le %1$S
+weeklyNthOnNounclass2=chaque %1$S;toutes les #2 semaines le %1$S
+
+# LOCALIZATION NOTE (weeklyEveryNth):
+# Edit recurrence window -> Recurrence pattern -> Weekly repeat rules
+# #1 - interval
+# e.g. "every 5 weeks"
+weeklyEveryNth=chaque semaine;toutes les #1 semaines
+
+# 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=dimanche
+repeatDetailsDay1Nounclass=nounclass1
+repeatDetailsDay2=lundi
+repeatDetailsDay2Nounclass=nounclass1
+repeatDetailsDay3=mardi
+repeatDetailsDay3Nounclass=nounclass1
+repeatDetailsDay4=mercredi
+repeatDetailsDay4Nounclass=nounclass1
+repeatDetailsDay5=jeudi
+repeatDetailsDay5Nounclass=nounclass1
+repeatDetailsDay6=vendredi
+repeatDetailsDay6Nounclass=nounclass1
+repeatDetailsDay7=samedi
+repeatDetailsDay7Nounclass=nounclass1
+
+# LOCALIZATION NOTE (repeatDetailsAnd)
+# Used to show a number of weekdays in a list
+# i.e. "Sunday, Monday, Tuesday " + and + " Wednesday"
+repeatDetailsAnd=et
+
+# 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=le %1$S de chaque mois;tous les #2 mois le %1$S
+monthlyRuleNthOfEveryNounclass2=le %1$S de chaque mois;tous les #2 mois le %1$S
+
+# 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=tous les mois chaque %1$S;chaque %1$S d’un mois sur #2
+monthlyEveryOfEveryNounclass2=tous les mois chaque %1$S;chaque %1$S d’un mois sur #2
+
+# 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=le %1$S;les %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 chaque mois;%1$S un mois sur #2
+
+# 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=le dernier jour du mois;tous les #1 mois le dernier jour du mois
+
+# 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=tous les jours chaque mois;tous les jours tous les #2 mois
+
+# 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=le premier
+repeatOrdinal2Nounclass1=le deuxième
+repeatOrdinal3Nounclass1=le troisième
+repeatOrdinal4Nounclass1=le quatrième
+repeatOrdinal5Nounclass1=le cinquième
+repeatOrdinal-1Nounclass1=le dernier
+repeatOrdinal1Nounclass2=le premier
+repeatOrdinal2Nounclass2=le deuxième
+repeatOrdinal3Nounclass2=le troisième
+repeatOrdinal4Nounclass2=le quatrième
+repeatOrdinal5Nounclass2=le cinquième
+repeatOrdinal-1Nounclass2=le dernier
+
+# 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=chaque année le %2$S %1$S;tous les #3 ans le %2$S %1$S
+
+# LOCALIZATION NOTE (yearlyNthOnNthOfNounclass...):
+# Edit recurrence window -> Recurrence pattern -> Yearly repeat rules
+# Translate these strings according to noun class/gender of weekday (%2$S)
+# set in 'repeadDetailsDay...Nounclass' strings.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add others strings with suffix 3, 4,... for others noun classes if your
+# language need them. In this case, corresponding strings must be added for
+# others rule strings with 'Nounclass...' suffix and corresponding values
+# "nounclass..." must be written in 'repeatDetailsDayxNounclass' strings.
+# %1$S - ordinal with article and noun class/gender corresponding to weekday
+# %2$S - weekday
+# %3$S - month
+# #4 - yearly interval
+# e.g. "the second Monday of every March"
+# e.g "every 3 years the second Monday of March"
+yearlyNthOnNthOfNounclass1=le %1$S %2$S du mois de %3$S;tous les #4 ans le %1$S %2$S du mois de %3$S
+yearlyNthOnNthOfNounclass2=le %1$S %2$S du mois de %3$S;tous les #4 ans le %1$S %2$S du mois de %3$S
+
+# LOCALIZATION NOTE (yearlyOnEveryNthOfNthNounclass...):
+# Edit recurrence window -> Recurrence pattern -> Yearly repeat rules
+# Translate these strings according to noun class/gender of weekday (%1$S)
+# set in 'repeadDetailsDay...Nounclass' strings.
+# Nounclass1 <-> Masculine gender; Nounclass2 <-> Feminine gender.
+# Add others strings with suffix 3, 4,... for others noun classes if your
+# language need them. In this case, corresponding strings must be added for
+# others rule strings with 'Nounclass...' suffix and corresponding values
+# "nounclass..." must be written in 'repeatDetailsDayxNounclass' strings.
+# %1$S - weekday
+# %2$S - month
+# #3 - yearly interval
+# e.g. "every Thursday of March"
+# e.g "every 3 years on every Thursday of March"
+yearlyOnEveryNthOfNthNounclass1=chaque %1$S de %2$S;tous les #3 ans chaque %1$S de %2$S
+yearlyOnEveryNthOfNthNounclass2=chaque %1$S de %2$S;tous les #3 ans chaque %1$S de %2$S
+
+#LOCALIZATION NOTE (yearlyEveryDayOf):
+# Edit recurrence window -> Recurrence pattern -> Yearly repeat rules
+# This string describes part of a yearly rule which includes every day of a month.
+# %1$S - month
+# #2 - yearly interval
+# e.g. "every day of December"
+# e.g. "every 3 years every day of December"
+yearlyEveryDayOf=tous les jours de %1$S;tous les #2 ans, tous les jours de %1$S
+
+repeatDetailsMonth1=janvier
+repeatDetailsMonth2=février
+repeatDetailsMonth3=mars
+repeatDetailsMonth4=avril
+repeatDetailsMonth5=mai
+repeatDetailsMonth6=juin
+repeatDetailsMonth7=juillet
+repeatDetailsMonth8=août
+repeatDetailsMonth9=septembre
+repeatDetailsMonth10=octobre
+repeatDetailsMonth11=novembre
+repeatDetailsMonth12=décembre
+
+# 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=A lieu %1$S\nà partir du %2$S et #5 fois de suite\nde %3$S à %4$S.;A lieu %1$S\nà partir du %2$S et #5 fois de suite\nde %3$S à %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=A lieu %1$S\nà partir du %2$S et #3 fois.;A lieu %1$S\nà partir du %2$S et #3 fois.
+
+# 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=A lieu %1$S\nà partir du %2$S jusqu’au %3$S\nde %4$S à %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=A lieu %1$S\nà partir du %2$S jusqu’au %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=A lieu %1$S\nà partir du %2$S\nde %3$S à %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=A lieu %1$S\n à partir du %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=le dernier jour
+
+# 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=Cliquez pour plus de détails
+
+# 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=Détails de répétition inconnus
+
+# differences between the dialog for an Event or a Task
+newEvent=Nouvel évènement
+newTask=Nouvelle tâche
+itemMenuLabelEvent=Évènement
+itemMenuAccesskeyEvent2=v
+itemMenuLabelTask=Tâche
+itemMenuAccesskeyTask2=T
+
+emailSubjectReply=Re : %1$S
+
+# Link Location Dialog
+specifyLinkLocation=Veuillez spécifier l’adresse du lien
+enterLinkLocation=Saisissez l’adresse d’une page web ou d’un document
+
+summaryDueTaskLabel=Fin :
+
+# Attach File Dialog
+attachViaFilelink=Joindre à l’aide de %1$S
+selectAFile=Veuillez sélectionner le(s) fichier(s) à joindre
+removeCalendarsTitle=Supprimer les pièces jointes
+
+# LOCALIZATION NOTE (removeAttachmentsText): Semi-colon list of plural forms for
+# prompting attachment removal.
+# See http://developer.mozilla.org/en/Localization_and_Plurals
+removeAttachmentsText=Voulez-vous vraiment supprimer la pièce jointe ?;Voulez-vous vraiment supprimer #1 pièces jointes ?
+
+# 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=dimanches
+repeatDetailsDay2Plural=lundis
+repeatDetailsDay3Plural=mardis
+repeatDetailsDay4Plural=mercredis
+repeatDetailsDay5Plural=jeudis
+repeatDetailsDay6Plural=vendredis
+repeatDetailsDay7Plural=samedis
+
+# 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=Tout le temps
+
+# 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=Dernier jour
+
+# 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 a accepté l’invitation, mais a fait une contre-proposition :
+
+# 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 a décliné l’invitation, mais a fait une contre-proposition :
+
+# 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 a délégué l’invitation, mais a fait une contre-proposition :
+
+# 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 n’a pas pris de décision sur sa participation et a fait une contre-proposition :
+
+# 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 a confirmé sa participation de façon provisoire et a fait une contre-proposition :
+
+# LOCALIZATION NOTE (counterOnPreviousVersionNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnPreviousVersionNotification=Cette contre-proposition concerne une version précédente de l’évènement.
+
+# LOCALIZATION NOTE (counterOnCounterDisallowedNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnCounterDisallowedNotification=Vous n’avez pas autorisé les contre-propositions lors de l’envoi de l’invitation.
+
+# LOCALIZATION NOTE (eventAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation
+eventAccepted=Vous avez accepté cette invitation
+
+# LOCALIZATION NOTE (eventTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation tentatively
+eventTentative=Vous avez provisoirement accepté cette invitation
+
+# LOCALIZATION NOTE (eventDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the event invitation
+eventDeclined=Vous avez décliné cette invitation
+
+# 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=Vous avez délégué cette invitation
+
+# LOCALIZATION NOTE (eventNeedsAction) - this will be displayed as notification
+# in the summary dialog if the user hasn't yet responded to an invitation
+eventNeedsAction=Vous n’avez pas encore répondu à cette invitation
+
+# LOCALIZATION NOTE (taskAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the assigned task
+taskAccepted=Vous avez accepté de travailler sur cette tâche
+
+# LOCALIZATION NOTE (taskTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted tentatively the assigned task
+taskTentative=Vous avez provisoirement accepté de travailler sur cette tâche
+
+# LOCALIZATION NOTE (taskDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the assigned task
+taskDeclined=Vous avez refusé de travailler sur cette tâche
+
+# 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=Vous avez délégué le travail de cette tâche
+
+# 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=Vous n’avez pas encore répondu à cette attribution de tâche
+
+# LOCALIZATION NOTE (taskInProgress) - this will be displayed as notification
+# in the summary dialog if the user is working on an assigned task
+taskInProgress=Vous avez commencé à travailler sur cette tâche qui vous est attribuée
+
+# 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=Vous avez fini de travailler sur cette tâche
+
+# 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=Envoyer et fermer
+
+# 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=Informer les participants et fermer
+
+# 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=Enregistrer et envoyer
+
+# 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=Enregistrer et informer les participants
+
+# 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=Enregistrer et envoyer
+
+# 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=Envoyer et fermer
+
+# 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=Participants (%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=Pièces jointes (%1$S) :
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-extract.properties b/l10n-fr/calendar/chrome/calendar/calendar-extract.properties
new file mode 100644
index 0000000000..76ec232faa
--- /dev/null
+++ b/l10n-fr/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 | du | entre le
+
+# LOCALIZATION NOTE (start.suffix):
+# datetimes followed by these are extracted as start times
+start.suffix = au | jusqu'au | à | - | jusqu'à | jusque | et le | et
+
+# LOCALIZATION NOTE (end.prefix):
+# datetimes with these in front are extracted as end times
+end.prefix = au | jusqu'au | à | - | jusqu'à | jusque | et le | et | pour le | pour | se termine le
+
+# 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 = envoyé le | envoyée le | courriel du | courrier du | message du | envoi du | au lieu du | > | malheureusement le | en | pas le
+
+# LOCALIZATION NOTE (no.datetime.suffix):
+# datetimes followed by these won't be used
+no.datetime.suffix = de la semaine dernière | : | > | % | euros |eur | usd | dollars
+
+# LOCALIZATION NOTE (from.*):
+# can be a list of values, separate variants by |
+
+# LOCALIZATION NOTE (from.today):
+# must not be empty!
+from.today = aujourd'hui
+
+from.tomorrow = demain
+# 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
+
+# LOCALIZATION NOTE (until.ordinal.date):
+# #1 = matches numbers 1-31 and number.x
+until.ordinal.date =
+
+from.noon = midi
+until.noon =
+
+# LOCALIZATION NOTE (from.hour):
+# #1 = matches numbers 0-23 and number.0-number.23
+# should not have "#1" as this would match any single number in email to a time
+from.hour = à #1 | vers #1 | #1 - | #1 à | de #1
+
+# 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 | à #1 | jusque #1
+
+# LOCALIZATION NOTE (from.hour.am):
+# #1 = matches numbers 0-23 and number.0-number.23
+from.hour.am = #1 du matin
+
+# 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 de l'après-midi
+
+# 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 = une demi-heure avant #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 et demie
+
+# 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
+
+# LOCALIZATION NOTE (until.hour.minutes):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+until.hour.minutes =
+
+# LOCALIZATION NOTE (from.hour.minutes.am):
+# #1 = matches numbers 0-23
+# #2 = matches numbers 0-59
+from.hour.minutes.am = #1:#2 du matin
+
+# 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 de l'après-midi | #1:#2 du soir
+
+# 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 | #1er #2
+
+# LOCALIZATION NOTE (until.monthname.day):
+# #1 = matches numbers 1-31
+# #2 = matches monthname
+until.monthname.day =
+
+# LOCALIZATION NOTE (from.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+from.month.day = #1/#2
+
+# LOCALIZATION NOTE (until.month.day):
+# #1 = matches numbers 1-31 and number.x
+# #2 = matches numbers 1-12
+until.month.day =
+
+# LOCALIZATION NOTE (from.year.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+# #3 = matches 2/4 numbers
+from.year.month.day = #1/#2/#3 | #3-#2-#1
+
+# LOCALIZATION NOTE (until.year.month.day):
+# #1 = matches numbers 1-31
+# #2 = matches numbers 1-12
+# #3 = matches 2/4 numbers
+until.year.month.day =
+
+# LOCALIZATION NOTE (from.year.monthname.day):
+# #1 = matches numbers 1-31
+# #2 = matches monthname
+# #3 = matches 2/4 numbers
+from.year.monthname.day = #1 #2 #3 | #1er #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 minutes | #1 min | #1 mins
+
+# LOCALIZATION NOTE (duration.hours):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.hours = #1 heures | #1 hrs
+
+# LOCALIZATION NOTE (duration.days):
+# #1 = matches 1/2 numbers and number.0 - and number.31
+duration.days = #1 jours
+
+# LOCALIZATION NOTE (month.*):
+# can be a list of values, separate variants by |
+month.1 = janvier | jan | jan.
+month.2 = février | fév | fév.
+month.3 = mars | mar | mar.
+month.4 = avril | avr | avr.
+month.5 = mai
+month.6 = juin | jun | jun.
+month.7 = juilet | jul | jul. | juil | juil.
+month.8 = août | aout | aou | aou.
+month.9 = septembre | sep | sep. | sept.
+month.10 = octobre | oct | oct.
+month.11 = novembre | nov | nov.
+month.12 = décembre | dec | dec. | déc | déc.
+
+# 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 = dimanche | dimanches
+from.weekday.1 = lundi | lundis
+from.weekday.2 = mardi | mardis
+from.weekday.3 = mercredi | mercredis
+from.weekday.4 = jeudi | jeudis
+from.weekday.5 = vendredi | vendredis
+from.weekday.6 = samedi | samedis
+
+# 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 = zéro
+number.1 = un | premier
+number.2 = deux
+number.3 = trois
+number.4 = quatre
+number.5 = cinq
+number.6 = six
+number.7 = sept
+number.8 = huit
+number.9 = neuf
+number.10 = dix
+number.11 = onze
+number.12 = douze
+number.13 = treize
+number.14 = quatorze
+number.15 = quinze
+number.16 = seize
+number.17 = dix-sept
+number.18 = dix-huit
+number.19 = dix-neuf
+number.20 = vingt
+number.21 = vingt-et-un
+number.22 = vingt-deux
+number.23 = vingt-trois
+number.24 = vingt-quatre
+number.25 = vingt-cinq
+number.26 = vingt-six
+number.27 = vingt-sept
+number.28 = vingt-huit
+number.29 = vingt-neuf
+number.30 = trente
+number.31 = trente-et-un
+
+# LOCALIZATION NOTE (alphabet):
+# list all lower and uppercase letters if your language has an alphabet
+# otherwise leave it empty
+alphabet = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-invitations-dialog.dtd b/l10n-fr/calendar/chrome/calendar/calendar-invitations-dialog.dtd
new file mode 100644
index 0000000000..02c1b60141
--- /dev/null
+++ b/l10n-fr/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 "Invitations">
+<!ENTITY calendar.invitations.dialog.statusmessage.updating.text "Mise à jour de la liste des invitations.">
+<!ENTITY calendar.invitations.dialog.statusmessage.noinvitations.text "Aucune invitation non confirmée n’a été trouvée.">
+
+<!-- Calendar Invitations List -->
+<!ENTITY calendar.invitations.list.accept.button.label "Accepter">
+<!ENTITY calendar.invitations.list.decline.button.label "Refuser">
+<!ENTITY calendar.invitations.list.recurrentevent.text "Évènement répétitif">
+<!ENTITY calendar.invitations.list.alldayevent.text "Évènement sur toute la journée">
+<!ENTITY calendar.invitations.list.location.text "Lieu : ">
+<!ENTITY calendar.invitations.list.organizer.text "Organisateur : ">
+<!ENTITY calendar.invitations.list.attendee.text "Participant : ">
+<!ENTITY calendar.invitations.list.none.text "Aucune">
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-invitations-dialog.properties b/l10n-fr/calendar/chrome/calendar/calendar-invitations-dialog.properties
new file mode 100644
index 0000000000..82ab252a8a
--- /dev/null
+++ b/l10n-fr/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=Évènement sur toute la journée
+recurrent-event=Évènement récurrent
+location=Lieu : %S
+organizer=Organisateur ou organisatrice : %S
+attendee=Participant ou participante : %S
+none=Aucun
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-occurrence-prompt.dtd b/l10n-fr/calendar/chrome/calendar/calendar-occurrence-prompt.dtd
new file mode 100644
index 0000000000..88a135595c
--- /dev/null
+++ b/l10n-fr/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 "e">
+<!ENTITY buttons.parent.accesskey "s">
diff --git a/l10n-fr/calendar/chrome/calendar/calendar-occurrence-prompt.properties b/l10n-fr/calendar/chrome/calendar/calendar-occurrence-prompt.properties
new file mode 100644
index 0000000000..b70d9ee041
--- /dev/null
+++ b/l10n-fr/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=est un évènement récurrent
+header.isrepeating.task.label=est une tâche récurrente
+header.containsrepeating.event.label=contient des évènements récurrents
+header.containsrepeating.task.label=contient des tâches récurrentes
+header.containsrepeating.mixed.label=contient des éléments récurrents de différents types
+
+windowtitle.event.copy=Copier l’évènement récurrent
+windowtitle.task.copy=Copier la tâche récurrente
+windowtitle.mixed.copy=Copier les éléments récurrents
+windowtitle.event.cut=Couper l’évènement récurrent
+windowtitle.task.cut=Couper la tâche récurrente
+windowtitle.mixed.cut=Couper les éléments récurrents
+windowtitle.event.delete=Supprimer l’évènement récurrent
+windowtitle.task.delete=Supprimer la tâche récurrente
+windowtitle.mixed.delete=Supprimer les éléments récurrents
+windowtitle.event.edit=Modifier l’évènement récurrent
+windowtitle.task.edit=Modifier la tâche récurrente
+windowtitle.mixed.edit=Modifier les éléments récurrents
+windowtitle.multipleitems=Éléments sélectionnés
+
+buttons.single.occurrence.copy.label=Copier uniquement cette occurrence
+buttons.single.occurrence.cut.label=Couper uniquement cette occurrence
+buttons.single.occurrence.delete.label=Supprimer uniquement cette occurrence
+buttons.single.occurrence.edit.label=Modifier uniquement cette occurrence
+
+buttons.multiple.occurrence.copy.label=Copier uniquement les occurrences sélectionnées
+buttons.multiple.occurrence.cut.label=Couper uniquement les occurrences sélectionnées
+buttons.multiple.occurrence.delete.label=Supprimer uniquement les occurrences sélectionnées
+buttons.multiple.occurrence.edit.label=Modifier uniquement les occurrences sélectionnées
+
+buttons.single.allfollowing.copy.label=Copier cette occurrence et les suivantes
+buttons.single.allfollowing.cut.label=Couper cette occurrence et les suivantes
+buttons.single.allfollowing.delete.label=Supprimer cette occurrence et les suivantes
+buttons.single.allfollowing.edit.label=Modifier cette occurrence et les suivantes
+
+buttons.multiple.allfollowing.copy.label=Copier l’occurrence sélectionnée et les suivantes
+buttons.multiple.allfollowing.cut.label=Couper l’occurrence sélectionnée et les suivantes
+buttons.multiple.allfollowing.delete.label=Supprimer l’occurrence sélectionnée et les suivantes
+buttons.multiple.allfollowing.edit.label=Modifier l’occurrence sélectionnée et les suivantes
+
+buttons.single.parent.copy.label=Copier toutes les occurrences
+buttons.single.parent.cut.label=Couper toutes les occurrences
+buttons.single.parent.delete.label=Supprimer toutes les occurrences
+buttons.single.parent.edit.label=Modifier toutes les occurrences
+
+buttons.multiple.parent.copy.label=Copier l’ensemble des occurrences pour les éléments sélectionnés
+buttons.multiple.parent.cut.label=Couper l’ensemble des occurrences pour les éléments sélectionnés
+buttons.multiple.parent.delete.label=Supprimer l’ensemble des occurrences pour les éléments sélectionnés
+buttons.multiple.parent.edit.label=Modifier l’ensemble des occurrences pour les éléments sélectionnés
diff --git a/l10n-fr/calendar/chrome/calendar/calendar.dtd b/l10n-fr/calendar/chrome/calendar/calendar.dtd
new file mode 100644
index 0000000000..7034b7146e
--- /dev/null
+++ b/l10n-fr/calendar/chrome/calendar/calendar.dtd
@@ -0,0 +1,388 @@
+<!-- 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 "Agendas">
+<!ENTITY calendar.calendar.accesskey "A">
+
+<!ENTITY calendar.newevent.button.tooltip "Créer un nouvel évènement" >
+<!ENTITY calendar.newtask.button.tooltip "Créer une nouvelle tâche" >
+
+<!ENTITY calendar.unifinder.showcompletedtodos.label "Afficher les tâches accomplies">
+
+<!ENTITY calendar.today.button.label "Aujourd’hui">
+<!ENTITY calendar.tomorrow.button.label "Demain">
+<!ENTITY calendar.upcoming.button.label "Prochainement">
+
+<!ENTITY calendar.events.filter.all.label "Tous les évènements">
+<!ENTITY calendar.events.filter.today.label "Évènements du jour">
+<!ENTITY calendar.events.filter.future.label "Tous les évènements futurs">
+<!ENTITY calendar.events.filter.current.label "Jour courant">
+<!ENTITY calendar.events.filter.currentview.label "Évènements dans la vue courante">
+<!ENTITY calendar.events.filter.next7Days.label "Évènements des 7 prochains jours">
+<!ENTITY calendar.events.filter.next14Days.label "Évènements des 14 prochains jours">
+<!ENTITY calendar.events.filter.next31Days.label "Évènements des 31 prochains jours">
+<!ENTITY calendar.events.filter.thisCalendarMonth.label "Évènements du mois en cours">
+
+<!-- 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 "Terminé">
+<!ENTITY calendar.unifinder.tree.done.tooltip2 "Trier par échéance">
+<!ENTITY calendar.unifinder.tree.priority.label "Priorité">
+<!ENTITY calendar.unifinder.tree.priority.tooltip2 "Trier par priorité">
+<!ENTITY calendar.unifinder.tree.title.label "Titre">
+<!ENTITY calendar.unifinder.tree.title.tooltip2 "Trier par titre">
+<!ENTITY calendar.unifinder.tree.percentcomplete.label "Progression">
+<!ENTITY calendar.unifinder.tree.percentcomplete.tooltip2 "Trier par progression">
+<!ENTITY calendar.unifinder.tree.startdate.label "Début">
+<!ENTITY calendar.unifinder.tree.startdate.tooltip2 "Trier par date de début">
+<!ENTITY calendar.unifinder.tree.enddate.label "Fin">
+<!ENTITY calendar.unifinder.tree.enddate.tooltip2 "Trier par date de fin">
+<!ENTITY calendar.unifinder.tree.duedate.label "Prévu">
+<!ENTITY calendar.unifinder.tree.duedate.tooltip2 "Trier par date de fin prévue">
+<!ENTITY calendar.unifinder.tree.completeddate.label "Achevé">
+<!ENTITY calendar.unifinder.tree.completeddate.tooltip2 "Trier par achèvement">
+<!ENTITY calendar.unifinder.tree.categories.label "Catégorie">
+<!ENTITY calendar.unifinder.tree.categories.tooltip2 "Trier par catégorie">
+<!ENTITY calendar.unifinder.tree.location.label "Lieu">
+<!ENTITY calendar.unifinder.tree.location.tooltip2 "Trier par lieu">
+<!ENTITY calendar.unifinder.tree.status.label "État">
+<!ENTITY calendar.unifinder.tree.status.tooltip2 "Trier par état">
+<!ENTITY calendar.unifinder.tree.calendarname.label "Nom de l’agenda">
+<!ENTITY calendar.unifinder.tree.calendarname.tooltip2 "Trier par nom de l’agenda">
+<!ENTITY calendar.unifinder.tree.duration.label "Terminé dans">
+<!ENTITY calendar.unifinder.tree.duration.tooltip2 "Trier par temps restant">
+<!ENTITY calendar.unifinder.close.tooltip "Fermer la liste de recherche d’évènements et la liste des évènements">
+
+<!ENTITY calendar.today.button.tooltip "Revenir à la date d’aujourd’hui" >
+<!ENTITY calendar.todaypane.button.tooltip "Afficher le panneau Aujourd’hui" >
+
+<!ENTITY calendar.day.button.tooltip "Afficher la journée" >
+<!ENTITY calendar.week.button.tooltip "Afficher la semaine" >
+<!ENTITY calendar.month.button.tooltip "Afficher le mois" >
+<!ENTITY calendar.multiweek.button.tooltip "Afficher plusieurs semaines" >
+
+<!ENTITY calendar.nextday.label "Jour suivant" >
+<!ENTITY calendar.prevday.label "Jour précédent" >
+<!ENTITY calendar.nextday.accesskey "J" >
+<!ENTITY calendar.prevday.accesskey "o" >
+<!ENTITY calendar.nextweek.label "Semaine suivante" >
+<!ENTITY calendar.prevweek.label "Semaine précédente" >
+<!ENTITY calendar.nextweek.accesskey "S" >
+<!ENTITY calendar.prevweek.accesskey "e" >
+<!ENTITY calendar.nextmonth.label "Mois suivant" >
+<!ENTITY calendar.prevmonth.label "Mois précédent" >
+<!ENTITY calendar.nextmonth.accesskey "M" >
+<!ENTITY calendar.prevmonth.accesskey "r" >
+
+<!ENTITY calendar.navigation.nextday.tooltip "Jour suivant" >
+<!ENTITY calendar.navigation.prevday.tooltip "Jour précédent" >
+<!ENTITY calendar.navigation.nextweek.tooltip "Semaine suivante" >
+<!ENTITY calendar.navigation.prevweek.tooltip "Semaine précédente" >
+<!ENTITY calendar.navigation.nextmonth.tooltip "Mois suivant" >
+<!ENTITY calendar.navigation.prevmonth.tooltip "Mois précédent" >
+
+<!ENTITY calendar.newevent.button.label "Nouvel évènement" >
+<!ENTITY calendar.newtask.button.label "Nouvelle tâche" >
+
+<!ENTITY calendar.day.button.label "Journée" >
+<!ENTITY calendar.week.button.label "Semaine" >
+<!ENTITY calendar.month.button.label "  Mois  " >
+<!ENTITY calendar.multiweek.button.label "Multisemaine" >
+<!ENTITY calendar.onlyworkday.checkbox.label "Semaine de travail seulement" >
+<!ENTITY calendar.onlyworkday.checkbox.accesskey "a" >
+<!ENTITY calendar.displaytodos.checkbox.label "Afficher les tâches" >
+<!ENTITY calendar.displaytodos.checkbox.accesskey "h" >
+<!ENTITY calendar.completedtasks.checkbox.label "Afficher les tâches accomplies" >
+<!ENTITY calendar.completedtasks.checkbox.accesskey "c" >
+
+<!ENTITY calendar.orientation.label "Rotation" >
+<!ENTITY calendar.orientation.accesskey "R" >
+
+<!ENTITY calendar.search.options.searchfor " contenant">
+
+<!ENTITY calendar.list.header.label "Agendas">
+
+<!ENTITY calendar.task.filter.title.label "Afficher">
+<!ENTITY calendar.task.filter.all.label "Tout">
+<!ENTITY calendar.task.filter.all.accesskey "T">
+<!ENTITY calendar.task.filter.today.label "Aujourd’hui">
+<!ENTITY calendar.task.filter.today.accesskey "A">
+<!ENTITY calendar.task.filter.next7days.label "Les sept prochains jours">
+<!ENTITY calendar.task.filter.next7days.accesskey "L">
+<!ENTITY calendar.task.filter.notstarted.label "Les tâches non commencées">
+<!ENTITY calendar.task.filter.notstarted.accesskey "e">
+<!ENTITY calendar.task.filter.overdue.label "Les tâches dont l’échéance est dépassée">
+<!ENTITY calendar.task.filter.overdue.accesskey "s">
+<!ENTITY calendar.task.filter.completed.label "Les tâches terminées">
+<!ENTITY calendar.task.filter.completed.accesskey "c">
+<!ENTITY calendar.task.filter.open.label "Les tâches inachevées">
+<!ENTITY calendar.task.filter.open.accesskey "n">
+
+<!-- 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 "Les tâches en cours">
+<!ENTITY calendar.task.filter.current.accesskey "u">
+
+<!ENTITY calendar.task-details.title.label "titre">
+<!ENTITY calendar.task-details.organizer.label "émetteur">
+<!ENTITY calendar.task-details.priority.label "priorité">
+<!ENTITY calendar.task-details.priority.low.label "Basse">
+<!ENTITY calendar.task-details.priority.normal.label "Normale">
+<!ENTITY calendar.task-details.priority.high.label "Haute">
+<!ENTITY calendar.task-details.status.label "statut">
+<!ENTITY calendar.task-details.category.label "catégorie">
+<!ENTITY calendar.task-details.repeat.label "répétition :">
+<!ENTITY calendar.task-details.attachments.label "pièces jointes">
+<!ENTITY calendar.task-details.start.label "date de début">
+<!ENTITY calendar.task-details.due.label "fin prévue">
+
+<!ENTITY calendar.task.category.button.tooltip "Catégoriser les tâches">
+<!ENTITY calendar.task.complete.button.tooltip "Marquer les tâches sélectionnées comme terminées">
+<!ENTITY calendar.task.priority.button.tooltip "Changer la priorité">
+
+<!ENTITY calendar.task.text-filter.textbox.emptytext.base1 "Filtrer les tâches #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 "Ouvrir">
+<!ENTITY calendar.context.modifyorviewitem.accesskey "O">
+<!ENTITY calendar.context.modifyorviewtask.label "Ouvrir la tâche…">
+<!ENTITY calendar.context.modifyorviewtask.accesskey "O">
+<!ENTITY calendar.context.newevent.label "Nouvel évènement…">
+<!ENTITY calendar.context.newevent.accesskey "N">
+<!ENTITY calendar.context.newtodo.label "Nouvelle tâche…">
+<!ENTITY calendar.context.newtodo.accesskey "v">
+<!ENTITY calendar.context.deletetask.label "Supprimer la tâche">
+<!ENTITY calendar.context.deletetask.accesskey "S">
+<!ENTITY calendar.context.deleteevent.label "Supprimer l’évènement">
+<!ENTITY calendar.context.deleteevent.accesskey "S">
+<!ENTITY calendar.context.cutevent.label "Couper">
+<!ENTITY calendar.context.cutevent.accesskey "C">
+<!ENTITY calendar.context.copyevent.label "Copier">
+<!ENTITY calendar.context.copyevent.accesskey "p">
+<!ENTITY calendar.context.pasteevent.label "Coller">
+<!ENTITY calendar.context.pasteevent.accesskey "o">
+<!ENTITY calendar.context.button.label "Aujourd’hui">
+<!ENTITY calendar.context.button.accesskey "A">
+
+<!ENTITY calendar.context.attendance.menu.label "Participation">
+<!ENTITY calendar.context.attendance.menu.accesskey "a">
+<!ENTITY calendar.context.attendance.occurrence.label "Cette occurrence">
+<!ENTITY calendar.context.attendance.all2.label "Séries complètes">
+<!ENTITY calendar.context.attendance.send.label "Envoyer une notification maintenant">
+<!ENTITY calendar.context.attendance.send.accesskey "E">
+<!ENTITY calendar.context.attendance.dontsend.label "Ne pas envoyer de notification">
+<!ENTITY calendar.context.attendance.dontsend.accesskey "N">
+
+<!ENTITY calendar.context.attendance.occ.accepted.accesskey "A">
+<!ENTITY calendar.context.attendance.occ.accepted.label "Accepté">
+<!ENTITY calendar.context.attendance.occ.tentative.accesskey "c">
+<!ENTITY calendar.context.attendance.occ.tentative.label "Accepté provisoirement">
+<!ENTITY calendar.context.attendance.occ.declined.accesskey "R">
+<!ENTITY calendar.context.attendance.occ.declined.label "Refusé">
+<!ENTITY calendar.context.attendance.occ.delegated.accesskey "D">
+<!ENTITY calendar.context.attendance.occ.delegated.label "Délégué">
+<!ENTITY calendar.context.attendance.occ.needsaction.accesskey "S">
+<!ENTITY calendar.context.attendance.occ.needsaction.label "Nécessite encore une action">
+<!ENTITY calendar.context.attendance.occ.inprogress.accesskey "E">
+<!ENTITY calendar.context.attendance.occ.inprogress.label "En cours">
+<!ENTITY calendar.context.attendance.occ.completed.accesskey "T">
+<!ENTITY calendar.context.attendance.occ.completed.label "Terminé">
+
+<!ENTITY calendar.context.attendance.all.accepted.accesskey "A">
+<!ENTITY calendar.context.attendance.all.accepted.label "Accepté">
+<!ENTITY calendar.context.attendance.all.tentative.accesskey "c">
+<!ENTITY calendar.context.attendance.all.tentative.label "Accepté provisoirement">
+<!ENTITY calendar.context.attendance.all.declined.accesskey "R">
+<!ENTITY calendar.context.attendance.all.declined.label "Refusé">
+<!ENTITY calendar.context.attendance.all.delegated.accesskey "D">
+<!ENTITY calendar.context.attendance.all.delegated.label "Délégué">
+<!ENTITY calendar.context.attendance.all.needsaction.accesskey "s">
+<!ENTITY calendar.context.attendance.all.needsaction.label "Nécessite encore une action">
+<!ENTITY calendar.context.attendance.all.inprogress.accesskey "E">
+<!ENTITY calendar.context.attendance.all.inprogress.label "En cours">
+<!ENTITY calendar.context.attendance.all.completed.accesskey "T">
+<!ENTITY calendar.context.attendance.all.completed.label "Terminé">
+
+<!-- Task Context Menu -->
+<!ENTITY calendar.context.progress.label "Progression">
+<!ENTITY calendar.context.progress.accesskey "P">
+<!ENTITY calendar.context.priority.label "Priorité">
+<!ENTITY calendar.context.priority.accesskey "r">
+<!ENTITY calendar.context.postpone.label "Reporter la tâche">
+<!ENTITY calendar.context.postpone.accesskey "e">
+
+<!ENTITY percnt "&#38;#37;" ><!--=percent sign-->
+
+<!ENTITY calendar.context.markcompleted.label "Marquer comme terminée">
+<!ENTITY calendar.context.markcompleted.accesskey "M">
+
+<!ENTITY progress.level.0 "Non commencée">
+<!ENTITY progress.level.0.accesskey "N">
+<!ENTITY progress.level.25 "Terminée à 25 &percnt;">
+<!ENTITY progress.level.25.accesskey "2">
+<!ENTITY progress.level.50 "Terminée à 50 &percnt;">
+<!ENTITY progress.level.50.accesskey "5">
+<!ENTITY progress.level.75 "Terminée à 75 &percnt;">
+<!ENTITY progress.level.75.accesskey "7">
+<!ENTITY progress.level.100 "Terminée">
+<!ENTITY progress.level.100.accesskey "T">
+
+<!ENTITY priority.level.none "Non spécifiée">
+<!ENTITY priority.level.none.accesskey "o">
+<!ENTITY priority.level.low "Basse">
+<!ENTITY priority.level.low.accesskey "B">
+<!ENTITY priority.level.normal "Normale">
+<!ENTITY priority.level.normal.accesskey "N">
+<!ENTITY priority.level.high "Haute">
+<!ENTITY priority.level.high.accesskey "H">
+
+<!ENTITY calendar.context.postpone.1hour.label "Une heure">
+<!ENTITY calendar.context.postpone.1hour.accesskey "h">
+<!ENTITY calendar.context.postpone.1day.label "Un jour">
+<!ENTITY calendar.context.postpone.1day.accesskey "U">
+<!ENTITY calendar.context.postpone.1week.label "Une semaine">
+<!ENTITY calendar.context.postpone.1week.accesskey "s">
+
+<!ENTITY calendar.copylink.label "Copier l’adresse du lien">
+<!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 "Supprimer">
+
+<!-- Server Context Menu -->
+<!ENTITY calendar.context.newserver.label "Nouvel agenda…">
+<!ENTITY calendar.context.newserver.accesskey "N">
+<!ENTITY calendar.context.findcalendar.label "Rechercher un agenda…" >
+<!ENTITY calendar.context.findcalendar.accesskey "h" >
+<!ENTITY calendar.context.deleteserver2.label "Supprimer l’agenda…">
+<!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 "Retirer l’agenda…">
+<!ENTITY calendar.context.removeserver.accesskey "R">
+<!ENTITY calendar.context.unsubscribeserver.label "Se désabonner de l’agenda…">
+<!ENTITY calendar.context.unsubscribeserver.accesskey "d">
+<!ENTITY calendar.context.synccalendars.label "Synchroniser les agendas">
+<!ENTITY calendar.context.synccalendars.accesskey "h">
+<!ENTITY calendar.context.publish.label "Publier l’agenda…">
+<!ENTITY calendar.context.publish.accesskey "b">
+<!ENTITY calendar.context.export.label "Exporter l’agenda…">
+<!ENTITY calendar.context.export.accesskey "x">
+<!ENTITY calendar.context.properties.label "Propriétés">
+<!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 "f">
+
+<!-- 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 "u">
+<!ENTITY calendar.context.showall.label "Afficher tous les agendas">
+<!ENTITY calendar.context.showall.accesskey "A">
+
+<!ENTITY calendar.context.convertmenu.label "Convertir en">
+<!ENTITY calendar.context.convertmenu.accesskey.mail "C">
+<!ENTITY calendar.context.convertmenu.accesskey.calendar "n">
+<!ENTITY calendar.context.convertmenu.event.label "Évènement…">
+<!ENTITY calendar.context.convertmenu.event.accesskey "v">
+<!ENTITY calendar.context.convertmenu.message.label "Message…">
+<!ENTITY calendar.context.convertmenu.message.accesskey "M">
+<!ENTITY calendar.context.convertmenu.task.label "Tâche…">
+<!ENTITY calendar.context.convertmenu.task.accesskey "T">
+
+<!ENTITY calendar.tasks.view.minimonth.label "Mois réduit">
+<!ENTITY calendar.tasks.view.minimonth.accesskey "M">
+
+<!ENTITY calendar.tasks.view.calendarlist.label "Liste d’agenda">
+<!ENTITY calendar.tasks.view.calendarlist.accesskey "L">
+
+<!ENTITY calendar.tasks.view.filtertasks.label "Filtrer les tâches">
+<!ENTITY calendar.tasks.view.filtertasks.accesskey "F">
+
+<!-- Calendar Alarm Dialog -->
+
+<!ENTITY calendar.alarm.location.label "Emplacement :" >
+<!ENTITY calendar.alarm.details.label "Détails…" >
+
+<!ENTITY calendar.alarm.snoozefor.label "Report d’alarme pendant" >
+<!ENTITY calendar.alarm.snoozeallfor.label "Report de toutes les alarmes pendant" >
+<!ENTITY calendar.alarm.title.label "Alarme d’agenda" >
+<!ENTITY calendar.alarm.dismiss.label "Désactiver" >
+<!ENTITY calendar.alarm.dismissall.label "Tout désactiver" >
+
+<!ENTITY calendar.alarm.snooze.5minutes.label "5 Minutes" >
+<!ENTITY calendar.alarm.snooze.10minutes.label "10 Minutes" >
+<!ENTITY calendar.alarm.snooze.15minutes.label "15 Minutes" >
+<!ENTITY calendar.alarm.snooze.30minutes.label "30 Minutes" >
+<!ENTITY calendar.alarm.snooze.45minutes.label "45 Minutes" >
+<!ENTITY calendar.alarm.snooze.1hour.label "1 heure" >
+<!ENTITY calendar.alarm.snooze.2hours.label "2 heures" >
+<!ENTITY calendar.alarm.snooze.1day.label "1 jour" >
+
+<!-- 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 "Annuler le report d’alarme">
+
+<!-- Calendar Server Dialog -->
+<!ENTITY calendar.server.dialog.title.edit "Modifier l’agenda">
+<!ENTITY calendar.server.dialog.name.label "Nom de l’agenda :">
+
+<!-- Calendar Properties -->
+<!ENTITY calendarproperties.color.label "Couleur :">
+<!ENTITY calendarproperties.webdav.label "iCalendar (ICS)">
+<!ENTITY calendarproperties.caldav.label "CalDAV">
+<!ENTITY calendarproperties.format.label "Format :">
+<!ENTITY calendarproperties.location.label "Emplacement :">
+<!ENTITY calendarproperties.refreshInterval.label "Actualiser l’agenda :">
+<!ENTITY calendarproperties.refreshInterval.manual.label "Manuellement">
+<!ENTITY calendarproperties.name.label "Nom :">
+<!ENTITY calendarproperties.readonly.label "En lecture seule">
+<!ENTITY calendarproperties.firealarms.label "Afficher les alarmes">
+<!ENTITY calendarproperties.cache3.label "Prise en charge du mode hors connexion">
+<!ENTITY calendarproperties.enabled2.label "Activer cet agenda">
+<!ENTITY calendarproperties.forceDisabled.label "Le fournisseur de cet agenda n’a pas été trouvé. Ceci arrive souvent lors de la désactivation ou de la désinstallation de certains modules complémentaires.">
+<!ENTITY calendarproperties.unsubscribe.label "Se désabonner">
+<!ENTITY calendarproperties.unsubscribe.accesskey "S">
+
+<!-- Calendar Publish Dialog -->
+<!ENTITY calendar.publish.dialog.title "Publier l’agenda">
+<!ENTITY calendar.publish.url.label "URL de publication">
+<!ENTITY calendar.publish.publish.button "Publier">
+<!ENTITY calendar.publish.close.button "Fermer">
+
+<!ENTITY calendar.publish.example.url.description "Quelque chose comme http://www.monserveur.com/webdav/test.ics">
+
+<!-- Select Calendar Dialog -->
+<!ENTITY calendar.select.dialog.title "Sélectionner l’agenda">
+
+<!-- Error reporting -->
+<!ENTITY calendar.error.detail "Détails…">
+<!ENTITY calendar.error.code "Code d’erreur :">
+<!ENTITY calendar.error.description "Description :">
+<!ENTITY calendar.error.title "Une erreur est survenue">
+
+<!-- Extract buttons in message header -->
+<!ENTITY calendar.extract.event.button "Ajouter comme évènement">
+<!ENTITY calendar.extract.task.button "Ajouter comme tâche">
+<!ENTITY calendar.extract.event.button.tooltip "Extraire les informations temporelles du message et les ajouter à votre agenda en tant qu’évènement">
+<!ENTITY calendar.extract.task.button.tooltip "Extraire les informations temporelles du message et les ajouter à votre agenda en tant que tâche">
diff --git a/l10n-fr/calendar/chrome/calendar/calendar.properties b/l10n-fr/calendar/chrome/calendar/calendar.properties
new file mode 100644
index 0000000000..354c5fff6a
--- /dev/null
+++ b/l10n-fr/calendar/chrome/calendar/calendar.properties
@@ -0,0 +1,696 @@
+# 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 name for new events
+newEvent=Nouvel évènement
+
+# Titles for the event/task dialog
+newEventDialog=Nouvel évènement 
+editEventDialog=Modifier l’évènement 
+newTaskDialog=Nouvelle tâche 
+editTaskDialog=Modifier la tâche 
+
+# Do you want to save changes?
+askSaveTitleEvent=Enregistrer l’évènement
+askSaveTitleTask=Enregistrer la tâche
+askSaveMessageEvent=L’évènement n’a pas été enregistré. Voulez-vous enregistrer l’évènement ?
+askSaveMessageTask=La tâche n’a pas été enregistrée. Voulez-vous enregistrer la tâche ?
+
+# Event Dialog Warnings
+warningEndBeforeStart=La date de fin spécifiée se situe avant la date de début
+warningUntilDateBeforeStart=La date de fin de récurrence se situe avant la date de début
+
+# The name of the calendar provided with the application by default
+homeCalendarName=Mon agenda
+
+# The name given to a calendar if an opened calendar has an empty filename
+untitledCalendarName=Agenda sans nom
+
+# Event status: Tentative, Confirmed, Cancelled
+# ToDo task status: NeedsAction, InProcess, Completed, Cancelled
+statusTentative =Provisoire
+statusConfirmed =Confirmé
+eventStatusCancelled=Annulé
+todoStatusCancelled =Annulé
+statusNeedsAction =Une action est requise
+statusInProcess =En cours
+statusCompleted =Achevé
+
+# Task priority, these should match the priority.level.* labels in calendar.dtd
+highPriority=Haute
+normalPriority=Normale
+lowPriority=Basse
+
+importPrompt=Dans quel agenda voulez-vous importer ces éléments ?
+exportPrompt=Quel agenda souhaitez-vous exporter ?
+pastePrompt=Dans lequel de vos agendas modifiables voulez-vous le coller ?
+publishPrompt=Quel agenda voulez-vous publier ?
+
+# LOCALIZATION NOTE (pasteEventAlso): The users pasting operation includes among
+# others also a meeting invitation - this is used as a affix in
+# pasteNotifyAbout
+pasteEventAlso=Le presse-papiers contient une réunion
+# LOCALIZATION NOTE (pasteEventsAlso): The users pasting operation includes among
+# others also several meeting invitations - this is used as a affix in
+# pasteNotifyAbout
+pasteEventsAlso=Le presse-papiers contient des réunions
+# LOCALIZATION NOTE (pasteTaskAlso): The users pasting operation includes among
+# others also an assigned task - this is used as a affix in pasteNotifyAbout
+pasteTaskAlso=Le presse-papiers contient une tâche attribuée
+# LOCALIZATION NOTE (pasteTasksAlso): The users pasting operation include among
+# others also several assigned tasks - this is used as a affix in
+# pasteNotifyAbout
+pasteTasksAlso=Le presse-papiers contient plusieurs tâches attribuées
+# 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=Le presse-papiers contient des réunions et des tâches attribuées
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting a meeting -
+# this is used as a affix in pasteNotifyAbout
+pasteEventOnly=Vous collez une réunion
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several meetings -
+# this is used as a affix in pasteNotifyAbout
+pasteEventsOnly=Vous collez plusieurs réunions
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting an assigned task -
+# this is used as a affix in pasteNotifyAbout
+pasteTaskOnly=Vous collez une tâche attribuée
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several assigned
+# tasks - this is used as a affix in pasteNotifyAbout
+pasteTasksOnly=Vous collez plusieurs tâches attribuées
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting assigned task(s) and
+# meeting(s) - this is used as a affix in pasteNotifyAbout
+pasteItemsOnly=Vous collez des réunions et des tâches attribuées
+
+# LOCALIZATION NOTE (pasteNotifyAbout): Text displayed if pasting an invitation
+# or assigned task
+# %1$S - pasteEvent* or pasteTask*
+pasteNotifyAbout=%1$S - Souhaitez-vous informer l’ensemble des personnes concernées ?
+
+# LOCALIZATION NOTE (pasteAndNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteAndNotifyLabel=Coller et envoyer immédiatement
+# LOCALIZATION NOTE (pasteDontNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteDontNotifyLabel=Coller sans envoyer
+
+# 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=Échec de l’importation de %1$S éléments. La dernière erreur était : %2$S
+# LOCALIZATION NOTE (noItemsInCalendarFile2):
+# %1$S will be replaced with file path
+noItemsInCalendarFile2=Importation impossible depuis %1$S. Ce fichier ne contient aucun élément qui puisse être importé.
+
+#spaces needed at the end of the following lines
+eventDescription=Descriptif :
+
+unableToRead=Impossible de lire le fichier :
+unableToWrite=Impossible d’écrire dans le fichier :
+defaultFileName=Evenements_calendar.ics
+HTMLTitle=Mozilla Calendar
+
+# 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=Un fuseau horaire inconnu et indéfini a été trouvé lors de la lecture de %1$S.
+
+# LOCALIZATION NOTE (duplicateError):
+# %1$S will be replaced with number of duplicate items
+# %2$S will be replaced with a file path pointing to a calendar
+duplicateError=%1$S élément(s) ont été ignorés car ils existent dans l’agenda de destination et dans %2$S.
+
+unableToCreateProvider=Une erreur est survenue en préparant l’agenda situé sur %1$S pour son utilisation. Il ne sera pas disponible.
+
+# Sample: Unknown timezone "USPacific" in "Dentist Appt". Using the 'floating' local timezone instead: 2008/02/28 14:00:00
+unknownTimezoneInItem=Fuseau horaire « %1$S » inconnu dans « %2$S ». Utilisation d’un fuseau horaire « flottant » à la place : %3$S
+TimezoneErrorsAlertTitle=Erreur de fuseau horaire
+TimezoneErrorsSeeConsole=Consulter la console d’erreurs : les fuseaux horaires inconnus sont traités comme des fuseaux horaires « flottants » locaux.
+
+# The following strings are for the prompt to delete/unsubscribe from the calendar
+removeCalendarTitle=Retirer l’agenda
+removeCalendarButtonDelete=Supprimer l’agenda
+removeCalendarButtonUnsubscribe=Se désabonner
+
+# LOCALIZATION NOTE (removeCalendarMessageDeleteOrUnsubscribe): Shown for
+# calendar where both deleting and unsubscribing is possible.
+# %1$S: The name of a calendar
+removeCalendarMessageDeleteOrUnsubscribe=Voulez-vous vraiment retirer l’agenda « %1$S » ? Se désabonner retirera l’agenda de la liste, le supprimer effacera également ses données de façon permanente.
+
+# LOCALIZATION NOTE (removeCalendarMessageDelete): Shown for calendar where
+# deleting is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageDelete=Voulez-vous vraiment supprimer définitivement l’agenda « %1$S » ?
+
+# LOCALIZATION NOTE (removeCalendarMessageUnsubscribe): Shown for calendar
+# where unsubscribing is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageUnsubscribe=Voulez-vous vraiment vous désabonner de l’agenda « %1$S » ?
+
+WeekTitle=Semaine %1$S
+None=Aucune
+
+# 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 données de votre agenda ne sont pas compatibles avec cette version de %1$S. Les données d’agenda de votre profil ont été mises à jour par une version plus récente de %1$S. Une sauvegarde du fichier de données a été créée, nommée « %2$S ». Nous poursuivons avec un nouveau fichier de données.
+
+# List of events or todos (unifinder)
+eventUntitled=Sans titre
+
+# Tooltips of events or todos
+tooltipTitle=Titre :
+tooltipLocation=Lieu :
+# 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=Date :
+# event calendar name
+tooltipCalName=Nom de l’agenda :
+# event status: tentative, confirmed, cancelled
+tooltipStatus=Statut :
+# event organizer
+tooltipOrganizer=Organisateur :
+# task/todo fields
+# start date time, due date time, task priority number, completed date time
+tooltipStart=Début :
+tooltipDue=Fin :
+tooltipPriority=Priorité :
+tooltipPercent=Progression :
+tooltipCompleted=Achevé :
+
+#File commands and dialogs
+New=Nouveau
+Open=Ouvrir
+filepickerTitleImport=Importer
+filepickerTitleExport=Exporter
+
+# 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)
+filterHtml=Page web (%1$S)
+
+# Remote calendar errors
+genericErrorTitle=Une erreur s’est produite
+httpPutError=Échec de la publication du fichier d’agenda.\nCode d’erreur : %1$S : %2$S
+otherPutError=Échec de la publication du fichier d’agenda.\nCode d’erreur : 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=Une erreur est survenue lors de la lecture de données de l’agenda : %1$S. Celui-ci a été mis en mode lecture seule car des changements dans cet agenda provoqueraient vraisemblablement une perte de données. Vous pouvez changer ce paramétrage en sélectionnant « Modifier l’agenda ».
+
+# 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=Une erreur est survenue lors de la lecture de données de l’agenda : %1$S. Celui-ci a été désactivé jusqu’à ce que son utilisation soit sûre.
+
+# 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=Une erreur est survenue lors de la lecture de données de l’agenda : %1$S. Cependant, l’erreur est certainement mineure ; le programme va donc essayer de poursuivre.
+
+# 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=Une erreur est survenue lors de la lecture de données de l’agenda : %1$S.
+utf8DecodeError=Une erreur est survenue lors du décodage d’un fichier iCalendar (ics) en UTF-8. Vérifiez que le fichier, y compris les symboles et les lettres accentuées, est encodé en UTF-8.
+icsMalformedError=L’analyse d’un fichier (ics) a échoué. Vérifiez que le fichier se conforme à la syntaxe des fichiers iCalendar (ics).
+itemModifiedOnServerTitle=Élément modifié sur le serveur
+itemModifiedOnServer=Cet élément a été récemment modifié sur le serveur.\n
+modifyWillLoseData=L’envoi de vos modifications récentes remplacera les modifications effectuées auparavant sur le serveur.
+deleteWillLoseData=La suppression de cet élément provoquera la perte des modifications effectuées sur le serveur.
+updateFromServer=Annuler mes modifications et actualiser l’agenda
+proceedModify=Envoyer mes modifications quand même
+proceedDelete=Supprimer quand même
+dav_notDav=La ressource sur « %1$S » n’est pas une collection DAV ou n’est pas disponible
+dav_davNotCaldav=La ressource sur « %1$S » est une collection DAV mais n’est pas un agenda CalDAV
+itemPutError=Une erreur est survenue lors du stockage de l’élément sur le serveur.
+itemDeleteError=Une erreur est survenue lors de la suppression de l’élément sur le serveur.
+caldavRequestError=Une erreur est survenue lors de l’envoi de l’invitation.
+caldavResponseError=Une erreur est survenue lors de l’envoi de la réponse.
+caldavRequestStatusCode=État : %1$S
+caldavRequestStatusCodeStringGeneric=La requête ne peut pas être traitée.
+caldavRequestStatusCodeString400=La requête contient une syntaxe incorrecte et ne peut être traitée.
+caldavRequestStatusCodeString403=L’utilisateur n’a pas les permissions nécessaires pour effectuer la requête.
+caldavRequestStatusCodeString404=Ressource introuvable.
+caldavRequestStatusCodeString409=Conflit de ressources.
+caldavRequestStatusCodeString412=Les prérequis ne sont pas atteints.
+caldavRequestStatusCodeString500=Erreur interne du serveur.
+caldavRequestStatusCodeString502=Mauvaise passerelle (Configuration du proxy ?).
+caldavRequestStatusCodeString503=Erreur interne du serveur (Serveur temporairement indisponible ?).
+caldavRedirectTitle=Mettre à jour l’emplacement de l’agenda %1$S ?
+caldavRedirectText=Les requêtes pour %1$S sont redirigées vers un nouvel emplacement. Voulez-vous remplacer l’emplacement par la valeur suivante ?
+caldavRedirectDisableCalendar=Désactiver l’agenda
+
+
+# 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/Paris, America/Montreal, Africa/Kinshasa, Africa/Bamako, Indian/Antananarivo, Africa/Lubumbashi, Indian/Mauritius, Africa/Casablanca, America/Guadeloupe, America/Martinique, America/Moncton, America/Vancouver, America/Edmonton, Pacific/Tahiti, Pacific/Noumea, America/Cayenne, Asia/Calcutta, Africa/Tunis, Asia/Saigon, Asia/Beirut
+
+# 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=Attention : le fuseau horaire du système « %1$S »\nne correspond plus au fuseau horaire ZoneInfo interne « %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=Fuseau horaire « %1$S » du système ignoré.
+
+# "Skipping locale timezone 'America/New_Yawk'."
+# Testing note: Skipping occurs if a likelyTimezone id is unknown or misspelled.
+SkippingLocaleTimezone=Fuseau horaire « %1$S » de la locale ignoré.
+
+# 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=Attention : utilisation d’un fuseau horaire « flottant ».\nAucune donnée de fuseau horaire ZoneInfo ne correspond aux données du fuseau horaire système.
+
+# "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=Attention : utilisation d’un fuseau horaire supposé\n %1$S (UTC%2$S).\n%3$S\n%4$S
+
+# Testing note: "Almost match" timezones include Cairo on W2k.
+TZAlmostMatchesOSDifferAtMostAWeek=Ce fuseau horaire ZoneInfo correspond presque au fuseau horaire du système.\nPour cette règle, les prochaines transitions entre heure d’été et heure standard\ndiffèrent au plus d’une semaine par rapport aux transitions du fuseau du système.\nIl peut y avoir des incohérences dans les données, comme une date de début différente,\nune règle différente, ou une approximation pour une règle de calendrier non grégorien.
+
+TZSeemsToMatchOS=Ce fuseau horaire ZoneInfo semble correspondre au fuseau horaire du système cette année.
+
+# LOCALIZATION NOTE (TZFromOS):
+# used for a display of a chosen timezone
+# %1$S will be replaced with the name of a timezone
+TZFromOS=Ce fuseau horaire ZoneInfo a été choisi selon l’identifiant du\nfuseau horaire du système « %1$S ».
+
+# Localization note (TZFromLocale): Substitute name of your locale language.
+TZFromLocale=Ce fuseau horaire ZoneInfo a été choisi sur la base d’une correspondance entre\nle fuseau horaire du système et ceux où se trouvent la plupart\ndes internautes francophones.
+
+TZFromKnownTimezones=Ce fuseau horaire ZoneInfo a été choisi sur la base d’une correspondance\nentre le fuseau horaire du système et des fuseaux horaires\nconnus dans l’ordre alphabétique de leur identifiant.
+
+# Print Layout
+tasksWithNoDueDate = Tâches sans date d’échéance
+
+# Providers
+caldavName=CalDAV
+compositeName=Composite
+icsName=iCalendar (ICS)
+memoryName=Temporaire (mémoire)
+storageName=Local (SQLite)
+
+# Used in created html code for export
+htmlPrefixTitle=Titre
+htmlPrefixWhen=Quand
+htmlPrefixLocation=Lieu
+htmlPrefixDescription=Description
+htmlTaskCompleted=%1$S (achevée)
+
+# Categories
+addCategory=Ajouter une catégorie
+multipleCategories=Plusieurs catégories
+
+today=Aujourd’hui
+tomorrow=Demain
+yesterday=Hier
+
+#Today pane
+eventsonly=Évènements
+eventsandtasks=Évènements et tâches
+tasksonly=Tâches
+shortcalendarweek=Sem.
+
+go=Aller à
+
+# 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=prochain
+next2=prochain
+last1=dernier
+last2=dernier
+
+# Alarm Dialog
+# LOCALIZATION NOTE (alarmWindowTitle.label): Semi-colon list of plural
+# forms. See: http://developer.mozilla.org/en/Localization_and_Plurals
+alarmWindowTitle.label=#1 rappel;#1 rappels
+
+# 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=Début : %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=Aujourd’hui à %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=Demain à %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=Hier à %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=Description par défaut Mozilla
+alarmDefaultSummary=Résumé par défaut Mozilla
+
+# LOCALIZATION NOTE (alarmSnoozeLimitExceeded): Semi-colon list of plural
+# forms.
+alarmSnoozeLimitExceeded=Vous ne pouvez pas reporter une alarme plus d’un mois.;Vous ne pouvez pas reporter une alarme plus de #1 mois.
+
+taskDetailsStatusNeedsAction=Une action est requise
+
+# 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=Achevée à %1$S%%
+taskDetailsStatusCompleted=Achevée
+
+# 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=Achevée le %1$S
+taskDetailsStatusCancelled=Annulée
+
+gettingCalendarInfoCommon=Vérification des agendas…
+
+# 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=Vérification de l’agenda %1$S sur %2$S
+
+# LOCALIZATION NOTE (errorCode):
+# %1$S will be replaced with the number of an error code
+errorCode=Code d’erreur : %1$S
+
+# LOCALIZATION NOTE (errorDescription):
+# %1$S will be replaced with the description of an error
+errorDescription=Description : %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=Une erreur s’est produite lors de l’écriture dans l’agenda %1$S. Veuillez consulter les informations ci-dessous pour en savoir plus.
+
+# LOCALIZATION NOTE (errorWritingDetails):
+# This will be displayed in the detail section of the error dialog
+errorWritingDetails=Si vous voyez ce message après avoir ignoré ou manqué un rappel et que vous ne souhaitez pas ajouter ou modifier d’évènements pour un agenda, vous pouvez marquer cet agenda comme étant en lecture seule pour éviter une telle expérience à l’avenir. Pour ce faire, accédez aux propriétés de l’agenda en effectuant un clic droit sur cet agenda dans la liste accessible depuis l’onglet de l’agenda ou l’onglet des tâches.
+
+# 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=L’agenda %1$S est momentanément indisponible
+
+# 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=L’agenda %1$S est en lecture seule
+
+taskEditInstructions=Cliquer ici pour ajouter une nouvelle tâche
+taskEditInstructionsReadonly=Veuillez sélectionner un agenda qui ne soit pas en lecture seule
+taskEditInstructionsCapability=Veuillez sélectionner un agenda qui gère les tâches
+
+eventDetailsStartDate=Début :
+eventDetailsEndDate=Fin :
+
+# 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=Semaine %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=Semaines %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=Sem. : %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=Sem. : %1$S-%2$S
+
+# LOCALIZATION NOTE (multiweekViewWeek):
+# Used for displaying the week number in the first day box of every week
+# in multiweek and month views.
+# It allows to localize the label with the week number in case your locale
+# requires it.
+# Take into account that this label is placed in the same room of the day label
+# inside the day boxes, exactly on left side, hence a possible string shouldn't
+# be too long otherwise it will create confusion between the week number and
+# the day number other than a possible crop when the window is resized.
+#
+# %1$S is a number from 1 to 53 that represents the week number.
+multiweekViewWeek=Sem. %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 jour;#1 jours
+dueInHours=#1 heure;#1 heures
+dueInLessThanOneHour=Moins d’une heure
+
+# LOCALIZATION NOTE (monthInYear):
+# used for display of Month-dates like 'December 2008'
+# %1$S will be replaced with name of the month
+# %2$S will be replaced with the year
+monthInYear=%1$S %2$S
+
+# LOCALIZATION NOTE (monthInYear.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+monthInYear.monthFormat=nominative
+
+# LOCALIZATION NOTE (formatDateLong):
+# used for display dates in long format like 'Mon 15 Oct 2008' when it's
+# impossible to retrieve the formatatted date from the OS.
+# %1$S will be replaced with name of the day in short format;
+# %2$S will be replaced with the day-index of the month, possibly followed by an ordinal symbol
+# (depending on the string dayOrdinalSymbol in dateFormat.properties);
+# %3$S will be replaced with the name of the month in short format;
+# %4$S will be replaced with the year.
+formatDateLong=%1$S %2$S %3$S %4$S
+
+# LOCALIZATION NOTE (dayHeaderLabel):
+# used for display the labels in the header of the days in day/week views in short
+# or long format. For example: 'Monday 6 Oct.' or 'Mon. 6 Oct.'
+# %1$S will be replaced with name of the day in short or long format
+# %2$S will be replaced with the day-index of the month, possibly followed by an ordinal symbol
+# (depending on the string dayOrdinalSymbol in dateFormat.properties), plus the name
+# of the month in short format (the day/month order depends on the OS settings).
+dayHeaderLabel=%1$S %2$S
+
+# LOCALIZATION NOTE (daysIntervalInMonth):
+# used for display of intervals in the form of 'March 3 - 9, 2008'
+# %1$S will be replaced with name of the month of the start date
+# %2$S will be replaced with the day-index of the start date possibly followed by an ordinal symbol
+# %3$S will be replaced with the day-index of the end date possibly followed by an ordinal symbol
+# %4$S will be replaced with the common year of both dates
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalInMonth=%2$S – %3$S %1$S %4$S
+
+# LOCALIZATION NOTE (daysIntervalInMonth.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalInMonth.monthFormat=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 %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 %3$S – %5$S %4$S %6$S
+
+# LOCALIZATION NOTE (daysIntervalBetweenYears.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalBetweenYears.monthFormat=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 %2$S
+
+# LOCALIZATION NOTE (datetimeIntervalOnSameDay):
+# used for intervals where end is on the same day as start, so we can leave out the
+# end date but still include end time
+# displayed form is '5 Jan 2006 13:00 - 17:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+# %3$S will be replaced with the time of the end date
+datetimeIntervalOnSameDay=%1$S %2$S – %3$S
+
+# LOCALIZATION NOTE (datetimeIntervalOnSeveralDays):
+# used for intervals spanning multiple days by including date and time
+# displayed form is '5 Jan 2006 13:00 - 7 Jan 2006 9:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+# %3$S will be replaced with the date of the end date
+# %4$S will be replaced with the time of the end date
+datetimeIntervalOnSeveralDays=%1$S %2$S – %3$S %4$S
+
+# LOCALIZATION NOTE (datetimeIntervalTaskWithoutDate):
+# used for task without start and due date
+# (showed only in exported calendar in Html format)
+datetimeIntervalTaskWithoutDate= pas de date de début ou de fin
+# 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=date de début %1$S %2$S
+# LOCALIZATION NOTE (datetimeIntervalTaskWithoutStartDate):
+# used for intervals in task with only due date
+# displayed form is 'due date 5 Jan 2006 13:00'
+# (showed only in exported calendar in Html format)
+# %1$S will be replaced with the date of the due date
+# %2$S will be replaced with the time of the due date
+datetimeIntervalTaskWithoutStartDate=date de fin %1$S %2$S
+
+# LOCALIZATION NOTE (dragLabelTasksWithOnlyEntryDate
+# dragLabelTasksWithOnlyDueDate)
+# Labels that appear while dragging a task with only
+# entry date OR due date
+dragLabelTasksWithOnlyEntryDate=Date de début
+dragLabelTasksWithOnlyDueDate=Prévu pour
+
+deleteTaskLabel=Supprimer la tâche
+deleteTaskAccesskey=p
+deleteItemLabel=Supprimer
+deleteItemAccesskey=p
+deleteEventLabel=Supprimer l’évènement
+deleteEventAccesskey=p
+
+calendarPropertiesEveryMinute=Chaque minute;Toutes les #1 minutes
+
+# LOCALIZATION NOTE (extractUsing)
+# Used in message header
+# %1$S will be replaced with language name from languageNames.properties
+extractUsing=En %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=En %1$S (%2$S)
+
+# LOCALIZATION NOTE (unit)
+# Used to determine the correct plural form of a unit
+unitMinutes=#1 minute;#1 minutes
+unitHours=#1 heure;#1 heures
+unitDays=#1 jour;#1 jours
+unitWeeks=#1 semaine;#1 semaines
+
+# 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=Afficher %1$S
+hideCalendar=Masquer %1$S
+# uses the access key calendar.context.showonly.accesskey
+showOnlyCalendar=Afficher uniquement %1$S
+
+# LOCALIZATION NOTE (modifyConflict)
+# Used by the event dialog to resolve item modification conflicts.
+modifyConflictPromptTitle=Conflit de modification de l’élément
+modifyConflictPromptMessage=L’élément en cours de modification dans le dialogue a été modifié depuis son ouverture.
+modifyConflictPromptButton1=Remplacer les autres modifications
+modifyConflictPromptButton2=Annuler les modifications en cours
+
+# Accessible description of a grid calendar with no selected date
+minimonthNoSelectedDate=Aucune date sélectionnée
diff --git a/l10n-fr/calendar/chrome/calendar/calendarCreation.dtd b/l10n-fr/calendar/chrome/calendar/calendarCreation.dtd
new file mode 100644
index 0000000000..d3652a9e39
--- /dev/null
+++ b/l10n-fr/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 "Créer un nouvel agenda" >
+<!ENTITY wizard.label "Créer un nouvel agenda" >
+<!ENTITY wizard.description "Choisissez l’emplacement de votre agenda" >
+
+<!ENTITY initialpage.description "Votre agenda peut être stocké sur votre ordinateur ou sur un serveur afin d’y accéder à distance ou de le partager avec vos amis ou vos collègues de travail." >
+<!ENTITY initialpage.computer.label "Sur mon ordinateur">
+<!ENTITY initialpage.network.label "Sur le réseau">
+
+<!ENTITY locationpage.description "Fournit les informations nécessaires pour accéder à votre agenda distant" >
+<!ENTITY locationpage.login.description "Optionnel : saisissez un nom d’utilisateur et un mot de passe" >
+<!ENTITY locationpage.username.label "Nom d’utilisateur :" >
+<!ENTITY locationpage.password.label "Mot de passe :" >
+
+<!ENTITY custompage.shortdescription "Personnaliser votre agenda" >
+<!ENTITY custompage.longdescription "Vous pouvez donner un nom à votre agenda et affecter des couleurs aux évènements." >
+
+<!ENTITY finishpage.shortdescription "Agenda créé" >
+<!ENTITY finishpage.longdescription "Votre agenda a été créé." >
+
+<!-- Below are new strings for the revised new calendar dialog. The above strings should be
+ removed/renamed later on -->
+
+<!ENTITY sourcetabs.other.label "Autre">
+
+<!ENTITY buttons.create.label "Créer un agenda">
+<!ENTITY buttons.create.accesskey "C">
+
+<!ENTITY buttons.find.label "Rechercher des agendas">
+<!ENTITY buttons.find.accesskey "a">
+
+<!ENTITY buttons.back.label "Retour">
+<!ENTITY buttons.back.accesskey "R">
+
+<!ENTITY buttons.subscribe.label "S’abonner">
+<!ENTITY buttons.subscribe.accesskey "S">
+
+<!ENTITY calendartype.label "Type d’agenda :">
+<!ENTITY location.label "Adresse :">
+<!ENTITY location.placeholder "Adresse web ou nom d’hôte du serveur de l’agenda">
+
+<!ENTITY network.nocredentials.label "Cette adresse ne demande pas d’identifiants de connexion">
+<!ENTITY network.loading.description "Veuillez patienter pendant que vos agendas sont découverts.">
+<!ENTITY network.notfound.description "Aucun agenda à cette adresse. Veuillez vérifier les paramètres.">
+<!ENTITY network.authfail.description "Les identifiants de connexion saisis n’ont pas été acceptés. Veuillez vérifier les paramètres.">
+
+<!ENTITY network.subscribe.single.description "Sélectionnez les agendas auxquels vous souhaitez vous abonner.">
+<!ENTITY network.subscribe.multiple.description "Plusieurs types d’agendas sont disponibles pour cette adresse. Sélectionnez le type d’agenda, puis choisissez les agendas auxquels vous souhaitez vous abonner.">
diff --git a/l10n-fr/calendar/chrome/calendar/calendarCreation.properties b/l10n-fr/calendar/chrome/calendar/calendarCreation.properties
new file mode 100644
index 0000000000..cd54016e23
--- /dev/null
+++ b/l10n-fr/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=Veuillez saisir un emplacement valide.
+error.alreadyExists=Vous vous êtes déjà abonné à l’agenda dans cet emplacement.
diff --git a/l10n-fr/calendar/chrome/calendar/categories.properties b/l10n-fr/calendar/chrome/calendar/categories.properties
new file mode 100644
index 0000000000..c4ef0f8ae8
--- /dev/null
+++ b/l10n-fr/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=Anniversaire,Affaire,Appels,Cadeaux,Clients,Compétitions,Congés,Congrès,Consommation,Divers,Fournisseurs,Idées,Jour férié,Personnel,Préférés,Problèmes,Professionnel,Projets,Réunion,Suivis,Voyages
diff --git a/l10n-fr/calendar/chrome/calendar/dateFormat.properties b/l10n-fr/calendar/chrome/calendar/dateFormat.properties
new file mode 100644
index 0000000000..91211ec55a
--- /dev/null
+++ b/l10n-fr/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=Janvier
+month.2.name=Février
+month.3.name=Mars
+month.4.name=Avril
+month.5.name=Mai
+month.6.name=Juin
+month.7.name=Juillet
+month.8.name=Août
+month.9.name=Septembre
+month.10.name=Octobre
+month.11.name=Novembre
+month.12.name=Décembre
+
+# 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=janvier
+month.2.genitive=février
+month.3.genitive=mars
+month.4.genitive=avril
+month.5.genitive=mai
+month.6.genitive=juin
+month.7.genitive=juillet
+month.8.genitive=août
+month.9.genitive=septembre
+month.10.genitive=octobre
+month.11.genitive=novembre
+month.12.genitive=décembre
+
+month.1.Mmm=jan
+month.2.Mmm=fév
+month.3.Mmm=mar
+month.4.Mmm=avr
+month.5.Mmm=mai
+month.6.Mmm=jun
+month.7.Mmm=jul
+month.8.Mmm=aoû
+month.9.Mmm=sep
+month.10.Mmm=oct
+month.11.Mmm=nov
+month.12.Mmm=déc
+
+day.1.name=Dimanche
+day.2.name=Lundi
+day.3.name=Mardi
+day.4.name=Mercredi
+day.5.name=Jeudi
+day.6.name=Vendredi
+day.7.name=Samedi
+
+day.1.Mmm=Dim
+day.2.Mmm=Lun
+day.3.Mmm=Mar
+day.4.Mmm=Mer
+day.5.Mmm=Jeu
+day.6.Mmm=Ven
+day.7.Mmm=Sam
+
+# Can someone tell me why we're not counting from zero?
+day.1.short=Di
+day.2.short=Lu
+day.3.short=Ma
+day.4.short=Me
+day.5.short=Je
+day.6.short=Ve
+day.7.short=Sa
+
+# Localizable day's date
+day.1.number=1er
+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=Midi
+midnight=Minuit
+
+AllDay=Toute la journée
+Repeating=(récurrente)
diff --git a/l10n-fr/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd b/l10n-fr/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd
new file mode 100644
index 0000000000..9d0e9733e8
--- /dev/null
+++ b/l10n-fr/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 "Définition de rappels">
+<!ENTITY reminder.add.label "Ajouter">
+<!ENTITY reminder.add.accesskey "A">
+<!ENTITY reminder.remove.label "Retirer">
+<!ENTITY reminder.remove.accesskey "R">
+
+<!ENTITY reminder.reminderDetails.label "Détails du rappel">
+<!ENTITY reminder.action.label "Choisir une action de rappel">
+
+<!ENTITY reminder.action.alert.label "Afficher une alerte">
+<!ENTITY reminder.action.email.label "Envoyer un courrier électronique">
+
+<!ENTITY alarm.units.minutes "minutes" >
+<!ENTITY alarm.units.hours "heures" >
+<!ENTITY alarm.units.days "jours" >
diff --git a/l10n-fr/calendar/chrome/calendar/global.dtd b/l10n-fr/calendar/chrome/calendar/global.dtd
new file mode 100644
index 0000000000..11011cdca0
--- /dev/null
+++ b/l10n-fr/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 "Minuit" >
+<!ENTITY time.noon "Midi" >
+
+<!-- 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 "Dim" >
+<!ENTITY day.1.Ddd.accesskey "D">
+<!ENTITY day.2.Ddd "Lun" >
+<!ENTITY day.2.Ddd.accesskey "L">
+<!ENTITY day.3.Ddd "Mar" >
+<!ENTITY day.3.Ddd.accesskey "M">
+<!ENTITY day.4.Ddd "Mer" >
+<!ENTITY day.4.Ddd.accesskey "e">
+<!ENTITY day.5.Ddd "Jeu" >
+<!ENTITY day.5.Ddd.accesskey "J">
+<!ENTITY day.6.Ddd "Ven" >
+<!ENTITY day.6.Ddd.accesskey "V">
+<!ENTITY day.7.Ddd "Sam" >
+<!ENTITY day.7.Ddd.accesskey "S">
+
+<!ENTITY day.1.name "Dimanche" >
+<!ENTITY day.2.name "Lundi" >
+<!ENTITY day.3.name "Mardi" >
+<!ENTITY day.4.name "Mercredi" >
+<!ENTITY day.5.name "Jeudi" >
+<!ENTITY day.6.name "Vendredi" >
+<!ENTITY day.7.name "Samedi" >
+
+<!ENTITY month.1.name "Janvier" >
+<!ENTITY month.2.name "Février" >
+<!ENTITY month.3.name "Mars" >
+<!ENTITY month.4.name "Avril" >
+<!ENTITY month.5.name "Mai" >
+<!ENTITY month.6.name "Juin" >
+<!ENTITY month.7.name "Juillet" >
+<!ENTITY month.8.name "Août" >
+<!ENTITY month.9.name "Septembre" >
+<!ENTITY month.10.name "Octobre" >
+<!ENTITY month.11.name "Novembre" >
+<!ENTITY month.12.name "Décembre" >
+
+<!ENTITY onemonthbackward.tooltip "Aller au mois précédent" >
+<!ENTITY onemonthforward.tooltip "Aller au mois suivant" >
+<!ENTITY oneyearbackward.tooltip "Aller à l’année précédente" >
+<!ENTITY oneyearforward.tooltip "Aller à l’année suivante" >
+<!ENTITY showToday.tooltip "Aller à aujourd’hui">
+<!ENTITY onedayforward.tooltip "Aller au jour suivant">
+<!ENTITY onedaybackward.tooltip "Aller au jour précédent">
+<!ENTITY showselectedday.tooltip "Afficher les évènements de la journée sélectionnée">
diff --git a/l10n-fr/calendar/chrome/calendar/menuOverlay.dtd b/l10n-fr/calendar/chrome/calendar/menuOverlay.dtd
new file mode 100644
index 0000000000..e0fb4c453d
--- /dev/null
+++ b/l10n-fr/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 "Nouvel évènement…">
+<!ENTITY event.new.event.accesskey "N">
+
+<!ENTITY event.new.task "Nouvelle tâche…">
+<!ENTITY event.new.task.accesskey "t">
+
+<!ENTITY calendar.import.label "Importer…">
+<!ENTITY calendar.import.accesskey "i">
+
+<!ENTITY calendar.export.label "Exporter l’agenda…">
+<!ENTITY calendar.export.accesskey "x">
+
+<!ENTITY calendar.publish.label "Publier…">
+<!ENTITY calendar.publish.accesskey "P">
+
+<!ENTITY calendar.deletecalendar.label "Supprimer l’agenda sélectionné…">
+<!ENTITY calendar.deletecalendar.accesskey "S">
+<!ENTITY calendar.unsubscribecalendar.label "Se désabonner de l’agenda sélectionné…">
+<!ENTITY calendar.unsubscribecalendar.accesskey "d">
+
+<!-- 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 "Retirer l’agenda sélectionné…">
+<!ENTITY calendar.removecalendar.accesskey "R">
+
+
+<!ENTITY calendar.menu.customize.label "Personnaliser…">
+<!ENTITY calendar.menu.customize.accesskey "l">
+
+<!ENTITY showUnifinderCmd.label "Recherche d’évènements">
+<!ENTITY showUnifinderCmd.accesskey "c">
+<!ENTITY showUnifinderCmd.tooltip "Afficher/Masquer le panneau de recherche d’évènements">
+
+<!ENTITY calendar.displaytodos.checkbox.label "Afficher les tâches dans l’agenda">
+<!ENTITY calendar.displaytodos.checkbox.accesskey "i">
+
+<!ENTITY goTodayCmd.label "Aujourd’hui">
+<!ENTITY goTodayCmd.accesskey "A">
+
+<!ENTITY showCurrentView.label "Vue courante">
+<!ENTITY showCurrentView.accesskey "V">
+
+<!ENTITY calendar.properties.label "Propriétés de l’agenda…">
+<!ENTITY calendar.properties.accesskey "P">
diff --git a/l10n-fr/calendar/chrome/calendar/migration.dtd b/l10n-fr/calendar/chrome/calendar/migration.dtd
new file mode 100644
index 0000000000..9451e97a77
--- /dev/null
+++ b/l10n-fr/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; : Importation des données">
+<!ENTITY migration.welcome "Bienvenue">
+<!ENTITY migration.importing "Importation">
+<!ENTITY migration.list.description "&brandShortName; peut importer des données provenant de plusieurs applications d’agenda. Des données provenant des applications suivantes ont été découvertes sur votre ordinateur. Veuillez sélectionner celles dont vous voulez importer les données.">
+<!ENTITY migration.progress.description "Importation des données sélectionnées en cours">
diff --git a/l10n-fr/calendar/chrome/calendar/migration.properties b/l10n-fr/calendar/chrome/calendar/migration.properties
new file mode 100644
index 0000000000..7963c792e0
--- /dev/null
+++ b/l10n-fr/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 = Migration de %1$S…
+
+# The next two lines are duplicated from migration.dtd until there is branding
+# for lightning
+migrationTitle = %1$S : Importation des données
+migrationDescription=%1$S peut importer des données provenant de plusieurs applications d’agenda. Des données provenant des applications suivantes ont été découvertes sur votre ordinateur. Veuillez sélectionner celles dont vous voulez importer les données.
+finished = Terminé
+disableExtTitle = Extension incompatible détectée
+disableExtText = L’ancienne extension Mozilla Calendar est installée et n’est pas compatible avec Lightning. Elle sera désactivée et %1$S sera redémarré.
diff --git a/l10n-fr/calendar/chrome/calendar/provider-uninstall.dtd b/l10n-fr/calendar/chrome/calendar/provider-uninstall.dtd
new file mode 100644
index 0000000000..17be93487f
--- /dev/null
+++ b/l10n-fr/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 "Désinstallation d’un fournisseur">
+<!ENTITY providerUninstall.accept.label "Se désabonner du fournisseur sélectionné">
+<!ENTITY providerUninstall.accept.accesskey "S">
+<!ENTITY providerUninstall.cancel.label "Conserver le module complémentaire">
+<!ENTITY providerUninstall.cancel.accesskey "C">
+<!ENTITY providerUninstall.preName.label "Vous avez demandé de désinstaller ou de désactiver :">
+<!ENTITY providerUninstall.postName.label "Ceci provoquera la désactivation des agendas ci-dessous.">
+<!ENTITY providerUninstall.reinstallNote.label "Si vous ne prévoyez pas de réinstaller ce fournisseur, vous pouvez choisir de vous désabonner des agendas de celui-ci.">
diff --git a/l10n-fr/calendar/chrome/calendar/timezones.properties b/l10n-fr/calendar/chrome/calendar/timezones.properties
new file mode 100644
index 0000000000..9cb9ee52df
--- /dev/null
+++ b/l10n-fr/calendar/chrome/calendar/timezones.properties
@@ -0,0 +1,489 @@
+# 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/.
+
+pref.timezone.floating=Heure locale
+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=Afrique/Abidjan
+pref.timezone.Africa.Accra=Afrique/Accra
+pref.timezone.Africa.Addis_Ababa=Afrique/Addis-Abeba
+pref.timezone.Africa.Algiers=Afrique/Alger
+pref.timezone.Africa.Asmara=Afrique/Asmara
+pref.timezone.Africa.Bamako=Afrique/Bamako
+pref.timezone.Africa.Bangui=Afrique/Bangui
+pref.timezone.Africa.Banjul=Afrique/Banjul
+pref.timezone.Africa.Bissau=Afrique/Bissau
+pref.timezone.Africa.Blantyre=Afrique/Blantyre
+pref.timezone.Africa.Brazzaville=Afrique/Brazzaville
+pref.timezone.Africa.Bujumbura=Afrique/Bujumbura
+pref.timezone.Africa.Cairo=Afrique/Caire (Le)
+pref.timezone.Africa.Casablanca=Afrique/Casablanca
+pref.timezone.Africa.Ceuta=Afrique/Ceuta
+pref.timezone.Africa.Conakry=Afrique/Conakry
+pref.timezone.Africa.Dakar=Afrique/Dakar
+pref.timezone.Africa.Dar_es_Salaam=Afrique/Dar es-Salaam
+pref.timezone.Africa.Djibouti=Afrique/Djibouti
+pref.timezone.Africa.Douala=Afrique/Douala
+pref.timezone.Africa.El_Aaiun=Afrique/El Aaiun
+pref.timezone.Africa.Freetown=Afrique/Freetown
+pref.timezone.Africa.Gaborone=Afrique/Gaborone
+pref.timezone.Africa.Harare=Afrique/Harare
+pref.timezone.Africa.Johannesburg=Afrique/Johannesbourg
+pref.timezone.Africa.Kampala=Afrique/Kampala
+pref.timezone.Africa.Khartoum=Afrique/Khartoum
+pref.timezone.Africa.Kigali=Afrique/Kigali
+pref.timezone.Africa.Kinshasa=Afrique/Kinshasa
+pref.timezone.Africa.Lagos=Afrique/Lagos
+pref.timezone.Africa.Libreville=Afrique/Libreville
+pref.timezone.Africa.Lome=Afrique/Lome
+pref.timezone.Africa.Luanda=Afrique/Luanda
+pref.timezone.Africa.Lubumbashi=Afrique/Lubumbashi
+pref.timezone.Africa.Lusaka=Afrique/Lusaka
+pref.timezone.Africa.Malabo=Afrique/Malabo
+pref.timezone.Africa.Maputo=Afrique/Maputo
+pref.timezone.Africa.Maseru=Afrique/Maseru
+pref.timezone.Africa.Mbabane=Afrique/Mbabane
+pref.timezone.Africa.Mogadishu=Afrique/Mogadiscio
+pref.timezone.Africa.Monrovia=Afrique/Monrovia
+pref.timezone.Africa.Nairobi=Afrique/Nairobi
+pref.timezone.Africa.Ndjamena=Afrique/Ndjamena
+pref.timezone.Africa.Niamey=Afrique/Niamey
+pref.timezone.Africa.Nouakchott=Afrique/Nouakchott
+pref.timezone.Africa.Ouagadougou=Afrique/Ouagadougou
+pref.timezone.Africa.Porto-Novo=Afrique/Porto Novo
+pref.timezone.Africa.Sao_Tome=Afrique/Sao Tome
+pref.timezone.Africa.Tripoli=Afrique/Tripoli
+pref.timezone.Africa.Tunis=Afrique/Tunis
+pref.timezone.Africa.Windhoek=Afrique/Windhoek
+pref.timezone.America.Adak=Amériques/Adak
+pref.timezone.America.Anchorage=Amériques/Anchorage
+pref.timezone.America.Anguilla=Amériques/Anguilla
+pref.timezone.America.Antigua=Amériques/Antigua
+pref.timezone.America.Araguaina=Amériques/Araguaina
+pref.timezone.America.Argentina.Buenos_Aires=Amériques/Argentine/Buenos Aires
+pref.timezone.America.Argentina.Catamarca=Amériques/Argentine/Catamarca
+pref.timezone.America.Argentina.Cordoba=Amériques/Argentine/Cordoba
+pref.timezone.America.Argentina.Jujuy=Amériques/Argentine/Jujuy
+pref.timezone.America.Argentina.La_Rioja=Amériques/Argentine/La Rioja
+pref.timezone.America.Argentina.Mendoza=Amériques/Argentine/Mendoza
+pref.timezone.America.Argentina.Rio_Gallegos=Amériques/Argentine/Rio Gallegos
+pref.timezone.America.Argentina.San_Juan=Amériques/Argentine/San Juan
+pref.timezone.America.Argentina.Tucuman=Amériques/Argentine/Tucuman
+pref.timezone.America.Argentina.Ushuaia=Amériques/Argentine/Ushuaia
+pref.timezone.America.Aruba=Amériques/Aruba
+pref.timezone.America.Asuncion=Amériques/Asuncion
+pref.timezone.America.Atikokan=Amériques/Atikokan
+pref.timezone.America.Bahia=Amériques/Bahia
+pref.timezone.America.Barbados=Amériques/Barbade (La)
+pref.timezone.America.Belem=Amériques/Belem
+pref.timezone.America.Belize=Amériques/Belize
+pref.timezone.America.Blanc-Sablon=Amériques/Blanc-Sablon
+pref.timezone.America.Boa_Vista=Amériques/Boa Vista
+pref.timezone.America.Bogota=Amériques/Bogota
+pref.timezone.America.Boise=Amériques/Boise
+pref.timezone.America.Cambridge_Bay=Amériques/Cambridge Bay
+pref.timezone.America.Campo_Grande=Amériques/Campo Grande
+pref.timezone.America.Cancun=Amériques/Cancun
+pref.timezone.America.Caracas=Amériques/Caracas
+pref.timezone.America.Cayenne=Amériques/Cayenne
+pref.timezone.America.Cayman=Amériques/Caïman (îles)
+pref.timezone.America.Chicago=Amériques/Chicago
+pref.timezone.America.Chihuahua=Amériques/Chihuahua
+pref.timezone.America.Costa_Rica=Amériques/Costa Rica
+pref.timezone.America.Cuiaba=Amériques/Cuiaba
+pref.timezone.America.Curacao=Amériques/Curacao
+pref.timezone.America.Danmarkshavn=Amériques/Danmarkshavn
+pref.timezone.America.Dawson=Amériques/Dawson
+pref.timezone.America.Dawson_Creek=Amériques/Dawson Creek
+pref.timezone.America.Denver=Amériques/Denver
+pref.timezone.America.Detroit=Amériques/Detroit
+pref.timezone.America.Dominica=Amériques/Dominique (La)
+pref.timezone.America.Edmonton=Amériques/Edmonton
+pref.timezone.America.Eirunepe=Amériques/Eirunepe
+pref.timezone.America.El_Salvador=Amériques/El Salvador
+pref.timezone.America.Fortaleza=Amériques/Fortaleza
+pref.timezone.America.Glace_Bay=Amériques/Glace Bay
+pref.timezone.America.Godthab=Amériques/Godthab
+pref.timezone.America.Goose_Bay=Amériques/Goose Bay
+pref.timezone.America.Grand_Turk=Amériques/Grand Turk
+pref.timezone.America.Grenada=Amériques/Grenade
+pref.timezone.America.Guadeloupe=Amériques/Guadeloupe
+pref.timezone.America.Guatemala=Amériques/Guatemala
+pref.timezone.America.Guayaquil=Amériques/Guayaquil
+pref.timezone.America.Guyana=Amériques/Guyana
+pref.timezone.America.Halifax=Amériques/Halifax
+pref.timezone.America.Havana=Amériques/Havane (La)
+pref.timezone.America.Hermosillo=Amériques/Hermosillo
+pref.timezone.America.Indiana.Indianapolis=Amériques/Indiana/Indianapolis
+pref.timezone.America.Indiana.Knox=Amériques/Indiana/Knox
+pref.timezone.America.Indiana.Marengo=Amériques/Indiana/Marengo
+pref.timezone.America.Indiana.Petersburg=Amériques/Indiana/Petersburg
+pref.timezone.America.Indiana.Vevay=Amériques/Indiana/Vevay
+pref.timezone.America.Indiana.Vincennes=Amériques/Indiana/Vincennes
+pref.timezone.America.Inuvik=Amériques/Inuvik
+pref.timezone.America.Iqaluit=Amériques/Iqaluit
+pref.timezone.America.Jamaica=Amériques/Jamaïque
+pref.timezone.America.Juneau=Amériques/Juneau
+pref.timezone.America.Kentucky.Louisville=Amériques/Kentucky/Louisville
+pref.timezone.America.Kentucky.Monticello=Amériques/Kentucky/Monticello
+pref.timezone.America.La_Paz=Amériques/La Paz
+pref.timezone.America.Lima=Amériques/Lima
+pref.timezone.America.Los_Angeles=Amériques/Los Angeles
+pref.timezone.America.Maceio=Amériques/Maceio
+pref.timezone.America.Managua=Amériques/Managua
+pref.timezone.America.Manaus=Amériques/Manaus
+pref.timezone.America.Martinique=Amériques/Martinique
+pref.timezone.America.Mazatlan=Amériques/Mazatlan
+pref.timezone.America.Menominee=Amériques/Menominee
+pref.timezone.America.Merida=Amériques/Merida
+pref.timezone.America.Mexico_City=Amériques/Mexico City
+pref.timezone.America.Miquelon=Amériques/Miquelon
+pref.timezone.America.Moncton=Amériques/Moncton
+pref.timezone.America.Monterrey=Amériques/Monterrey
+pref.timezone.America.Montevideo=Amériques/Montevideo
+pref.timezone.America.Montreal=Amériques/Montréal
+pref.timezone.America.Montserrat=Amériques/Montserrat
+pref.timezone.America.Nassau=Amériques/Nassau
+pref.timezone.America.New_York=Amériques/New York
+pref.timezone.America.Nipigon=Amériques/Nipigon
+pref.timezone.America.Nome=Amériques/Nome
+pref.timezone.America.Noronha=Amériques/Noronha
+pref.timezone.America.North_Dakota.Center=Amériques/Dakota du Nord/Center
+pref.timezone.America.North_Dakota.New_Salem=Amériques/Dakota du Nord/New Salem
+pref.timezone.America.Panama=Amériques/Panama
+pref.timezone.America.Pangnirtung=Amériques/Pangnirtung
+pref.timezone.America.Paramaribo=Amériques/Paramaribo
+pref.timezone.America.Phoenix=Amériques/Phoenix
+pref.timezone.America.Port-au-Prince=Amériques/Port-au-Prince
+pref.timezone.America.Port_of_Spain=Amériques/Port of Spain
+pref.timezone.America.Porto_Velho=Amériques/Porto Velho
+pref.timezone.America.Puerto_Rico=Amériques/Puerto Rico
+pref.timezone.America.Rainy_River=Amériques/Rainy River
+pref.timezone.America.Rankin_Inlet=Amériques/Rankin Inlet
+pref.timezone.America.Recife=Amériques/Recife
+pref.timezone.America.Regina=Amériques/Regina
+pref.timezone.America.Rio_Branco=Amériques/Rio Branco
+pref.timezone.America.Santiago=Amériques/Santiago
+pref.timezone.America.Santo_Domingo=Amériques/Saint Domingue
+pref.timezone.America.Sao_Paulo=Amériques/Sao Paulo
+pref.timezone.America.Scoresbysund=Amériques/Scoresbysund
+pref.timezone.America.Shiprock=Amériques/Shiprock
+pref.timezone.America.St_Johns=Amériques/St Johns
+pref.timezone.America.St_Kitts=Amériques/St Kitts
+pref.timezone.America.St_Lucia=Amériques/Sainte Lucie
+pref.timezone.America.St_Thomas=Amériques/St Thomas
+pref.timezone.America.St_Vincent=Amériques/St Vincent
+pref.timezone.America.Swift_Current=Amériques/Swif Current
+pref.timezone.America.Tegucigalpa=Amériques/Tegucigalpa
+pref.timezone.America.Thule=Amériques/Thule
+pref.timezone.America.Thunder_Bay=Amériques/Thunder Bay
+pref.timezone.America.Tijuana=Amériques/Tijuana
+pref.timezone.America.Toronto=Amériques/Toronto
+pref.timezone.America.Tortola=Amériques/Tortola
+pref.timezone.America.Vancouver=Amériques/Vancouver
+pref.timezone.America.Whitehorse=Amériques/Whitehorse
+pref.timezone.America.Winnipeg=Amériques/Winnipeg
+pref.timezone.America.Yakutat=Amériques/Yakutat
+pref.timezone.America.Yellowknife=Amériques/Yellowknife
+pref.timezone.Antarctica.Casey=Antarctique/Casey
+pref.timezone.Antarctica.Davis=Antarctique/Davis
+pref.timezone.Antarctica.DumontDUrville=Antarctique/Dumont d’Urville
+pref.timezone.Antarctica.Mawson=Antarctique/Mawson
+pref.timezone.Antarctica.McMurdo=Antarctique/McMurdo
+pref.timezone.Antarctica.Palmer=Antarctique/Palmer
+pref.timezone.Antarctica.Rothera=Antarctique/Rothera
+pref.timezone.Antarctica.South_Pole=Antarctique/Pôle Sud
+pref.timezone.Antarctica.Syowa=Antarctique/Syowa
+pref.timezone.Antarctica.Vostok=Antarctique/Vostok
+pref.timezone.Arctic.Longyearbyen=Arctique/Longyearbyen
+pref.timezone.Asia.Aden=Asie/Aden
+pref.timezone.Asia.Almaty=Asie/Almaty
+pref.timezone.Asia.Amman=Asie/Amman
+pref.timezone.Asia.Anadyr=Asie/Anadyr
+pref.timezone.Asia.Aqtau=Asie/Aqtau
+pref.timezone.Asia.Aqtobe=Asie/Aqtobe
+pref.timezone.Asia.Ashgabat=Asie/Ashgabat
+pref.timezone.Asia.Baghdad=Asie/Bagdad
+pref.timezone.Asia.Bahrain=Asie/Bahreïn
+pref.timezone.Asia.Baku=Asie/Bakou
+pref.timezone.Asia.Bangkok=Asie/Bangkok
+pref.timezone.Asia.Beirut=Asie/Beyrouth
+pref.timezone.Asia.Bishkek=Asie/Bishkek
+pref.timezone.Asia.Brunei=Asie/Brunei
+pref.timezone.Asia.Choibalsan=Asie/Choibalsan
+pref.timezone.Asia.Chongqing=Asie/Chongqing
+pref.timezone.Asia.Colombo=Asie/Colombo
+pref.timezone.Asia.Damascus=Asie/Damas
+pref.timezone.Asia.Dhaka=Asie/Dhaka
+pref.timezone.Asia.Dili=Asie/Dili
+pref.timezone.Asia.Dubai=Asie/Dubaï
+pref.timezone.Asia.Dushanbe=Asie/Dushanbe
+pref.timezone.Asia.Gaza=Asie/Gaza
+pref.timezone.Asia.Harbin=Asie/Harbin
+pref.timezone.Asia.Hong_Kong=Asie/Hong Kong
+pref.timezone.Asia.Hovd=Asie/Hovd
+pref.timezone.Asia.Irkutsk=Asie/Irkutsk
+pref.timezone.Asia.Istanbul=Asie/Istanboul
+pref.timezone.Asia.Jakarta=Asie/Jakarta
+pref.timezone.Asia.Jayapura=Asie/Jayapura
+pref.timezone.Asia.Jerusalem=Asie/Jerusalem
+pref.timezone.Asia.Kabul=Asie/Kaboul
+pref.timezone.Asia.Kamchatka=Asie/Kamchatka
+pref.timezone.Asia.Karachi=Asie/Karachi
+pref.timezone.Asia.Kashgar=Asie/Kashgar
+pref.timezone.Asia.Kathmandu=Asie/Katmandou
+pref.timezone.Asia.Krasnoyarsk=Asie/Krasnoyarsk
+pref.timezone.Asia.Kuala_Lumpur=Asie/Kuala Lumpur
+pref.timezone.Asia.Kuching=Asie/Kuching
+pref.timezone.Asia.Kuwait=Asie/Koweït
+pref.timezone.Asia.Macau=Asie/Macao
+pref.timezone.Asia.Magadan=Asie/Magadan
+pref.timezone.Asia.Makassar=Asie/Makassar
+pref.timezone.Asia.Manila=Asie/Manille
+pref.timezone.Asia.Muscat=Asie/Muscat
+pref.timezone.Asia.Nicosia=Asie/Nicosie
+pref.timezone.Asia.Novosibirsk=Asie/Novosibirsk
+pref.timezone.Asia.Omsk=Asie/Omsk
+pref.timezone.Asia.Oral=Asie/Oral
+pref.timezone.Asia.Phnom_Penh=Asie/Phnom Penh
+pref.timezone.Asia.Pontianak=Asie/Pontianak
+pref.timezone.Asia.Pyongyang=Asie/Pyongyang
+pref.timezone.Asia.Qatar=Asie/Qatar
+pref.timezone.Asia.Qyzylorda=Asie/Qyzylorda
+pref.timezone.Asia.Rangoon=Asie/Rangoon
+pref.timezone.Asia.Riyadh=Asie/Riyadh
+pref.timezone.Asia.Sakhalin=Asie/Sakhaline
+pref.timezone.Asia.Samarkand=Asie/Samarcande
+pref.timezone.Asia.Seoul=Asie/Séoul
+pref.timezone.Asia.Shanghai=Asie/Shanghaï
+pref.timezone.Asia.Singapore=Asie/Singapour
+pref.timezone.Asia.Taipei=Asie/Taïpei
+pref.timezone.Asia.Tashkent=Asie/Tashkent
+pref.timezone.Asia.Tbilisi=Asie/Tbilisi
+pref.timezone.Asia.Tehran=Asie/Téhéran
+pref.timezone.Asia.Thimphu=Asie/Thimphu
+pref.timezone.Asia.Tokyo=Asie/Tokyo
+pref.timezone.Asia.Ulaanbaatar=Asie/Oulan Bator
+pref.timezone.Asia.Urumqi=Asie/Urumqi
+pref.timezone.Asia.Vientiane=Asie/Vientiane
+pref.timezone.Asia.Vladivostok=Asie/Vladivostok
+pref.timezone.Asia.Yakutsk=Asie/Yakutsk
+pref.timezone.Asia.Yekaterinburg=Asie/Yekaterinburg
+pref.timezone.Asia.Yerevan=Asie/Yerevan
+pref.timezone.Atlantic.Azores=Atlantique/Açores
+pref.timezone.Atlantic.Bermuda=Atlantique/Bermudes
+pref.timezone.Atlantic.Canary=Atlantique/Canaries
+pref.timezone.Atlantic.Cape_Verde=Atlantique/Cap Vert
+pref.timezone.Atlantic.Faroe=Atlantique/Feroe
+pref.timezone.Atlantic.Madeira=Atlantique/Madère
+pref.timezone.Atlantic.Reykjavik=Atlantique/Reykjavik
+pref.timezone.Atlantic.South_Georgia=Atlantique/Géorgie du Sud
+pref.timezone.Atlantic.St_Helena=Atlantique/Sainte Hélène
+pref.timezone.Atlantic.Stanley=Atlantique/Stanley
+pref.timezone.Australia.Adelaide=Australie/Adélaïde
+pref.timezone.Australia.Brisbane=Australie/Brisbane
+pref.timezone.Australia.Broken_Hill=Australie/Broken Hill
+pref.timezone.Australia.Currie=Australie/Currie
+pref.timezone.Australia.Darwin=Australie/Darwin
+pref.timezone.Australia.Eucla=Australie/Eucla
+pref.timezone.Australia.Hobart=Australie/Hobart
+pref.timezone.Australia.Lindeman=Australie/Lindeman
+pref.timezone.Australia.Lord_Howe=Australie/Lord Howe
+pref.timezone.Australia.Melbourne=Australie/Melbourne
+pref.timezone.Australia.Perth=Australie/Perth
+pref.timezone.Australia.Sydney=Australie/Sydney
+pref.timezone.Europe.Amsterdam=Europe/Amsterdam
+pref.timezone.Europe.Andorra=Europe/Andorre
+pref.timezone.Europe.Athens=Europe/Athènes
+pref.timezone.Europe.Belgrade=Europe/Belgrade
+pref.timezone.Europe.Berlin=Europe/Berlin
+pref.timezone.Europe.Bratislava=Europe/Bratislava
+pref.timezone.Europe.Brussels=Europe/Bruxelles
+pref.timezone.Europe.Bucharest=Europe/Bucarest
+pref.timezone.Europe.Budapest=Europe/Budapest
+pref.timezone.Europe.Chisinau=Europe/Chisinau
+pref.timezone.Europe.Copenhagen=Europe/Copenhague
+pref.timezone.Europe.Dublin=Europe/Dublin
+pref.timezone.Europe.Gibraltar=Europe/Gibraltar
+pref.timezone.Europe.Guernsey=Europe/Guernesey
+pref.timezone.Europe.Helsinki=Europe/Helsinki
+pref.timezone.Europe.Isle_of_Man=Europe/Man (île de)
+pref.timezone.Europe.Istanbul=Europe/Istanboul
+pref.timezone.Europe.Jersey=Europe/Jersey
+pref.timezone.Europe.Kaliningrad=Europe/Kaliningrad
+pref.timezone.Europe.Kiev=Europe/Kiev
+pref.timezone.Europe.Lisbon=Europe/Lisbonne
+pref.timezone.Europe.Ljubljana=Europe/Ljubljana
+pref.timezone.Europe.London=Europe/Londres
+pref.timezone.Europe.Luxembourg=Europe/Luxembourg
+pref.timezone.Europe.Madrid=Europe/Madrid
+pref.timezone.Europe.Malta=Europe/Malte
+pref.timezone.Europe.Mariehamn=Europe/Mariehamn
+pref.timezone.Europe.Minsk=Europe/Minsk
+pref.timezone.Europe.Monaco=Europe/Monaco
+pref.timezone.Europe.Moscow=Europe/Moscou
+pref.timezone.Europe.Nicosia=Europe/Nicosie
+pref.timezone.Europe.Oslo=Europe/Oslo
+pref.timezone.Europe.Paris=Europe/Paris
+pref.timezone.Europe.Podgorica=Europe/Podgorica
+pref.timezone.Europe.Prague=Europe/Prague
+pref.timezone.Europe.Riga=Europe/Riga
+pref.timezone.Europe.Rome=Europe/Rome
+pref.timezone.Europe.Samara=Europe/Samara
+pref.timezone.Europe.San_Marino=Europe/San Marin
+pref.timezone.Europe.Sarajevo=Europe/Sarajevo
+pref.timezone.Europe.Simferopol=Europe/Simferopol
+pref.timezone.Europe.Skopje=Europe/Skopje
+pref.timezone.Europe.Sofia=Europe/Sofia
+pref.timezone.Europe.Stockholm=Europe/Stockholm
+pref.timezone.Europe.Tallinn=Europe/Tallinn
+pref.timezone.Europe.Tirane=Europe/Tirane
+pref.timezone.Europe.Uzhgorod=Europe/Uzhgorod
+pref.timezone.Europe.Vaduz=Europe/Vaduz
+pref.timezone.Europe.Vatican=Europe/Vatican
+pref.timezone.Europe.Vienna=Europe/Vienne
+pref.timezone.Europe.Vilnius=Europe/Vilnius
+pref.timezone.Europe.Volgograd=Europe/Volgograd
+pref.timezone.Europe.Warsaw=Europe/Varsovie
+pref.timezone.Europe.Zagreb=Europe/Zagreb
+pref.timezone.Europe.Zaporozhye=Europe/Zaporozhye
+pref.timezone.Europe.Zurich=Europe/Zurich
+pref.timezone.Indian.Antananarivo=Océan Indien/Antananarivo
+pref.timezone.Indian.Chagos=Océan Indien/Chagos
+pref.timezone.Indian.Christmas=Océan Indien/Christmas
+pref.timezone.Indian.Cocos=Océan Indien/Cocos
+pref.timezone.Indian.Comoro=Océan Indien/Comores (Les)
+pref.timezone.Indian.Kerguelen=Océan Indien/Kerguelen
+pref.timezone.Indian.Mahe=Océan Indien/Mahe
+pref.timezone.Indian.Maldives=Océan Indien/Maldives (Les)
+pref.timezone.Indian.Mauritius=Océan Indien/Maurice (île)
+pref.timezone.Indian.Mayotte=Océan Indien/Mayotte
+pref.timezone.Indian.Reunion=Océan Indien/Réunion (La)
+pref.timezone.Pacific.Apia=Pacifique/Apia
+pref.timezone.Pacific.Auckland=Pacifique/Auckland
+pref.timezone.Pacific.Chatham=Pacifique/Chatham
+pref.timezone.Pacific.Easter=Pacifique/Easter
+pref.timezone.Pacific.Efate=Pacifique/Efate
+pref.timezone.Pacific.Enderbury=Pacifique/Enderbury
+pref.timezone.Pacific.Fakaofo=Pacifique/Fakaofo
+pref.timezone.Pacific.Fiji=Pacifique/Fiji
+pref.timezone.Pacific.Funafuti=Pacifique/Funafuti
+pref.timezone.Pacific.Galapagos=Pacifique/Galapagos
+pref.timezone.Pacific.Gambier=Pacifique/Gambier
+pref.timezone.Pacific.Guadalcanal=Pacifique/Guadalcanal
+pref.timezone.Pacific.Guam=Pacifique/Guam
+pref.timezone.Pacific.Honolulu=Pacifique/Honolulu
+pref.timezone.Pacific.Johnston=Pacifique/Johnston
+pref.timezone.Pacific.Kiritimati=Pacifique/Kiritimati
+pref.timezone.Pacific.Kosrae=Pacifique/Kosrae
+pref.timezone.Pacific.Kwajalein=Pacifique/Kwajalein
+pref.timezone.Pacific.Majuro=Pacifique/Majuro
+pref.timezone.Pacific.Marquesas=Pacifique/Marquesas
+pref.timezone.Pacific.Midway=Pacifique/Midway
+pref.timezone.Pacific.Nauru=Pacifique/Nauru
+pref.timezone.Pacific.Niue=Pacifique/Niue
+pref.timezone.Pacific.Norfolk=Pacifique/Norfolk
+pref.timezone.Pacific.Noumea=Pacifique/Noumea
+pref.timezone.Pacific.Pago_Pago=Pacifique/Pago Pago
+pref.timezone.Pacific.Palau=Pacifique/Palau
+pref.timezone.Pacific.Pitcairn=Pacifique/Pitcairn
+pref.timezone.Pacific.Ponape=Pacifique/Ponape
+pref.timezone.Pacific.Port_Moresby=Pacifique/Port Moresby
+pref.timezone.Pacific.Rarotonga=Pacifique/Rarotonga
+pref.timezone.Pacific.Saipan=Pacifique/Saipan
+pref.timezone.Pacific.Tahiti=Pacifique/Tahiti
+pref.timezone.Pacific.Tarawa=Pacifique/Tarawa
+pref.timezone.Pacific.Tongatapu=Pacifique/Tongatapu
+pref.timezone.Pacific.Truk=Pacifique/Truk
+pref.timezone.Pacific.Wake=Pacifique/Wake
+pref.timezone.Pacific.Wallis=Pacifique/Wallis
+
+# the following have been missing
+pref.timezone.America.Indiana.Tell_City=Amériques/Indiana/Tell City
+pref.timezone.America.Indiana.Winamac=Amériques/Indiana/Winamac
+pref.timezone.America.Marigot=Amériques/Marigot
+pref.timezone.America.Resolute=Amériques/Resolute
+pref.timezone.America.St_Barthelemy=Amériques/Saint Barthélémy
+
+# added with 2008d:
+pref.timezone.America.Argentina.San_Luis=Amériques/Argentine/San Luis
+pref.timezone.America.Santarem=Amériques/Santarem
+pref.timezone.Asia.Ho_Chi_Minh=Asie/Hô-Chi-Minh-Ville
+pref.timezone.Asia.Kolkata=Asie/Calcutta
+
+# added with 2008i:
+pref.timezone.America.Argentina.Salta=Amériques/Argentine/Salta
+
+# added with 2010i
+pref.timezone.America.Matamoros=Amériques/Matamoros
+pref.timezone.America.Ojinaga=Amériques/Ojinaga
+pref.timezone.America.Santa_Isabel=Amériques/Santa Isabel
+pref.timezone.Antarctica.Macquarie=Antarctique/Macquarie
+pref.timezone.Asia.Novokuznetsk=Asie/Novokouznetsk
+
+#added with 2011b
+pref.timezone.America.Bahia_Banderas=Amériques/Bahia Banderas
+pref.timezone.America.North_Dakota.Beulah=Amériques/Dakota du Nord/Beulah
+pref.timezone.Pacific.Chuuk=Pacifique/Chuuk
+pref.timezone.Pacific.Pohnpei=Pacifique/Pohnpei
+
+#added with 2011n
+pref.timezone.Africa.Juba=Afrique/Djouba
+pref.timezone.America.Kralendijk=Amériques/Kralendijk
+pref.timezone.America.Lower_Princes=Amériques/Lower Princes
+pref.timezone.America.Metlakatla=Amériques/Metlakatla
+pref.timezone.America.Sitka=Amériques/Sitka
+pref.timezone.Asia.Hebron=Asie/Hébron
+
+#added with 2013a
+pref.timezone.America.Creston=Amériques/Creston
+pref.timezone.Asia.Khandyga=Asie/Khandyga
+pref.timezone.Asia.Ust-Nera=Asie/Ust-Nera
+pref.timezone.Europe.Busingen=Europe/Busingen
+
+#added with 2014b
+pref.timezone.Antarctica.Troll=Antarctique/Troll
+
+#added with 2014j
+pref.timezone.Asia.Chita=Asie/Chita
+pref.timezone.Asia.Srednekolymsk=Asie/Srednekolymsk
+pref.timezone.Pacific.Bougainville=Pacifique/Bougainville
+
+#added with 2.2015g
+pref.timezone.America.Fort_Nelson=Amériques/Fort Nelson
+
+#added with 2.2016b
+pref.timezone.Europe.Ulyanovsk=Europe/Ulyanovsk
+pref.timezone.Europe.Astrakhan=Europe/Astrakhan
+pref.timezone.Asia.Barnaul=Asie/Barnaul
+
+#added with 2.2016i
+pref.timezone.Asia.Yangon=Asie/Yangon
+pref.timezone.Asia.Tomsk=Asie/Tomsk
+pref.timezone.Asia.Famagusta=Asie/Famagusta
+pref.timezone.Europe.Kirov=Europe/Kirov
+
+#added with 2.2016j
+pref.timezone.Europe.Saratov=Europe/Saratov
+pref.timezone.Asia.Atyrau=Asie/Atyrau
+
+#added with 2.2017b
+pref.timezone.America.Punta_Arenas=Amériques/Punta Arenas
+
+#added with 2.2018i
+pref.timezone.Asia.Qostanay=Asie/Kostanaï
+
+#added with 2.2020a
+pref.timezone.America.Nuuk=Amériques/Nuuk
+
+#added with 2.2021c
+pref.timezone.Pacific.Kanton=Pacifique/Canton
+
+#added with 2.2022b
+pref.timezone.Europe.Kyiv=Europe/Kyiv
diff --git a/l10n-fr/calendar/chrome/lightning/lightning-toolbar.dtd b/l10n-fr/calendar/chrome/lightning/lightning-toolbar.dtd
new file mode 100644
index 0000000000..9053ca1a5e
--- /dev/null
+++ b/l10n-fr/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 "Barre d’outils d’agenda">
+<!ENTITY lightning.toolbar.calendar.name.accesskey "a">
+<!ENTITY lightning.toolbar.task.name "Barre d’outils des tâches">
+<!ENTITY lightning.toolbar.task.name.accesskey "t">
+
+<!ENTITY lightning.toolbar.sync.label "Synchroniser">
+<!ENTITY lightning.toolbar.sync.tooltip "Actualiser les agendas et synchroniser les changements">
+<!ENTITY lightning.toolbar.delete.label "Supprimer">
+<!ENTITY lightning.toolbar.delete.tooltip "Supprimer les tâches ou évènements sélectionnés">
+<!ENTITY lightning.toolbar.edit.label "Modifier">
+<!ENTITY lightning.toolbar.edit.tooltip "Modifier la tâche ou l’évènement sélectionné">
+<!ENTITY lightning.toolbar.gototoday.label "Aujourd’hui">
+<!ENTITY lightning.toolbar.gototoday.tooltip "Aller à la date d’aujourd’hui">
+<!ENTITY lightning.toolbar.print.label "Imprimer">
+<!ENTITY lightning.toolbar.print.tooltip "Imprimer des tâches ou des évènements">
+
+<!-- Mode Toolbar -->
+<!ENTITY lightning.toolbar.calendar.label "Agenda">
+<!ENTITY lightning.toolbar.calendar.tooltip "Aller à l’onglet d’agenda">
+<!ENTITY lightning.toolbar.calendar.accesskey "A">
+<!ENTITY lightning.toolbar.task.label "Tâches">
+<!ENTITY lightning.toolbar.task.tooltip "Aller à l’onglet des tâches">
+<!ENTITY lightning.toolbar.task.accesskey "T">
+
+<!-- Toolbar write button -->
+<!ENTITY lightning.toolbar.newevent.label "Évènement">
+<!ENTITY lightning.toolbar.newevent.tooltip "Créer un nouvel évènement">
+<!ENTITY lightning.toolbar.newtask.label "Tâche">
+<!ENTITY lightning.toolbar.newtask.tooltip "Créer une nouvelle tâche">
+
+<!-- Calendar and Task Mode Toolbar -->
+<!ENTITY lightning.toolbar.day.label "Journée">
+<!ENTITY lightning.toolbar.day.accesskey "J">
+<!ENTITY lightning.toolbar.week.label "Semaine">
+<!ENTITY lightning.toolbar.week.accesskey "S">
+<!ENTITY lightning.toolbar.multiweek.label "Multisemaine">
+<!ENTITY lightning.toolbar.multiweek.accesskey "a">
+<!ENTITY lightning.toolbar.month.label "Mois">
+<!ENTITY lightning.toolbar.month.accesskey "M">
+<!-- LOCALIZATION NOTE: the same as appmenuButton.label and appmenuButton1.tooltip
+ from messenger.dtd -->
+<!ENTITY lightning.toolbar.appmenuButton.label "Menu de l’application">
+<!ENTITY lightning.toolbar.appmenuButton1.tooltip "Afficher le menu de &brandShortName;">
+<!ENTITY lightning.toolbar.calendarmenu.label "Panneau d’agenda">
+<!ENTITY lightning.toolbar.calendarmenu.accesskey "P">
+<!ENTITY lightning.toolbar.calendarpane.label "Afficher le panneau d’agenda">
+<!ENTITY lightning.toolbar.calendarpane.accesskey "P">
diff --git a/l10n-fr/calendar/chrome/lightning/lightning.dtd b/l10n-fr/calendar/chrome/lightning/lightning.dtd
new file mode 100644
index 0000000000..c61cc5e559
--- /dev/null
+++ b/l10n-fr/calendar/chrome/lightning/lightning.dtd
@@ -0,0 +1,114 @@
+<!-- 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 "Agenda">
+
+<!-- New menu popup in File menu -->
+<!ENTITY lightning.menupopup.new.event.label "Évènement…">
+<!ENTITY lightning.menupopup.new.event.accesskey "v">
+<!ENTITY lightning.menupopup.new.task.label "Tâche…">
+<!ENTITY lightning.menupopup.new.task.accesskey "T">
+<!ENTITY lightning.menupopup.new.calendar.label "Agenda…">
+<!ENTITY lightning.menupopup.new.calendar.accesskey "A">
+
+<!-- Open menu popup in File menu -->
+<!ENTITY lightning.menupopup.open.calendar.label "Fichier d’agenda…">
+<!ENTITY lightning.menupopup.open.calendar.accesskey "F">
+
+<!-- View Menu -->
+<!ENTITY lightning.menu.view.calendar.label "Agenda">
+<!ENTITY lightning.menu.view.calendar.accesskey "d">
+<!ENTITY lightning.menu.view.tasks.label "Tâches">
+<!ENTITY lightning.menu.view.tasks.accesskey "T">
+
+<!-- Events and Tasks menu -->
+<!ENTITY lightning.menu.eventtask.label "Évènements et tâches">
+<!ENTITY lightning.menu.eventtask.accesskey "v">
+
+<!-- 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 "Adresse électronique :">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.label "Choisir la planification des courriels côté 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 "Pour l’instant, vous ne pouvez l’activer qu’après avoir configuré cet agenda via sa boîte de dialogue de propriétés, si le serveur d’agenda prend en charge la planification.">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.tooltiptext2 "Cette option est uniquement disponible si le serveur d’agenda gère la planification. L’activation permettra de revenir à la planification par courrier électronique standard au lieu de la laisser au serveur.">
+
+<!-- The notifications settings in the properties dialog -->
+<!ENTITY lightning.calendarproperties.notifications.label "Notifications">
+<!ENTITY lightning.calendarproperties.globalNotifications.label "Préférences globales de notification…">
+
+<!-- iMIP Bar (meeting support) -->
+<!ENTITY lightning.imipbar.btnAccept.label "Accepter">
+<!ENTITY lightning.imipbar.btnAccept2.tooltiptext "Accepter l’invitation à l’évènement">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences.label "Tout accepter">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences2.tooltiptext "Accepter les invitations pour toutes les occurrences de cet évènement">
+<!ENTITY lightning.imipbar.btnAdd.label "Ajouter">
+<!ENTITY lightning.imipbar.btnAdd.tooltiptext "Ajouter l’évènement à l’agenda.">
+<!ENTITY lightning.imipbar.btnDecline.label "Refuser">
+<!ENTITY lightning.imipbar.btnDecline2.tooltiptext "Refuser l’invitation à l’évènement">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences.label "Tout refuser">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences2.tooltiptext "Refuser les invitations pour toutes les occurrences de cet évènement">
+<!ENTITY lightning.imipbar.btnDeclineCounter.label "Décliner">
+<!ENTITY lightning.imipbar.btnDeclineCounter.tooltiptext "Décliner la contre-proposition">
+<!ENTITY lightning.imipbar.btnDelete.label "Supprimer">
+<!ENTITY lightning.imipbar.btnDelete.tooltiptext "Supprimer de l’agenda">
+<!ENTITY lightning.imipbar.btnDetails.label "Détails…">
+<!ENTITY lightning.imipbar.btnDetails.tooltiptext "Afficher les détails de l’évènement">
+<!ENTITY lightning.imipbar.btnDoNotShowImipBar.label "Ne pas afficher ces messages">
+<!ENTITY lightning.imipbar.btnGoToCalendar.label "Agenda">
+<!ENTITY lightning.imipbar.btnGoToCalendar.tooltiptext "Aller à l’onglet de l’agenda">
+<!ENTITY lightning.imipbar.btnMore.label "Plus">
+<!ENTITY lightning.imipbar.btnMore.tooltiptext "Cliquer pour afficher plus d’options">
+<!ENTITY lightning.imipbar.btnReconfirm2.label "Reconfirmer">
+<!ENTITY lightning.imipbar.btnReconfirm.tooltiptext "Envoyer une reconfirmation à l’organisateur">
+<!ENTITY lightning.imipbar.btnReschedule.label "Reprogrammer">
+<!ENTITY lightning.imipbar.btnReschedule.tooltiptext "Reprogrammer l’évènement">
+<!ENTITY lightning.imipbar.btnSaveCopy.label "Enregistrer une copie">
+<!ENTITY lightning.imipbar.btnSaveCopy.tooltiptext "Enregistre une copie de l’évènement dans l’agenda indépendamment de la réponse faite à l’organisateur. La liste des invités sera effacée.">
+<!ENTITY lightning.imipbar.btnTentative.label "Accepter provisoirement">
+<!ENTITY lightning.imipbar.btnTentative2.tooltiptext "Accepter provisoirement l’invitation à l’évènement">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences.label "Tout accepter provisoirement">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences2.tooltiptext "Accepter provisoirement les invitations pour toutes les occurrences de cet évènement">
+<!ENTITY lightning.imipbar.btnUpdate.label "Mettre à jour">
+<!ENTITY lightning.imipbar.btnUpdate.tooltiptext "Mettre à jour l’évènement dans l’agenda">
+<!ENTITY lightning.imipbar.description "Ce message contient une invitation à un évènement.">
+
+<!ENTITY lightning.imipbar.btnSend.label "Envoyer une réponse immédiatement">
+<!ENTITY lightning.imipbar.btnSend.tooltiptext "Envoyer une réponse à l’organisateur">
+<!ENTITY lightning.imipbar.btnSendSeries.tooltiptext "Envoyer une réponse à l’organisateur pour toute la série">
+<!ENTITY lightning.imipbar.btnDontSend.label "Ne pas envoyer de réponse">
+<!ENTITY lightning.imipbar.btnDontSend.tooltiptext "Changer votre statut de participation sans envoyer de réponse à l’organisateur">
+<!ENTITY lightning.imipbar.btnDontSendSeries.tooltiptext "Changer votre statut de participation pour la série sans envoyer de réponse à l’organisateur">
+
+<!-- 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 "Créer un nouvel agenda">
+
+<!-- today-pane-specific -->
+<!ENTITY todaypane.showMinimonth.label "Afficher le « Mois réduit »">
+<!ENTITY todaypane.showMinimonth.accesskey "M">
+<!ENTITY todaypane.showMiniday.label "Afficher le « Jour réduit »">
+<!ENTITY todaypane.showMiniday.accesskey "J">
+<!ENTITY todaypane.showNone.label "Ne rien afficher">
+<!ENTITY todaypane.showNone.accesskey "N">
+<!ENTITY todaypane.showTodayPane.label "Afficher le panneau « Aujourd’hui »">
+<!ENTITY todaypane.showTodayPane.accesskey "A">
+<!ENTITY todaypane.statusButton.label "Panneau « Aujourd’hui »">
diff --git a/l10n-fr/calendar/chrome/lightning/lightning.properties b/l10n-fr/calendar/chrome/lightning/lightning.properties
new file mode 100644
index 0000000000..c051de364d
--- /dev/null
+++ b/l10n-fr/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=Un agenda intégré pour Thunderbird
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator=Projet Mozilla Calendar
+
+# Lightning branding
+brandShortName=Lightning
+
+# Task mode title
+taskModeApplicationTitle=Tâches
+
+# Tab titles
+tabTitleCalendar=Agenda
+tabTitleTasks=Tâches
+
+# Html event display in message
+imipHtml.header=Invitation à un évènement
+imipHtml.summary=Titre :
+imipHtml.location=Lieu :
+imipHtml.when=Quand :
+imipHtml.organizer=Organisateur :
+imipHtml.description=Description :
+# LOCALIZATION_NOTE(imipHtml.attachments): This is a label for one or more (additional) links to
+# documents or websites attached to this event.
+imipHtml.attachments=Pièces jointes :
+imipHtml.comment=Commentaire :
+imipHtml.attendees=Participants :
+# 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=Lien connexe :
+imipHtml.canceledOccurrences=Occurrences annulées :
+imipHtml.modifiedOccurrences=Occurrences modifiées :
+imipHtml.newLocation=Nouveau lieu : %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=(délégué par %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=(délégué à %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 organise l’évènement.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.NON-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.NON-PARTICIPANT=%1$S ne participe pas.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.OPT-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.OPT-PARTICIPANT=%1$S est un participant facultatif.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.REQ-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.REQ-PARTICIPANT=%1$S est un participant indispensable.
+
+# 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 a confirmé sa participation.
+# 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 a indiqué ne pas souhaiter participer.
+# 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 a délégué sa participation à %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 doit encore répondre.
+# 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 a confirmé sa participation de façon provisoire.
+
+# 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 (groupe)
+# 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 (ressource)
+# 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 (salle)
+# 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=L’évènement a été ajouté à votre agenda.
+imipCanceledItem2=L’évènement a été supprimé de votre agenda.
+imipUpdatedItem2=L’évènement a été mis à jour.
+imipBarCancelText=Ce message contient une annulation d’évènement.
+imipBarCounterErrorText=Ce message contient une contre-proposition à une invitation qui ne peut pas être traitée.
+imipBarCounterPreviousVersionText=Ce message contient une contre-proposition pour une version précédente d’une invitation.
+imipBarCounterText=Ce message contient une contre-proposition pour une invitation.
+imipBarDisallowedCounterText=Ce message contient une contre-proposition, même si vous n’avez pas autorisé les contre-propositions.
+imipBarDeclineCounterText=Ce message contient une réponse à votre contre-proposition.
+imipBarRefreshText=Ce message demande la mise à jour d’un évènement.
+imipBarPublishText=Ce message contient un évènement.
+imipBarRequestText=Ce message contient une invitation.
+imipBarSentText=Ce message contient un évènement envoyé.
+imipBarSentButRemovedText=Ce message contient un évènement envoyé qui ne se trouve plus dans votre agenda.
+imipBarUpdateText=Ce message contient une mise à jour pour un évènement existant.
+imipBarUpdateMultipleText=Ce message contient une mise à jour pour plusieurs évènements existants.
+imipBarUpdateSeriesText=Ce message contient une mise à jour pour un ensemble d’évènements existant.
+imipBarAlreadyProcessedText=Ce message contient un évènement qui a déjà été traité.
+imipBarProcessedNeedsAction=Ce message contient un évènement auquel vous n’avez pas encore répondu.
+imipBarProcessedMultipleNeedsAction=Ce message contient plusieurs évènements auxquels vous n’avez pas encore répondu.
+imipBarProcessedSeriesNeedsAction=Ce message contient une série d’évènements auxquels vous n’avez pas encore répondu.
+imipBarReplyText=Ce message contient une réponse à une invitation.
+imipBarReplyToNotExistingItem=Ce message contient une réponse faisant référence à un évènement qui ne se trouve pas dans votre agenda.
+# LOCALIZATION_NOTE(imipBarReplyToRecentlyRemovedItem):
+# %1$S - datetime of deletion
+imipBarReplyToRecentlyRemovedItem=Ce message contient une réponse faisant référence à un évènement qui a été retiré de votre agenda le %1$S.
+imipBarUnsupportedText=Ce message contient un évènement que cette version de Lightning ne peut pas traiter.
+imipBarUnsupportedText2=Ce message contient un évènement que cette version de %1$S ne peut pas traiter.
+imipBarProcessingFailed=Le traitement du message a échoué. État : %1$S.
+imipBarCalendarDeactivated=Ce message contient des informations sur un évènement. Autorisez un agenda à le gérer.
+imipBarNotWritable=Aucun agenda disponible à l’écriture n’est configuré pour les invitations, veuillez vérifier les propriétés de l’agenda.
+imipSendMail.title=Notification par courrier électronique
+imipSendMail.text=Voulez-vous envoyer un message de notification maintenant ?
+imipNoIdentity=Aucun
+imipNoCalendarAvailable=Aucun agenda n’est disponible à l’écriture.
+
+itipReplySubject2=Réponse à l’invitation : %1$S
+itipReplyBodyAccept=%1$S a accepté votre invitation.
+itipReplyBodyDecline=%1$S a refusé votre invitation.
+itipReplySubjectAccept2=Acceptée : %1$S
+itipReplySubjectDecline2=Invitation refusée : %1$S
+itipReplySubjectTentative2=Proposée : %1$S
+itipRequestSubject2=Invitation : %1$S
+itipRequestUpdatedSubject2=Mise à jour : %1$S
+itipRequestBody=%1$S vous a invité à « %2$S »
+itipCancelSubject2=Annulée : %1$S
+itipCancelBody=%1$S a annulé cet évènement : « %2$S »
+itipCounterBody=%1$S a fait une contre-proposition pour « %2$S » :
+itipDeclineCounterBody=%1$S a décliné votre contre-proposition pour « %2$S ».
+itipDeclineCounterSubject=Contre-proposition déclinée : %1$S
+
+confirmProcessInvitation=Vous avez récemment supprimé cet élément, voulez-vous vraiment envoyer cette invitation ?
+confirmProcessInvitationTitle=Envoyer l’invitation ?
+
+invitationsLink.label=Invitations : %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=Le composant binaire nécessaire pour %1$S ne peut pas être chargé, probablement en raison d’une mauvaise combinaison de versions. %1$S %2$S est installé, mais vous devriez utiliser une version 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=Le composant binaire nécessaire pour %1$S ne peut pas être chargé, probablement en raison d’une mauvaise combinaison de versions. Vous utilisez %2$S %3$S avec %1$S %4$S. Veuillez consulter https://developer.mozilla.org/en/Calendar/Calendar_Versions pour plus d’informations.
+
+# 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=Version %1$S incorrecte
+
+# LOCALIZATION NOTE(noIdentitySelectedNotification):
+noIdentitySelectedNotification=Si vous souhaitez utiliser cet agenda afin d’enregistrer des invitations reçues ou envoyées, vous devez lui associer une adresse électronique ci-dessous.
diff --git a/l10n-fr/calendar/lightning-l10n.js b/l10n-fr/calendar/lightning-l10n.js
new file mode 100644
index 0000000000..f079b63a9d
--- /dev/null
+++ b/l10n-fr/calendar/lightning-l10n.js
@@ -0,0 +1,23 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+#filter substitution
+
+# the default day to start the week on
+#0=Sunday 1=Monday 2=Tuesday 3=Wednesday 4=Thursday 5=Friday 6=Saturday
+pref("calendar.week.start", 1);
+
+# default days off (not in work week)
+pref("calendar.week.d0sundaysoff", true);
+pref("calendar.week.d1mondaysoff", false);
+pref("calendar.week.d2tuesdaysoff", false);
+pref("calendar.week.d3wednesdaysoff", false);
+pref("calendar.week.d4thursdaysoff", false);
+pref("calendar.week.d5fridaysoff", false);
+pref("calendar.week.d6saturdaysoff", true);
+
+pref("general.useragent.locale", "@AB_CD@");
+
+# categories
+pref("calendar.categories.names", "Anniversaire,Affaire,Appels,Cadeaux,Clients,Compétitions,Congés,Congrès,Consommation,Divers,Fournisseurs,Idées,Jour férié,Personnel,Préférés,Problèmes,Professionnel,Projets,Réunion,Suivis,Voyages");