summaryrefslogtreecommitdiffstats
path: root/l10n-fi/calendar
diff options
context:
space:
mode:
Diffstat (limited to 'l10n-fi/calendar')
-rw-r--r--l10n-fi/calendar/README.txt2
-rw-r--r--l10n-fi/calendar/calendar/calendar-context-menus.ftl7
-rw-r--r--l10n-fi/calendar/calendar/calendar-delete-prompt.ftl35
-rw-r--r--l10n-fi/calendar/calendar/calendar-editable-item.ftl30
-rw-r--r--l10n-fi/calendar/calendar/calendar-event-dialog-reminder.ftl10
-rw-r--r--l10n-fi/calendar/calendar/calendar-ics-file-dialog.ftl45
-rw-r--r--l10n-fi/calendar/calendar/calendar-invitation-panel.ftl54
-rw-r--r--l10n-fi/calendar/calendar/calendar-invitations-dialog.ftl10
-rw-r--r--l10n-fi/calendar/calendar/calendar-itip-identity-dialog.ftl8
-rw-r--r--l10n-fi/calendar/calendar/calendar-print.ftl17
-rw-r--r--l10n-fi/calendar/calendar/calendar-summary-dialog.ftl15
-rw-r--r--l10n-fi/calendar/calendar/calendar-uri-redirect-dialog.ftl11
-rw-r--r--l10n-fi/calendar/calendar/calendar-widgets.ftl9
-rw-r--r--l10n-fi/calendar/calendar/category-dialog.ftl7
-rw-r--r--l10n-fi/calendar/calendar/preferences.ftl192
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-alarms.properties39
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-event-dialog-attendees.properties15
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-event-dialog.dtd428
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-event-dialog.properties541
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-extract.properties294
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-invitations-dialog.dtd19
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-invitations-dialog.properties10
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd7
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.properties63
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar.dtd407
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendar.properties809
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendarCreation.dtd51
-rw-r--r--l10n-fi/calendar/chrome/calendar/calendarCreation.properties6
-rw-r--r--l10n-fi/calendar/chrome/calendar/categories.properties7
-rw-r--r--l10n-fi/calendar/chrome/calendar/dateFormat.properties146
-rw-r--r--l10n-fi/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd19
-rw-r--r--l10n-fi/calendar/chrome/calendar/global.dtd54
-rw-r--r--l10n-fi/calendar/chrome/calendar/menuOverlay.dtd50
-rw-r--r--l10n-fi/calendar/chrome/calendar/migration.dtd9
-rw-r--r--l10n-fi/calendar/chrome/calendar/migration.properties13
-rw-r--r--l10n-fi/calendar/chrome/calendar/provider-uninstall.dtd12
-rw-r--r--l10n-fi/calendar/chrome/calendar/timezones.properties489
-rw-r--r--l10n-fi/calendar/chrome/lightning/lightning-toolbar.dtd51
-rw-r--r--l10n-fi/calendar/chrome/lightning/lightning.dtd114
-rw-r--r--l10n-fi/calendar/chrome/lightning/lightning.properties201
-rw-r--r--l10n-fi/calendar/lightning-l10n.js23
41 files changed, 4329 insertions, 0 deletions
diff --git a/l10n-fi/calendar/README.txt b/l10n-fi/calendar/README.txt
new file mode 100644
index 0000000000..3a09975973
--- /dev/null
+++ b/l10n-fi/calendar/README.txt
@@ -0,0 +1,2 @@
+Ohjeita asentamiseen, käyttämiseen ja muokkaamiseen voit kysellä
+keskustelualueelta osoitteesta http://www.mozilla.fi/keskustelu.
diff --git a/l10n-fi/calendar/calendar/calendar-context-menus.ftl b/l10n-fi/calendar/calendar/calendar-context-menus.ftl
new file mode 100644
index 0000000000..7c41a66df2
--- /dev/null
+++ b/l10n-fi/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 = Muokkaa
+ .accesskey = M
diff --git a/l10n-fi/calendar/calendar/calendar-delete-prompt.ftl b/l10n-fi/calendar/calendar/calendar-delete-prompt.ftl
new file mode 100644
index 0000000000..a6cd950a69
--- /dev/null
+++ b/l10n-fi/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] Poista tapahtuma
+ *[other] Poista tapahtumat
+ }
+calendar-delete-event-prompt-message =
+ { $count ->
+ [one] Haluatko varmasti poistaa tämän tapahtuman?
+ *[other] Haluatko varmasti poistaa nämä { $count } tapahtumaa?
+ }
+calendar-delete-task-prompt-title =
+ { $count ->
+ [one] Poista tehtävä
+ *[other] Poista tehtävät
+ }
+calendar-delete-task-prompt-message =
+ { $count ->
+ [one] Haluatko varmasti poistaa tämän tehtävän?
+ *[other] Haluatko varmasti poistaa nämä { $count } tehtävää?
+ }
+calendar-delete-item-prompt-title =
+ { $count ->
+ [one] Poista kohde
+ *[other] Poista kohteet
+ }
+calendar-delete-item-prompt-message =
+ { $count ->
+ [one] Haluatko varmasti poistaa tämän kohteen?
+ *[other] Haluatko varmasti poistaa nämä { $count } kohdetta?
+ }
+calendar-delete-prompt-disable-message = Älä kysy uudestaan.
diff --git a/l10n-fi/calendar/calendar/calendar-editable-item.ftl b/l10n-fi/calendar/calendar/calendar-editable-item.ftl
new file mode 100644
index 0000000000..b980278a88
--- /dev/null
+++ b/l10n-fi/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 = Yksityisyys: Yksityinen tapahtuma
+calendar-editable-item-privacy-icon-confidential =
+ .alt = Yksityisyys: Näytä vain aika ja päivämäärä
+calendar-editable-item-recurrence =
+ .alt = Toistuva
+calendar-editable-item-recurrence-exception =
+ .alt = Toistuvan poikkeus
+calendar-editable-item-todo-icon-task =
+ .alt = Tehtävä
+calendar-editable-item-todo-icon-completed-task =
+ .alt = Suoritettu tehtävä
+calendar-editable-item-multiday-event-icon-start =
+ .alt = Monipäiväinen tapahtuma alkaa
+calendar-editable-item-multiday-event-icon-continue =
+ .alt = Monipäiväinen tapahtuma jatkuu
+calendar-editable-item-multiday-event-icon-end =
+ .alt = Monipäiväinen tapahtuma päättyy
+calendar-editable-item-reminder-icon-alarm =
+ .alt = Muistutushälytys on ajoitettu
+calendar-editable-item-reminder-icon-suppressed-alarm =
+ .alt = Muistutushälytys on ajoitettu, mutta se on tällä hetkellä estetty
+calendar-editable-item-reminder-icon-email =
+ .alt = Muistutussähköposti on ajoitettu
+calendar-editable-item-reminder-icon-audio =
+ .alt = Muistutusäänihälytys on ajoitettu
diff --git a/l10n-fi/calendar/calendar/calendar-event-dialog-reminder.ftl b/l10n-fi/calendar/calendar/calendar-event-dialog-reminder.ftl
new file mode 100644
index 0000000000..be745f1c46
--- /dev/null
+++ b/l10n-fi/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 = Näytä hälytys
+calendar-event-reminder-icon-email =
+ .alt = Lähetä sähköposti
+calendar-event-reminder-icon-audio =
+ .alt = Toista äänihälytys
diff --git a/l10n-fi/calendar/calendar/calendar-ics-file-dialog.ftl b/l10n-fi/calendar/calendar/calendar-ics-file-dialog.ftl
new file mode 100644
index 0000000000..49b275ba4a
--- /dev/null
+++ b/l10n-fi/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 = Tuo kalenteritapahtumat ja -tehtävät
+calendar-ics-file-dialog-import-event-button-label = Tuo tapahtuma
+calendar-ics-file-dialog-import-task-button-label = Tuo tehtävä
+calendar-ics-file-dialog-2 =
+ .buttonlabelaccept = Tuo kaikki
+calendar-ics-file-accept-button-ok-label = OK
+calendar-ics-file-cancel-button-close-label = Sulje
+calendar-ics-file-dialog-message-2 = Tuo tiedostosta:
+calendar-ics-file-dialog-calendar-menu-label = Tuo kalenteriin:
+calendar-ics-file-dialog-items-loading-message =
+ .value = Ladataan merkintöjä…
+calendar-ics-file-dialog-search-input =
+ .placeholder = Suodata merkintöjä…
+calendar-ics-file-dialog-sort-start-ascending =
+ .label = Järjestä aloituspäivän mukaan (ensimmäisestä viimeiseen)
+calendar-ics-file-dialog-sort-start-descending =
+ .label = Järjestä aloituspäivän mukaan (viimeisestä ensimmäiseen)
+# "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 = Järjestä otsikon mukaan (A > Ö)
+# "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 = Järjestä otsikon mukaan (Ö > A)
+calendar-ics-file-dialog-progress-message = Tuodaan…
+calendar-ics-file-import-success = Tuominen onnistui!
+calendar-ics-file-import-error = Tapahtui virhe ja tuonti epäonnistui.
+calendar-ics-file-import-complete = Tuonti valmis.
+calendar-ics-file-import-duplicates =
+ { $duplicatesCount ->
+ [one] Yksi merkintä hylättiin, koska se löytyy jo kohdekalenterista.
+ *[other] { $duplicatesCount } merkintää hylättiin, koska ne löytyvät jo kohdekalenterista.
+ }
+calendar-ics-file-import-errors =
+ { $errorsCount ->
+ [one] Yhden merkinnän tuonti epäonnistui. Katso lisätietoja virhekonsolista.
+ *[other] { $errorsCount } merkinnän tuonti epäonnistui. Katso lisätietoja virhekonsolista.
+ }
+calendar-ics-file-dialog-no-calendars = Kalentereita, jotka voivat tuoda tapahtumia tai tehtäviä, ei ole.
diff --git a/l10n-fi/calendar/calendar/calendar-invitation-panel.ftl b/l10n-fi/calendar/calendar/calendar-invitation-panel.ftl
new file mode 100644
index 0000000000..72543303e3
--- /dev/null
+++ b/l10n-fi/calendar/calendar/calendar-invitation-panel.ftl
@@ -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/.
+
+# Variables:
+# $organizer (String) - The participant that created the original invitation.
+calendar-invitation-panel-intro = { $organizer } kutsui sinut:
+# Variables:
+# $organizer (String) - The participant that updated the original invitation.
+calendar-invitation-panel-intro-update = { $organizer } päivitti:
+# Variables:
+# $organizer (String) - The participant that cancelled the invitation.
+calendar-invitation-panel-intro-cancel = { $organizer } perui:
+# Variables:
+# $summary (String) - A short summary or title of the event.
+calendar-invitation-panel-title = { $summary }
+calendar-invitation-panel-action-button = Tallenna
+calendar-invitation-panel-save-button = Tallenna
+calendar-invitation-panel-view-button = Näytä
+calendar-invitation-panel-update-button = Päivitä
+calendar-invitation-panel-delete-button = Poista
+calendar-invitation-panel-accept-button = Kyllä
+calendar-invitation-panel-decline-button = Ei
+calendar-invitation-panel-tentative-button = Ehkä
+calendar-invitation-panel-reply-status = * Et ole vielä päättänyt tai vastannut
+calendar-invitation-panel-prop-title-when = Aika:
+calendar-invitation-panel-prop-title-location = Sijainti:
+# 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 })
+calendar-invitation-panel-prop-title-recurrence = Toistuu:
+calendar-invitation-panel-prop-title-attendees = Osallistujat:
+calendar-invitation-panel-prop-title-description = Kuvaus:
+# Variables:
+# $count (Number) - The number of attendees with the "ACCEPTED" participation status.
+calendar-invitation-panel-partstat-accepted = { $count } kyllä
+# Variables:
+# $count (Number) - The number of attendees with the "DECLINED" participation status.
+calendar-invitation-panel-partstat-declined = { $count } ei
+# Variables:
+# $count (Number) - The number of attendees with the "TENTATIVE" participation status.
+calendar-invitation-panel-partstat-tentative = { $count } ehkä
+# Variables:
+# $count (Number) - The number of attendees with the "NEEDS-ACTION" participation status.
+calendar-invitation-panel-partstat-needs-action = { $count } odottaa
+# Variables:
+# $count (Number) - The total number of attendees.
+calendar-invitation-panel-partstat-total = { $count } osallistujaa
+calendar-invitation-panel-prop-title-attachments = Liitteet:
diff --git a/l10n-fi/calendar/calendar/calendar-invitations-dialog.ftl b/l10n-fi/calendar/calendar/calendar-invitations-dialog.ftl
new file mode 100644
index 0000000000..51c1506ae9
--- /dev/null
+++ b/l10n-fi/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 = Tällä hetkellä hyväksytty
+calendar-invitation-current-participation-status-icon-declined =
+ .alt = Tällä hetkellä hylätty
+calendar-invitation-current-participation-status-icon-needs-action =
+ .alt = Ei vielä päätetty
diff --git a/l10n-fi/calendar/calendar/calendar-itip-identity-dialog.ftl b/l10n-fi/calendar/calendar/calendar-itip-identity-dialog.ftl
new file mode 100644
index 0000000000..820d46a8b6
--- /dev/null
+++ b/l10n-fi/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 = Menossa juhliin kutsumatta?
+calendar-itip-identity-warning = Et ole vielä vierailijaluettelossa.
+calendar-itip-identity-label = Vastaa käyttäjänä:
+calendar-itip-identity-label-none = Yhdistä tämä tapahtuma:
diff --git a/l10n-fi/calendar/calendar/calendar-print.ftl b/l10n-fi/calendar/calendar/calendar-print.ftl
new file mode 100644
index 0000000000..cdcbb973ab
--- /dev/null
+++ b/l10n-fi/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 = Asettelu
+calendar-print-layout-list = Lista
+calendar-print-layout-month-grid = Kuukausikalenteri
+calendar-print-layout-week-planner = Viikkokalenteri
+calendar-print-filter-label = Mitä tulostetaan
+calendar-print-filter-events = Tapahtumat
+calendar-print-filter-tasks = Tehtävät
+calendar-print-filter-completedtasks = Suoritetut tehtävät
+calendar-print-filter-taskswithnoduedate = Tehtävät ilman valmistumispäivää
+calendar-print-range-from = Lähettäjä
+calendar-print-range-to = Vastaanottaja
+calendar-print-back-button = Edellinen
+calendar-print-next-button = Seuraava
diff --git a/l10n-fi/calendar/calendar/calendar-summary-dialog.ftl b/l10n-fi/calendar/calendar/calendar-summary-dialog.ftl
new file mode 100644
index 0000000000..f0ba9bfb1f
--- /dev/null
+++ b/l10n-fi/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 = Muokkaa
+ .accesskey = M
+calendar-summary-dialog-edit-menu-button =
+ .label = Muokkaa
+edit-button-context-menu-this-occurrence =
+ .label = Muokkaa vain tätä esiintymää
+ .accesskey = M
+edit-button-context-menu-all-occurrences =
+ .label = Muokkaa kaikkia esiintymiä
+ .accesskey = u
diff --git a/l10n-fi/calendar/calendar/calendar-uri-redirect-dialog.ftl b/l10n-fi/calendar/calendar/calendar-uri-redirect-dialog.ftl
new file mode 100644
index 0000000000..b9d7142a5d
--- /dev/null
+++ b/l10n-fi/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 = Kalenterin URI-uudelleenohjaus
+calendar-uri-redirect-description =
+ Palvelin ohjaa kalenterin "{ $calendarName }" toiselle sivustolle.
+ Hyväksytkö uudelleenohjauksen ja aloitatko uuden kalenterin käytön?
+calendar-uri-redirect-original-uri-label = Nykyinen URI:
+calendar-uri-redirect-target-uri-label = Uudelleenohjattu uusi URI:
diff --git a/l10n-fi/calendar/calendar/calendar-widgets.ftl b/l10n-fi/calendar/calendar/calendar-widgets.ftl
new file mode 100644
index 0000000000..2fa70da214
--- /dev/null
+++ b/l10n-fi/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 = Kaikki kalenterit ovat tällä hetkellä poissa käytöstä. Ota olemassa oleva kalenteri käyttöön tai lisää uusi luodaksesi ja muokataksesi tapahtumia.
+calendar-deactivated-notification-tasks = Kaikki kalenterit ovat tällä hetkellä poissa käytöstä. Ota olemassa oleva kalenteri käyttöön tai lisää uusi luodaksesi ja muokataksesi tehtäviä.
+calendar-notifications-label = Näytä ilmoitukset tulevista tapahtumista
+calendar-add-notification-button =
+ .label = Lisää ilmoitus
diff --git a/l10n-fi/calendar/calendar/category-dialog.ftl b/l10n-fi/calendar/calendar/category-dialog.ftl
new file mode 100644
index 0000000000..74ca9ab84a
--- /dev/null
+++ b/l10n-fi/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 = Nimi
+category-color-label =
+ .label = Käytä väriä
diff --git a/l10n-fi/calendar/calendar/preferences.ftl b/l10n-fi/calendar/calendar/preferences.ftl
new file mode 100644
index 0000000000..711ea11029
--- /dev/null
+++ b/l10n-fi/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 = Kalenteri
+calendar-title-reminder = Hälytykset
+calendar-title-notification = Ilmoitukset
+calendar-title-category = Luokat
+dateformat-label =
+ .value = Päiväystekstin formaatti:
+ .accesskey = P
+# $date (String) - the formatted example date
+dateformat-long =
+ .label = Pitkä: { $date }
+# $date (String) - the formatted example date
+dateformat-short =
+ .label = Lyhyt: { $date }
+use-system-timezone-radio-button =
+ .label = Käytä järjestelmän aikavyöhykettä
+set-timezone-manually-radio-button =
+ .label = Aseta aikavyöhyke manuaalisesti
+timezone-label =
+ .value = Aikavyöhyke:
+weekstart-label =
+ .value = Viikko alkaa:
+ .accesskey = V
+day-1-name =
+ .label = sunnuntai
+day-2-name =
+ .label = maanantai
+day-3-name =
+ .label = tiistai
+day-4-name =
+ .label = keskiviikko
+day-5-name =
+ .label = torstai
+day-6-name =
+ .label = perjantai
+day-7-name =
+ .label = lauantai
+show-weeknumber-label =
+ .label = Näytä viikkonumero näkymissä ja pienoiskuukaudessa
+ .accesskey = ä
+workdays-label =
+ .value = Työviikon päivät:
+day-1-checkbox =
+ .label = su
+ .accesskey = s
+day-2-checkbox =
+ .label = ma
+ .accesskey = m
+day-3-checkbox =
+ .label = ti
+ .accesskey = t
+day-4-checkbox =
+ .label = ke
+ .accesskey = k
+day-5-checkbox =
+ .label = to
+ .accesskey = o
+day-6-checkbox =
+ .label = pe
+ .accesskey = e
+day-7-checkbox =
+ .label = la
+ .accesskey = a
+dayweek-legend = Päivä- ja viikkonäkymät
+visible-hours-label =
+ .value = Näytä:
+ .accesskey = N
+visible-hours-end-label =
+ .value = tuntia kerrallaan
+day-start-label =
+ .value = Päivä alkaa:
+ .accesskey = P
+day-end-label =
+ .value = Päivä päättyy:
+ .accesskey = ä
+midnight-label =
+ .label = keskiyöllä
+noon-label =
+ .label = keskipäivällä
+location-checkbox =
+ .label = Näytä sijainti
+ .accesskey = j
+multiweek-legend = Moniviikkonäkymä
+number-of-weeks-label =
+ .value = Näytettävien viikkojen määrä (sis. edelliset viikot):
+ .accesskey = y
+week-0-label =
+ .label = ei yhtään
+week-1-label =
+ .label = 1 viikko
+week-2-label =
+ .label = 2 viikkoa
+week-3-label =
+ .label = 3 viikkoa
+week-4-label =
+ .label = 4 viikkoa
+week-5-label =
+ .label = 5 viikkoa
+week-6-label =
+ .label = 6 viikkoa
+previous-weeks-label =
+ .value = Näytä edellisiä viikkoja:
+ .accesskey = d
+todaypane-legend = Tänään-ruutu
+agenda-days =
+ .value = Esityslista näyttää:
+ .accesskey = s
+event-task-legend = Tapahtumat ja tehtävät
+default-length-label =
+ .value = Oletustapahtuma ja tehtävän pituus:
+ .accesskey = o
+task-start-label =
+ .value = Aloitusaika:
+task-start-1-label =
+ .label = Ei mitään
+task-start-2-label =
+ .label = Päivän alku
+task-start-3-label =
+ .label = Päivän loppu
+task-start-4-label =
+ .label = Huominen
+task-start-5-label =
+ .label = Ensi viikko
+task-start-6-label =
+ .label = Suhteessa nykyiseen aikaan
+task-start-7-label =
+ .label = Suhteessa alkuun
+task-start-8-label =
+ .label = Suhteessa seuraavaan tasatuntiin
+task-due-label =
+ .value = Valmis:
+edit-intab-label =
+ .label = Muokkaa tapahtumia ja tehtäviä välilehdessä ikkunan sijaan.
+ .accesskey = M
+prompt-delete-label =
+ .label = Kysy ennen tapahtumien ja tehtävien poistamista.
+ .accesskey = y
+accessibility-legend = Esteettömyys
+accessibility-colors-label =
+ .label = Optimoi värit esteettömyyttä varten
+ .accesskey = v
+reminder-legend = Kun hälytys käynnistyy:
+reminder-play-checkbox =
+ .label = Anna äänimerkki
+ .accesskey = A
+reminder-play-alarm-button =
+ .label = Toista
+ .accesskey = T
+reminder-default-sound-label =
+ .label = Käytä oletusääntä
+ .accesskey = K
+reminder-custom-sound-label =
+ .label = Käytä seuraavaa äänitiedostoa
+ .accesskey = s
+reminder-browse-sound-label =
+ .label = Selaa…
+ .accesskey = S
+reminder-dialog-label =
+ .label = Näytä huomautus
+ .accesskey = N
+missed-reminder-label =
+ .label = Näytä ohitetut hälytykset muokattaville kalentereille
+ .accesskey = o
+reminder-default-legend = Hälytyksen oletukset
+default-snooze-label =
+ .value = Lykkäyksen oletuspituus:
+ .accesskey = L
+event-alarm-label =
+ .value = Tapahtumahälytysten oletusasetus:
+ .accesskey = T
+alarm-on-label =
+ .label = Päällä
+alarm-off-label =
+ .label = Pois päältä
+task-alarm-label =
+ .value = Tehtävähälytysten oletusasetus:
+ .accesskey = h
+event-alarm-time-label =
+ .value = Hälytyksen ja tapahtuman välinen oletusaika:
+ .accesskey = ä
+task-alarm-time-label =
+ .value = Hälytyksen ja tehtävän välinen oletusaika:
+ .accesskey = l
+calendar-notifications-customize-label = Ilmoitukset on mahdollista mukauttaa jokaiselle kalenterille kalenterin ominaisuusikkunassa.
+category-new-label = Uusi luokka
+category-edit-label = Muokkaa tapahtumatyyppiä
+category-overwrite-title = Varoitus: Sama nimi
+category-overwrite = Tuon niminen tapahtumatyyppi on jo olemassa.\nHaluatko, että se ylikirjoitetaan?
+category-blank-warning = Sinun täytyy kirjoittaa tälle tapahtumatyypille jokin nimi.
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-alarms.properties b/l10n-fi/calendar/chrome/calendar/calendar-alarms.properties
new file mode 100644
index 0000000000..b88bc13cc1
--- /dev/null
+++ b/l10n-fi/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=%2$S on %1$S
+reminderTitleAtStartEvent=Hetki, jolloin tapahtuma alkaa
+reminderTitleAtStartTask=Hetki, jolloin tehtävä alkaa
+reminderTitleAtEndEvent=Hetki, jolloin tapahtuma päättyy
+reminderTitleAtEndTask=Hetki, jolloin tehtävä päättyy
+
+# 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=Lykkää muistutusta %1$S
+
+reminderCustomOriginBeginBeforeEvent=Tapahtuman alkuun
+reminderCustomOriginBeginAfterEvent=Tapahtuman alusta
+reminderCustomOriginEndBeforeEvent=Tapahtuman loppuun on
+reminderCustomOriginEndAfterEvent=Tapahtuman lopusta
+reminderCustomOriginBeginBeforeTask=Tehtävän alkuun
+reminderCustomOriginBeginAfterTask=Tehtävän alusta
+reminderCustomOriginEndBeforeTask=Tehtävän loppuun
+reminderCustomOriginEndAfterTask=Tehtävän lopusta
+
+reminderErrorMaxCountReachedEvent=Valitussa kalenterissa on rajoituksena #1 muistutus tapahtumaa kohti.;Valitussa kalenterissa on rajoituksena #1 muistutusta tapahtumaa kohti.
+reminderErrorMaxCountReachedTask=Valitussa kalenterissa on rajoituksena #1 muistutus tehtävää kohti.;Valitussa kalenterissa on rajoituksena #1 muistutusta tehtävää kohti.
+
+# 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=Vain luku -kalenterien muistutusta ei tällä hetkellä voi lykätä, ainoastaan lopettaa. '%1$S'-painike lykkää ainoastaan muokattavien kalenterien muistutuksia.
+# LOCALIZATION NOTE (reminderDisabledSnoozeButtonTooltip)
+# This tooltip is only displayed, if the button is disabled
+reminderDisabledSnoozeButtonTooltip=Vain luku -kalenterien muistutusten lykkäämistä ei tueta
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-event-dialog-attendees.properties b/l10n-fi/calendar/chrome/calendar/calendar-event-dialog-attendees.properties
new file mode 100644
index 0000000000..e351a400ed
--- /dev/null
+++ b/l10n-fi/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 = Välttämätön osallistuja
+event.attendee.role.optional = Mahdollinen osallistuja
+event.attendee.role.nonparticipant = Ei osallistuva
+event.attendee.role.chair = Puheenjohtaja
+event.attendee.role.unknown = Tuntematon osallistuja (%1$S)
+
+event.attendee.usertype.individual = Yksittäinen henkilö
+event.attendee.usertype.group = Ryhmä
+event.attendee.usertype.resource = Resurssi
+event.attendee.usertype.room = Huone
+event.attendee.usertype.unknown = Tuntematon tyyppi (%1$S)
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-event-dialog.dtd b/l10n-fi/calendar/chrome/calendar/calendar-event-dialog.dtd
new file mode 100644
index 0000000000..6bc4fb34fb
--- /dev/null
+++ b/l10n-fi/calendar/chrome/calendar/calendar-event-dialog.dtd
@@ -0,0 +1,428 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY event.title.label "Muokkaa merkintää" >
+
+<!ENTITY event.dialog.keepDurationButton.tooltip "Kesto pysyy samana muutettaessa päättymispäivää">
+<!ENTITY event.dialog.keepDurationButton.accesskey "K">
+
+<!ENTITY newevent.from.label "Alkaa" >
+<!ENTITY newevent.to.label "Päättyy" >
+
+<!ENTITY newevent.status.label "Tila" >
+<!ENTITY newevent.status.accesskey "T" >
+<!ENTITY newevent.eventStatus.none.label "Ei määritetty" >
+<!ENTITY newevent.eventStatus.none.accesskey "E" >
+<!ENTITY newevent.todoStatus.none.label "Ei määritetty" >
+<!ENTITY newevent.eventStatus.cancelled.label "Peruttu" >
+<!ENTITY newevent.eventStatus.cancelled.accesskey "K" >
+<!ENTITY newevent.todoStatus.cancelled.label "Peruttu" >
+<!ENTITY newevent.status.tentative.label "Alustava" >
+<!ENTITY newevent.status.tentative.accesskey "t" >
+<!ENTITY newevent.status.confirmed.label "Vahvistettu" >
+<!ENTITY newevent.status.confirmed.accesskey "V" >
+<!ENTITY newevent.status.needsaction.label "Tarvitsee toimintaa" >
+<!ENTITY newevent.status.inprogress.label "Käynnissä" >
+<!ENTITY newevent.status.completed.label "Valmistui" >
+
+<!-- The following entity is for New Task dialog only -->
+<!ENTITY newtodo.percentcomplete.label "&#37; valmiina">
+
+<!-- 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 "Ilmoita osallistujille">
+<!ENTITY event.attendees.notify.accesskey "i">
+<!ENTITY event.attendees.notifyundisclosed.label "Erilliset kutsut jokaiselle osallistujalle">
+<!ENTITY event.attendees.notifyundisclosed.accesskey "j">
+<!ENTITY event.attendees.notifyundisclosed.tooltip "Jos tämä on valittu, niin jokaiselle osallistujalle lähetetään yksi sähköpostiviesti. Jokaisessa kutsussa on mainittu vain osallistuja, joka on vastaanottanut sen. Näin muiden osallistujien henkilöllisyydet eivät paljastu.">
+<!ENTITY event.attendees.disallowcounter.label "Kiellä vastaehdotukset">
+<!ENTITY event.attendees.disallowcounter.accesskey "K">
+<!ENTITY event.attendees.disallowcounter.tooltip "Osoittaa, että et hyväksy vastaehdotuksia">
+
+<!-- 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 "Uusi">
+<!ENTITY event.menu.item.new.accesskey "U">
+<!ENTITY event.menu.item.new.event.label "Tapahtuma">
+<!ENTITY event.menu.item.new.event.accesskey "T">
+<!ENTITY event.menu.item.new.task.label "Tehtävä">
+<!ENTITY event.menu.item.new.task.accesskey "e">
+<!ENTITY event.menu.item.new.message.label "Viesti">
+<!ENTITY event.menu.item.new.message.accesskey "V">
+<!ENTITY event.menu.item.new.contact.label "Osoitekirjan yhteyshenkilö">
+<!ENTITY event.menu.item.new.contact.accesskey "O">
+<!ENTITY event.menu.item.close.label "Sulje">
+<!ENTITY event.menu.item.close.accesskey "S">
+
+<!-- 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 "Tallenna">
+<!ENTITY event.menu.item.save.accesskey "T">
+<!ENTITY event.menu.item.save.tab.accesskey "a">
+
+<!-- LOCALIZATION NOTE
+ - event.menu.item.saveandclose.accesskey is used for "Save and Close"
+ - menu item when editing events/tasks in a dialog window.
+ - event.menu.item.saveandclose.tab.accesskey is used for "Save and Close"
+ - when editing events/tasks in a tab. -->
+<!ENTITY event.menu.item.saveandclose.label "Tallenna ja sulje">
+<!ENTITY event.menu.item.saveandclose.accesskey "l">
+<!ENTITY event.menu.item.saveandclose.tab.accesskey "s">
+
+<!ENTITY event.menu.item.delete.label "Poista…">
+<!ENTITY event.menu.item.delete.accesskey "P">
+<!ENTITY event.menu.item.page.setup.label "Sivun asetukset">
+<!ENTITY event.menu.item.page.setup.accesskey "e">
+<!ENTITY event.menu.item.print.label "Tulosta">
+<!ENTITY event.menu.item.print.accesskey "o">
+
+<!ENTITY event.menu.edit.label "Muokkaa">
+<!ENTITY event.menu.edit.accesskey "M">
+<!ENTITY event.menu.edit.undo.label "Kumoa">
+<!ENTITY event.menu.edit.undo.accesskey "m">
+<!ENTITY event.menu.edit.redo.label "Tee uudelleen">
+<!ENTITY event.menu.edit.redo.accesskey "T">
+<!ENTITY event.menu.edit.cut.label "Leikkaa">
+<!ENTITY event.menu.edit.cut.accesskey "L">
+<!ENTITY event.menu.edit.copy.label "Kopioi">
+<!ENTITY event.menu.edit.copy.accesskey "K">
+<!ENTITY event.menu.edit.paste.label "Liitä">
+<!ENTITY event.menu.edit.paste.accesskey "i">
+<!ENTITY event.menu.edit.select.all.label "Valitse kaikki">
+<!ENTITY event.menu.edit.select.all.accesskey "V">
+
+<!ENTITY event.menu.view.label "Näytä">
+<!ENTITY event.menu.view.accesskey "N">
+<!ENTITY event.menu.view.toolbars.label "Työkalupalkit">
+<!ENTITY event.menu.view.toolbars.accesskey "T">
+<!ENTITY event.menu.view.toolbars.event.label "Tapahtumapalkki">
+<!ENTITY event.menu.view.toolbars.event.accesskey "T">
+<!ENTITY event.menu.view.toolbars.customize.label "Muokkaa…">
+<!ENTITY event.menu.view.toolbars.customize.accesskey "M">
+<!ENTITY event.menu.view.showlink.label "Näytä aiheeseen liittyvä linkki">
+<!ENTITY event.menu.view.showlink.accesskey "N">
+
+<!ENTITY event.menu.options.label "Valinnat">
+<!ENTITY event.menu.options.accesskey "V">
+<!ENTITY event.menu.options.attendees.label "Kutsu osallistujia…">
+<!ENTITY event.menu.options.attendees.accesskey "K">
+<!ENTITY event.menu.options.timezone2.label "Näytä aikavyöhykkeet">
+<!ENTITY event.menu.options.timezone2.accesskey "a">
+<!ENTITY event.menu.options.priority2.label "Tärkeysaste">
+<!ENTITY event.menu.options.priority2.accesskey "T">
+<!ENTITY event.menu.options.priority.notspecified.label "Ei määritetty">
+<!ENTITY event.menu.options.priority.notspecified.accesskey "E">
+<!ENTITY event.menu.options.priority.low.label "Matala">
+<!ENTITY event.menu.options.priority.low.accesskey "M">
+<!ENTITY event.menu.options.priority.normal.label "Normaali">
+<!ENTITY event.menu.options.priority.normal.accesskey "N">
+<!ENTITY event.menu.options.priority.high.label "Korkea">
+<!ENTITY event.menu.options.priority.high.accesskey "K">
+<!ENTITY event.menu.options.privacy.label "Tietosuoja">
+<!ENTITY event.menu.options.privacy.accesskey "s">
+<!ENTITY event.menu.options.privacy.public.label "Julkinen tapahtuma">
+<!ENTITY event.menu.options.privacy.public.accesskey "J">
+<!ENTITY event.menu.options.privacy.confidential.label "Näytä vain aika ja päivämäärä">
+<!ENTITY event.menu.options.privacy.confidential.accesskey "N">
+<!ENTITY event.menu.options.privacy.private.label "Yksityinen tapahtuma">
+<!ENTITY event.menu.options.privacy.private.accesskey "Y">
+<!ENTITY event.menu.options.show.time.label "Näytä aika muodossa">
+<!ENTITY event.menu.options.show.time.accesskey "t">
+<!ENTITY event.menu.options.show.time.busy.label "Varattu">
+<!ENTITY event.menu.options.show.time.busy.accesskey "V">
+<!ENTITY event.menu.options.show.time.free.label "Vapaa">
+<!ENTITY event.menu.options.show.time.free.accesskey "V">
+
+<!ENTITY event.invite.attendees.label "Kutsu osallistujia…">
+<!ENTITY event.invite.attendees.accesskey "K">
+<!ENTITY event.email.attendees.label "Kirjoita viesti kaikille osallistujille…">
+<!ENTITY event.email.attendees.accesskey "a">
+<!ENTITY event.email.tentative.attendees.label "Kirjoita viesti epävarmoille osallistujille…">
+<!ENTITY event.email.tentative.attendees.accesskey "u">
+<!ENTITY event.remove.attendees.label2 "Poista kaikki osallistujat">
+<!ENTITY event.remove.attendees.accesskey "k">
+<!ENTITY event.remove.attendee.label "Poista osallistuja">
+<!ENTITY event.remove.attendee.accesskey "o">
+
+<!-- Toolbar -->
+<!ENTITY event.toolbar.save.label2 "Tallenna">
+<!ENTITY event.toolbar.saveandclose.label "Tallenna ja sulje">
+<!ENTITY event.toolbar.delete.label "Poista">
+<!ENTITY event.toolbar.attendees.label "Kutsu osallistujia">
+<!ENTITY event.toolbar.privacy.label "Tietosuoja">
+
+<!ENTITY event.toolbar.save.tooltip2 "Tallenna">
+<!ENTITY event.toolbar.saveandclose.tooltip "Tallenna ja sulje">
+<!ENTITY event.toolbar.delete.tooltip "Poista">
+<!ENTITY event.toolbar.attendees.tooltip "Kutsu henkilöitä">
+<!ENTITY event.toolbar.attachments.tooltip "Lisää liitetiedostoja">
+<!ENTITY event.toolbar.privacy.tooltip "Muuta tietosuoja-asetusta">
+<!ENTITY event.toolbar.priority.tooltip "Muuta tärkeysastetta">
+<!ENTITY event.toolbar.status.tooltip "Muuta tilaa">
+<!ENTITY event.toolbar.freebusy.tooltip "Muuta vapaa/varattu -aikaa">
+
+<!-- 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 "Käytä ehdotusta">
+<!ENTITY counter.button.proposal.accesskey "e">
+<!ENTITY counter.button.proposal.tooltip2 "Tapahtuman kentät päivitetään vastaehdotuksen tiedoilla. Vain tallentaminen lisämuutoksilla tai ilman tiedottaa myös muita osallistujia">
+<!ENTITY counter.button.original.label "Käytä alkuperäisiä tietoja">
+<!ENTITY counter.button.original.accesskey "l">
+<!ENTITY counter.button.original.tooltip2 "Tapahtuman kentissä säilytetään alkuperäiset, ennen vastaehdotuksen lähettämistä olleet tiedot">
+
+<!-- Main page -->
+<!ENTITY event.title.textbox.label "Otsikko:" >
+<!ENTITY event.title.textbox.accesskey "k">
+<!ENTITY event.location.label "Osoite:" >
+<!ENTITY event.location.accesskey "s">
+<!ENTITY event.categories.label "Tyyppi:">
+<!ENTITY event.categories.accesskey "y">
+<!ENTITY event.categories.textbox.label "Lisää uusi tapahtumatyyppi" >
+<!ENTITY event.calendar.label "Kalenteri:" >
+<!ENTITY event.calendar.accesskey "e">
+<!ENTITY event.attendees.label "Osallistujat:" >
+<!ENTITY event.attendees.accesskey "j">
+<!ENTITY event.alldayevent.label "Koko päivän tapahtuma" >
+<!ENTITY event.alldayevent.accesskey "p">
+<!ENTITY event.from.label "Alkaa:" >
+<!ENTITY event.from.accesskey "A">
+<!ENTITY task.from.label "Alkaa:" >
+<!ENTITY task.from.accesskey "A">
+<!ENTITY event.to.label "Päättyy:" >
+<!ENTITY event.to.accesskey "ä">
+<!ENTITY task.to.label "Valmis:" >
+<!ENTITY task.to.accesskey "l">
+<!ENTITY task.status.label "Tila:" >
+<!ENTITY task.status.accesskey "T">
+<!ENTITY event.repeat.label "Toista:" >
+<!ENTITY event.repeat.accesskey "i">
+<!ENTITY event.until.label "Kunnes:">
+<!ENTITY event.until.accesskey "n">
+<!ENTITY event.reminder.label "Muistuta:" >
+<!ENTITY event.reminder.accesskey "u">
+<!ENTITY event.description.label "Kuvaus:" >
+<!ENTITY event.description.accesskey "v">
+<!ENTITY event.attachments.label "Liitteet:" >
+<!ENTITY event.attachments.accesskey "L" >
+<!ENTITY event.attachments.menubutton.label "Lisää liite">
+<!ENTITY event.attachments.menubutton.accesskey "L">
+<!ENTITY event.attachments.url.label "Verkkosivu…">
+<!ENTITY event.attachments.url.accesskey "V">
+<!ENTITY event.attachments.popup.remove.label "Poista" >
+<!ENTITY event.attachments.popup.remove.accesskey "P" >
+<!ENTITY event.attachments.popup.open.label "Avaa" >
+<!ENTITY event.attachments.popup.open.accesskey "A" >
+<!ENTITY event.attachments.popup.removeAll.label "Poista kaikki" >
+<!ENTITY event.attachments.popup.removeAll.accesskey "k" >
+<!ENTITY event.attachments.popup.attachPage.label "Lisää verkkosivu liitteeksi…" >
+<!ENTITY event.attachments.popup.attachPage.accesskey "L" >
+<!ENTITY event.url.label "Aiheeseen liittyvä linkki:" >
+<!ENTITY event.priority2.label "Tärkeysaste:">
+
+<!ENTITY event.reminder.none.label "Ei muistutusta " >
+<!ENTITY event.reminder.0minutes.before.label "0 minuuttia ennen" >
+<!ENTITY event.reminder.5minutes.before.label "5 minuuttia ennen" >
+<!ENTITY event.reminder.15minutes.before.label "15 minuuttia ennen" >
+<!ENTITY event.reminder.30minutes.before.label "30 minuuttia ennen" >
+<!ENTITY event.reminder.1hour.before.label "1 tunti ennen" >
+<!ENTITY event.reminder.2hours.before.label "2 tuntia ennen" >
+<!ENTITY event.reminder.12hours.before.label "12 tuntia ennen" >
+<!ENTITY event.reminder.1day.before.label "1 päivä ennen" >
+<!ENTITY event.reminder.2days.before.label "2 päivää ennen" >
+<!ENTITY event.reminder.1week.before.label "1 viikko ennen" >
+<!ENTITY event.reminder.custom.label "Oma…" >
+
+<!ENTITY event.reminder.multiple.label "Useita muistutuksia…" >
+
+<!ENTITY event.statusbarpanel.freebusy.label "Aika:">
+<!ENTITY event.statusbarpanel.privacy.label "Tietosuoja:">
+
+<!-- Recurrence dialog -->
+<!ENTITY recurrence.title.label "Muokkaa toistuvuutta">
+
+<!ENTITY event.repeat.does.not.repeat.label "Ei toistu">
+<!ENTITY event.repeat.daily.label "Joka päivä">
+<!ENTITY event.repeat.weekly.label "Joka kuukausi">
+<!ENTITY event.repeat.every.weekday.label "Joka arkipäivä">
+<!ENTITY event.repeat.bi.weekly.label "Joka toinen viikko">
+<!ENTITY event.repeat.monthly.label "Joka kuukausi">
+<!ENTITY event.repeat.yearly.label "Joka vuosi">
+<!ENTITY event.repeat.custom.label "Oma…">
+
+<!ENTITY event.recurrence.pattern.label "Toistuvuuskaava">
+<!ENTITY event.recurrence.occurs.label "Toista" >
+<!ENTITY event.recurrence.day.label "kerran päivässä" >
+<!ENTITY event.recurrence.week.label "kerran viikossa" >
+<!ENTITY event.recurrence.month.label "kerran kuussa" >
+<!ENTITY event.recurrence.year.label "kerran vuodessa" >
+
+<!ENTITY event.recurrence.pattern.every.label "Aina" >
+<!ENTITY repeat.units.days.both "päivän välein" >
+<!ENTITY event.recurrence.pattern.every.weekday.label "Joka arkipäivä" >
+
+<!ENTITY event.recurrence.pattern.weekly.every.label "" >
+<!ENTITY repeat.units.weeks.both "viikon välein" >
+<!ENTITY event.recurrence.on.label "" >
+
+<!ENTITY event.recurrence.pattern.monthly.every.label "" >
+<!ENTITY repeat.units.months.both "kuukauden välein" >
+<!ENTITY event.recurrence.monthly.every.label "Jokaisena" >
+<!ENTITY event.recurrence.monthly.first.label "Ensimmäisenä">
+<!ENTITY event.recurrence.monthly.second.label "Toisena">
+<!ENTITY event.recurrence.monthly.third.label "Kolmantena">
+<!ENTITY event.recurrence.monthly.fourth.label "Neljäntenä">
+<!ENTITY event.recurrence.monthly.fifth.label "Viidentenä">
+<!ENTITY event.recurrence.monthly.last.label "Viimeisenä">
+<!ENTITY event.recurrence.pattern.monthly.week.1.label "sunnuntaina" >
+<!ENTITY event.recurrence.pattern.monthly.week.2.label "maanantaina" >
+<!ENTITY event.recurrence.pattern.monthly.week.3.label "tiistaina" >
+<!ENTITY event.recurrence.pattern.monthly.week.4.label "keskiviikkona" >
+<!ENTITY event.recurrence.pattern.monthly.week.5.label "torstaina" >
+<!ENTITY event.recurrence.pattern.monthly.week.6.label "perjantaina" >
+<!ENTITY event.recurrence.pattern.monthly.week.7.label "lauantaina" >
+<!ENTITY event.recurrence.repeat.dayofmonth.label "päivänä">
+<!ENTITY event.recurrence.repeat.recur.label "">
+
+<!ENTITY event.recurrence.every.label "" >
+<!ENTITY repeat.units.years.both "vuoden välein" >
+<!ENTITY event.recurrence.pattern.yearly.every.month.label "" >
+
+<!-- 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 "tammikuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.2.label "helmikuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.3.label "maaliskuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.4.label "huhtikuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.5.label "toukokuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.6.label "kesäkuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.7.label "heinäkuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.8.label "elokuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.9.label "syyskuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.10.label "lokakuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.11.label "marraskuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month.12.label "joulukuuta" >
+<!ENTITY event.recurrence.yearly.every.label "Jokaisena">
+<!ENTITY event.recurrence.yearly.first.label "Ensimmäisenä">
+<!ENTITY event.recurrence.yearly.second.label "Toisena">
+<!ENTITY event.recurrence.yearly.third.label "Kolmantena">
+<!ENTITY event.recurrence.yearly.fourth.label "Neljäntenä">
+<!ENTITY event.recurrence.yearly.fifth.label "Viidentenä">
+<!ENTITY event.recurrence.yearly.last.label "Viimeisenä">
+<!ENTITY event.recurrence.pattern.yearly.week.1.label "sunnuntaina" >
+<!ENTITY event.recurrence.pattern.yearly.week.2.label "maanantaina" >
+<!ENTITY event.recurrence.pattern.yearly.week.3.label "tiistaina" >
+<!ENTITY event.recurrence.pattern.yearly.week.4.label "keskiviikkona" >
+<!ENTITY event.recurrence.pattern.yearly.week.5.label "torstaina" >
+<!ENTITY event.recurrence.pattern.yearly.week.6.label "perjantaina" >
+<!ENTITY event.recurrence.pattern.yearly.week.7.label "lauantaina" >
+<!ENTITY event.recurrence.pattern.yearly.day.label "päivänä" >
+<!ENTITY event.recurrence.of.label "" >
+<!ENTITY event.recurrence.pattern.yearly.month2.1.label "tammikuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.2.label "helmikuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.3.label "maaliskuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.4.label "huhtikuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.5.label "toukokuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.6.label "kesäkuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.7.label "heinäkuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.8.label "elokuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.9.label "syyskuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.10.label "lokakuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.11.label "marraskuuta" >
+<!ENTITY event.recurrence.pattern.yearly.month2.12.label "joulukuuta" >
+
+<!ENTITY event.recurrence.range.label "Toistuvuuden takaraja">
+<!ENTITY event.recurrence.forever.label "Ei päättymispäivää" >
+<!ENTITY event.recurrence.repeat.for.label "Luo" >
+<!ENTITY event.recurrence.appointments.label "tapahtuma(a)" >
+<!ENTITY event.repeat.until.label "Toista seuraavaan päivään asti:" >
+<!ENTITY event.recurrence.preview.label "Esikatselu">
+
+<!-- Attendees dialog -->
+<!ENTITY invite.title.label "Kutsu osallistujia">
+<!ENTITY event.organizer.label "Järjestäjä">
+<!ENTITY event.freebusy.suggest.slot "Ehdota aikaa:">
+<!ENTITY event.freebusy.button.next.slot "Seuraava aika">
+<!ENTITY event.freebusy.button.previous.slot "Edellinen aika">
+<!ENTITY event.freebusy.zoom "Suurenna:">
+<!ENTITY event.freebusy.legend.free "Vapaa" >
+<!ENTITY event.freebusy.legend.busy "Varattu" >
+<!ENTITY event.freebusy.legend.busy_tentative "Alustava" >
+<!ENTITY event.freebusy.legend.busy_unavailable "Vapaalla" >
+<!ENTITY event.freebusy.legend.unknown "Ei tiedossa" >
+<!ENTITY event.attendee.role.required "Välttämätön osallistuja">
+<!ENTITY event.attendee.role.optional "Mahdollinen osallistuja">
+<!ENTITY event.attendee.role.chair "Puheenjohtaja">
+<!ENTITY event.attendee.role.nonparticipant "Ei osallistuva">
+<!ENTITY event.attendee.usertype.individual "Yksittäinen henkilö">
+<!ENTITY event.attendee.usertype.group "Ryhmä">
+<!ENTITY event.attendee.usertype.resource "Resurssi">
+<!ENTITY event.attendee.usertype.room "Huone">
+<!ENTITY event.attendee.usertype.unknown "Tuntematon">
+
+<!-- Timezone dialog -->
+<!ENTITY timezone.title.label "Määritä aikavyöhyke">
+<!ENTITY event.timezone.custom.label "Muut aikavyöhykkeet…">
+
+<!-- Read-Only dialog -->
+<!ENTITY read.only.general.label "Yleistiedot">
+<!ENTITY read.only.title.label "Otsikko:">
+<!ENTITY read.only.calendar.label "Kalenteri:">
+<!ENTITY read.only.event.start.label "Aloitusaika:">
+<!ENTITY read.only.task.start.label "Aloitusaika:">
+<!ENTITY read.only.event.end.label "Lopetusaika:">
+<!ENTITY read.only.task.due.label "Valmis:">
+<!ENTITY read.only.repeat.label "Toista:">
+<!ENTITY read.only.location.label "Sijainti:">
+<!ENTITY read.only.category.label "Kategoria:">
+<!ENTITY read.only.organizer.label "Järjestäjä:">
+<!ENTITY read.only.reminder.label "Muistuta:">
+<!ENTITY read.only.attachments.label "Liitteet:">
+<!ENTITY read.only.attendees.label "Osallistujat">
+<!ENTITY read.only.description.label "Kuvaus">
+<!ENTITY read.only.link.label "Aiheeseen liittyvä linkki">
+
+<!-- Summary dialog -->
+<!ENTITY summary.dialog.saveclose.label "Tallenna ja sulje">
+<!ENTITY summary.dialog.saveclose.tooltiptext "Tallenna muutokset ja sulje ikkuna muuttamatta osallistumisen tilaa ja lähettämättä vastausta">
+<!ENTITY summary.dialog.accept.label "Hyväksy">
+<!ENTITY summary.dialog.accept.tooltiptext "Hyväksy kutsu">
+<!ENTITY summary.dialog.tentative.label "Alustava">
+<!ENTITY summary.dialog.tentative.tooltiptext "Hyväksy alustavasti">
+<!ENTITY summary.dialog.decline.label "Kieltäydy">
+<!ENTITY summary.dialog.decline.tooltiptext "Kieltäydy kutsusta">
+<!ENTITY summary.dialog.dontsend.label "Älä lähetä vastausta">
+<!ENTITY summary.dialog.dontsend.tooltiptext "Muuta osallistumisstatustasi lähettämättä vastausta järjestäjälle ja sulje ikkuna">
+<!ENTITY summary.dialog.send.label "Lähetä vastaus nyt">
+<!ENTITY summary.dialog.send.tooltiptext "Lähetä vastaus järjestäjälle ja sulje ikkuna">
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-event-dialog.properties b/l10n-fi/calendar/chrome/calendar/calendar-event-dialog.properties
new file mode 100644
index 0000000000..5da5e5a329
--- /dev/null
+++ b/l10n-fi/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=joka päivä;joka #1. päivä
+repeatDetailsRuleDaily4=joka arkipäivä
+
+# 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=joka %1$S;joka #2. viikon %1$S
+weeklyNthOnNounclass2=joka %1$S;joka #2. viikon %1$S
+
+# LOCALIZATION NOTE (weeklyEveryNth):
+# Edit recurrence window -> Recurrence pattern -> Weekly repeat rules
+# #1 - interval
+# e.g. "every 5 weeks"
+weeklyEveryNth=joka viikko;joka #1. viikko
+
+# 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=sunnuntai
+repeatDetailsDay1Nounclass=nounclass1
+repeatDetailsDay2=maanantai
+repeatDetailsDay2Nounclass=nounclass1
+repeatDetailsDay3=tiistai
+repeatDetailsDay3Nounclass=nounclass1
+repeatDetailsDay4=keskiviikko
+repeatDetailsDay4Nounclass=nounclass1
+repeatDetailsDay5=torstai
+repeatDetailsDay5Nounclass=nounclass1
+repeatDetailsDay6=perjantai
+repeatDetailsDay6Nounclass=nounclass1
+repeatDetailsDay7=lauantai
+repeatDetailsDay7Nounclass=nounclass1
+
+# LOCALIZATION NOTE (repeatDetailsAnd)
+# Used to show a number of weekdays in a list
+# i.e. "Sunday, Monday, Tuesday " + and + " Wednesday"
+repeatDetailsAnd=ja
+
+# 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=joka kuun %1$S;joka #2. kuun %1$S
+monthlyRuleNthOfEveryNounclass2=joka kuun %1$S;joka #2. kuun %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=joka kuun jokainen %1$S; joka #2. kuun jokainen %1$S
+monthlyEveryOfEveryNounclass2=joka kuun jokainen %1$S; joka #2. kuun jokainen %1$S
+
+# 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=%1$S. päivä;%1$S päivä
+
+# 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=joka kuun %1$S;joka #2. kuun %1$S
+
+# 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=kuun viimeinen päivä;joka #1. kuun viimeinen päivä
+
+# 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=joka kuun jokainen päivä;joka #2. kuun jokainen päivä
+
+# 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=ensimmäinen
+repeatOrdinal2Nounclass1=toinen
+repeatOrdinal3Nounclass1=kolmas
+repeatOrdinal4Nounclass1=neljäs
+repeatOrdinal5Nounclass1=viides
+repeatOrdinal-1Nounclass1=viimeinen
+repeatOrdinal1Nounclass2=ensimmäinen
+repeatOrdinal2Nounclass2=toinen
+repeatOrdinal3Nounclass2=kolmas
+repeatOrdinal4Nounclass2=neljäs
+repeatOrdinal5Nounclass2=viides
+repeatOrdinal-1Nounclass2=viimeinen
+
+# 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=joka %1$S %2$S.;joka #3. vuoden %1$S %2$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=joka %3$Sn %1$S %2$S;joka #4. vuoden %3$Sn %1$S %2$S
+yearlyNthOnNthOfNounclass2=joka %3$Sn %1$S %2$S;joka #4. vuoden %3$Sn %1$S %2$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=%2$Sn jokainen %1$S;joka #3. vuoden %2$Sn jokainen %1$S
+yearlyOnEveryNthOfNthNounclass2=%2$Sn jokainen %1$S;joka #3. vuoden %2$Sn jokainen %1$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=joka päivä %1$Sssa;joka #2. vuosi jokaisena päivänä %1$Sssa
+
+repeatDetailsMonth1=tammikuu
+repeatDetailsMonth2=helmikuu
+repeatDetailsMonth3=maaliskuu
+repeatDetailsMonth4=huhtikuu
+repeatDetailsMonth5=toukokuu
+repeatDetailsMonth6=kesäkuu
+repeatDetailsMonth7=heinäkuu
+repeatDetailsMonth8=elokuu
+repeatDetailsMonth9=syyskuu
+repeatDetailsMonth10=lokakuu
+repeatDetailsMonth11=marraskuu
+repeatDetailsMonth12=joulukuu
+
+# 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=Tapahtuu %1$S\nvoimassa %2$S #5 kerran\n %3$S - %4$S.;Tapahtuu %1$S\nvoimassa %2$S #5 kertaa\n%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=Tapahtuu %1$S\nvoimassa %2$S #3 kerran.;Tapahtuu %1$S\nvoimassa %2$S #3 kertaa.
+
+# 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=Tapahtuu %1$S\nvoimassa %2$S - %3$S\n%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=Tapahtuu %1$S\nvoimassa %2$S - %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=Tapahtuu %1$S\nvoimassa %2$S\n%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=Tapahtuu %1$S\nvoimassa %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=viimeinen päivä
+
+# 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=Saat lisätietoja painamalla tästä
+
+# 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=Toistuvuuden lisätiedot tuntemattomia
+
+# differences between the dialog for an Event or a Task
+newEvent=Uusi tapahtuma
+newTask=Uusi tehtävä
+itemMenuLabelEvent=Tapahtuma
+itemMenuAccesskeyEvent2=T
+itemMenuLabelTask=Tehtävä
+itemMenuAccesskeyTask2=T
+
+emailSubjectReply=Re: %1$S
+
+# Link Location Dialog
+specifyLinkLocation=Määritä linkin sijainti
+enterLinkLocation=Kirjoita verkkosivun tai asiakirjan sijainti.
+
+summaryDueTaskLabel=Valmis:
+
+# Attach File Dialog
+attachViaFilelink=Tallenna käyttäen %1$S
+selectAFile=Valitse liitettävät tiedostot
+removeCalendarsTitle=Poista liitetiedostot
+
+# LOCALIZATION NOTE (removeAttachmentsText): Semi-colon list of plural forms for
+# prompting attachment removal.
+# See http://developer.mozilla.org/en/Localization_and_Plurals
+removeAttachmentsText=Haluatko varmasti poistaa yhden liitetiedoston?;Haluatko varmasti poistaa #1 liitetiedostoa?
+
+# 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=sunnuntai
+repeatDetailsDay2Plural=maanantai
+repeatDetailsDay3Plural=tiistai
+repeatDetailsDay4Plural=keskiviikko
+repeatDetailsDay5Plural=torstai
+repeatDetailsDay6Plural=perjantai
+repeatDetailsDay7Plural=lauantai
+
+# 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=Ikuisesti
+
+# 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=Viimeinen päivä
+
+# 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 on hyväksynyt kutsun, mutta on tehnyt vastaehdotuksen:
+
+# 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 on hylännyt kutsun, mutta tehnyt vastaehdotuksen:
+
+# 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 on delegoinut kutsun, mutta on tehnyt vastaehdotuksen:
+
+# 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 ei ole päättänyt osallistumisesta ja on tehnyt vastaehdotuksen:
+
+# 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 on hyväksynyt kutsun vain alustavasti ja tehnyt vastaehdotuksen:
+
+# LOCALIZATION NOTE (counterOnPreviousVersionNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnPreviousVersionNotification=Tämä on vastaehdotus tapahtuman aikaisempaan versioon.
+
+# LOCALIZATION NOTE (counterOnCounterDisallowedNotification) - this is only visible when opening the
+# dialog from the email summary view after receiving a counter message
+counterOnCounterDisallowedNotification=Estit vastaehdotukset lähettäessäsi kutsua.
+
+# LOCALIZATION NOTE (eventAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation
+eventAccepted=Olet hyväksynyt tämän kutsun
+
+# LOCALIZATION NOTE (eventTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted the event invitation tentatively
+eventTentative=Olet alustavasti hyväksynyt tämän kutsun
+
+# LOCALIZATION NOTE (eventDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the event invitation
+eventDeclined=Olet hylännyt tämän kutsun
+
+# 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=Olet delegoinut tämän kutsun
+
+# LOCALIZATION NOTE (eventNeedsAction) - this will be displayed as notification
+# in the summary dialog if the user hasn't yet responded to an invitation
+eventNeedsAction=Et ole vielä vastannut tähän kutsuun
+
+# LOCALIZATION NOTE (taskAccepted) - this will be displayed as notification
+# in the summary dialog if the user has accepted the assigned task
+taskAccepted=Olet ilmoittanut osallistuvasi tähän tehtävään
+
+# LOCALIZATION NOTE (taskTentative) - this will be displayed as notification
+# in the summary dialog if the user has accepted tentatively the assigned task
+taskTentative=Olet alustavasti ilmoittanut osallistuvasi tähän tehtävään
+
+# LOCALIZATION NOTE (taskDeclined) - this will be displayed as notification
+# in the summary dialog if the user has declined the assigned task
+taskDeclined=Olet hylännyt kutsun osallistua tähän tehtävään
+
+# 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=Olet delegoinut osan tästä tehtävästä
+
+# 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=Et ole vielä vastannut tähän tehtäväkutsuun
+
+# LOCALIZATION NOTE (taskInProgress) - this will be displayed as notification
+# in the summary dialog if the user is working on an assigned task
+taskInProgress=Olet aloittanut tämän delegoidun tehtävän työstämisen
+
+# 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=Olet suorittanut osuutesi tästä delegoidusta tehtävästä
+
+# 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=Lähetä ja sulje
+
+# 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=Ilmoita osallistujille ja sulje
+
+# 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=Tallenna ja lähetä
+
+# 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=Tallenna ja ilmoita osallistujille
+
+# 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=Tallenna ja lähetä
+
+# 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=Lähetä ja sulje
+
+# 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=Osallistujat (%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=Liitteet (%1$S):
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-extract.properties b/l10n-fi/calendar/chrome/calendar/calendar-extract.properties
new file mode 100644
index 0000000000..e735c8ba4e
--- /dev/null
+++ b/l10n-fi/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.
+# patterns. You can and should add language specific variants.
+#
+# There are two different ways to find a start time text in email:
+# 1) it matches a from.* pattern and does not have end.prefix or end.suffix next to it
+# 2) it matches until.* pattern and has start.prefix or start.suffix next to it
+# Similar inverse logic applies to end times.
+# These rules enable using prefix and suffix values with only start.* or only until.*
+# patterns localized for some languages and thus not having to repeat the same
+# values in both.
+#
+# Patterns are partially space-insensitive.
+# "deadline is" pattern will find both "deadlineis" and "deadline is"
+# but "deadlineis" won't find "deadline is" or "deadline is".
+# Therefore you should include all spaces that are valid within a pattern.
+
+# LOCALIZATION NOTE (start.prefix):
+# datetimes with these in front are extracted as start times
+# can be a list of values, separate variants by |
+start.prefix =
+
+# LOCALIZATION NOTE (start.suffix):
+# datetimes followed by these are extracted as start times
+start.suffix = by | until | to | - | till | til | and
+
+# LOCALIZATION NOTE (end.prefix):
+# datetimes followed by these are extracted as end times
+end.prefix = by | until | to | - | till | til | and | due: | due | ends | deadline is | deadline:
+
+# 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 = last week | sent | email | e-mail | instead of | > | unfortunately | in | not
+
+# LOCALIZATION NOTE (no.datetime.suffix):
+# datetimes follwed by these won't be used
+no.datetime.suffix = floor | flr | : | email | e-mail | > | % | usd | dollars
+
+# LOCALIZATION NOTE (from.*):
+# can be a list of values, separate variants by |
+
+# LOCALIZATION NOTE (from.today):
+# must not be empty!
+from.today = tänään
+
+from.tomorrow = tomorrow
+# LOCALIZATION NOTE (until.*):
+# can be a list of values, separate variants by |
+until.tomorrow =
+
+# LOCALIZATION NOTE (ordinal.date):
+# %1$S = matches numbers 1-31 and number.x
+# should not have "%1$S" as this would match any single number in email to a time
+from.ordinal.date = %1$S.
+
+# LOCALIZATION NOTE (until.ordinal.date):
+# %1$S = matches numbers 1-31 and number.x
+until.ordinal.date =
+
+from.noon = aamupäivällä
+until.noon =
+
+# LOCALIZATION NOTE (hour.only):
+# %1$S = matches numbers 0-23 and number.0-number.23
+# should not have "%1$S" as this would match any single number in email to a time
+from.hour = kello %1$S | klo %1$S
+
+# LOCALIZATION NOTE (until.hour):
+# %1$S = matches numbers 0-23 and number.0-number.23
+# should also list how to find end of a timeframe
+until.hour = - %1$S | %1$S mennessä
+
+# LOCALIZATION NOTE (hour.only.am):
+# %1$S = matches numbers 0-23 and number.0-number.23
+from.hour.am = %1$S aamupäivällä
+
+# LOCALIZATION NOTE (until.hour.am):
+# %1$S = matches numbers 0-23 and number.0-number.23
+# should also list how to find end of a timeframe
+until.hour.am =
+
+# LOCALIZATION NOTE (hour.only.pm):
+# %1$S = matches numbers 0-23 and number.0-number.23
+from.hour.pm = %1$S iltapäivällä
+
+# LOCALIZATION NOTE (until.hour.pm):
+# %1$S = 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 = puoli %1$S
+
+# 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 = puoli yli %1$S
+
+# LOCALIZATION NOTE (until.half.hour.after):
+# denotes times 30 minutes after last full hour
+until.half.hour.after =
+
+# LOCALIZATION NOTE (hour.minutes):
+# %1$S = matches numbers 0-23
+# %2$S = matches numbers 0-59
+from.hour.minutes = %1$S:%2$S | %1$S.%2$S
+
+# LOCALIZATION NOTE (until.hour.minutes):
+# %1$S = matches numbers 0-23
+# %2$S = matches numbers 0-59
+until.hour.minutes =
+
+# LOCALIZATION NOTE (hour.minutes.am):
+# %1$S = matches numbers 0-23
+# %2$S = matches numbers 0-59
+from.hour.minutes.am = %1$S:%2$S aamupäivällä | %1$S.%2$S aamupäivällä
+
+# LOCALIZATION NOTE (until.hour.minutes.am):
+# %1$S = matches numbers 0-23
+# %2$S = matches numbers 0-59
+until.hour.minutes.am =
+
+# LOCALIZATION NOTE (hour.minutes.pm):
+# %1$S = matches numbers 0-23
+# %2$S = matches numbers 0-59
+from.hour.minutes.pm = %1$S:%2$S iltapäivällä | %1$S.%2$S iltapäivällä
+
+# LOCALIZATION NOTE (until.hour.minutes.pm):
+# %1$S = matches numbers 0-23
+# %2$S = matches numbers 0-59
+until.hour.minutes.pm =
+
+# LOCALIZATION NOTE (monthname.day):
+# %1$S = matches numbers 1-31 and number.x
+# %2$S = matches monthname
+from.monthname.day = %2$Sn %1$S | %1$S %2$Sta
+
+# LOCALIZATION NOTE (until.monthname.day):
+# %1$S = matches numbers 1-31
+# %2$S = matches monthname
+until.monthname.day =
+
+# LOCALIZATION NOTE (month.day):
+# %1$S = matches numbers 1-31
+# %2$S = matches numbers 1-12
+from.month.day = %1$S.%2$S.
+
+# LOCALIZATION NOTE (until.month.day):
+# %1$S = matches numbers 1-31 and number.x
+# %2$S = matches numbers 1-12
+until.month.day =
+
+# LOCALIZATION NOTE (year.month.day):
+# %1$S = matches numbers 1-31
+# %2$S = matches numbers 1-12
+# %3$S = matches 2/4 numbers
+from.year.month.day = %1$S.%2$S.%3$S | %3$S-%2$S-%1$S
+
+# LOCALIZATION NOTE (until.year.month.day):
+# %1$S = matches numbers 1-31
+# %2$S = matches numbers 1-12
+# %3$S = matches 2/4 numbers
+until.year.month.day =
+
+# LOCALIZATION NOTE (year.monthname.day):
+# %1$S = matches numbers 1-31
+# %2$S = matches monthname
+# %3$S = matches 2/4 numbers
+from.year.monthname.day = %1$S %2$Sta %3$S
+
+# LOCALIZATION NOTE (until.year.monthname.day):
+# %1$S = matches numbers 1-31
+# %2$S = matches monthname
+# %3$S = 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$S = matches 1/2 numbers and number.0 - and number.31
+duration.minutes = %1$S minuuttia | %1$S min
+
+# LOCALIZATION NOTE (duration.hours):
+# %1$S = matches 1/2 numbers and number.0 - and number.31
+duration.hours = %1$S tunti | %1$S tuntia
+
+# LOCALIZATION NOTE (duration.days):
+# %1$S = matches 1/2 numbers and number.0 - and number.31
+duration.days = %1$S päivää
+
+# LOCALIZATION NOTE (month.*):
+# can be a list of values, separate variants by |
+month.1 = tammikuu | tammi
+month.2 = helmikuu | helmi
+month.3 = maaliskuu | maalis
+month.4 = huhtikuu | huhti
+month.5 = toukokuu | touko
+month.6 = kesäkuu | kesä
+month.7 = heinäkuu | heinä
+month.8 = elokuu | elo
+month.9 = syyskuu | syys
+month.10 = lokakuu | loka
+month.11 = marraskuu | marras
+month.12 = joulukuu | joulu
+
+# LOCALIZATION NOTE (weekday.*):
+# used to derive start date based on weekdays mentioned
+# can be a list of values, separate variants by |
+# LOCALIZATION NOTE (weekday.0):
+# Regardless of what the first day of the week is in your country, 0 is Sunday here.
+from.weekday.0 = sunnuntai | sunnuntait
+from.weekday.1 = maanantai | maanantait
+from.weekday.2 = tiistai | tiistait
+from.weekday.3 = keskiviikko | keskiviikot
+from.weekday.4 = torstai | torstait
+from.weekday.5 = perjantai | perjantait
+from.weekday.6 = lauantai | lauantait
+
+# 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 = nolla
+number.1 = yksi | ensimmäinen
+number.2 = kaksi | toinen
+number.3 = kolme | kolmas
+number.4 = neljä | neljäs
+number.5 = viisi | viides
+number.6 = kuusi | kuudes
+number.7 = seitsemän | seitsemäs
+number.8 = kahdeksan | kahdeksas
+number.9 = yhdeksän | yhdeksäs
+number.10 = kymmenen | kymmenes
+number.11 = yksitoista | yhdestoista
+number.12 = kaksitoista | kahdestoista
+number.13 = kolmetoista | kolmastoista
+number.14 = neljätoista | neljästoista
+number.15 = viisitoista | viidestoista
+number.16 = kuusitoista | kuudestoista
+number.17 = seitsemäntoista | seitsemästoista
+number.18 = kahdeksantoista | kahdeksastoista
+number.19 = yhdeksäntoista | yhdeksästoista
+number.20 = kaksikymmentä | kahdeskymmenes
+number.21 = kaksikymmentäyksi | kahdeskymmenesensimmäinen
+number.22 = kaksikymmentäkaksi | kahdeskymmenestoinen
+number.23 = kaksikymmentäkolme | kahdeskymmeneskolmas
+number.24 = kaksikymmentäneljä | kahdeskymmenesneljäs
+number.25 = kaksikymmentäviisi | kahdeskymmenesviides
+number.26 = kaksikymmentäkuusi | kahdeskymmeneskuudes
+number.27 = kaksikymmentäseitsemän | kahdeskymmenesseitsemäs
+number.28 = kaksikymmentäkahdeksan | kahdeskymmeneskahdeksas
+number.29 = kaksikymmentäyhdeksän | kahdeskymmenesyhdeksäs
+number.30 = kolmekymmentä | kolmaskymmenes
+number.31 = kolmekymmentäyksi | kolmaskymmenesensimmäinen
+
+# LOCALIZATION NOTE (alphabet):
+# list all lower and uppercase letters if your language has an alphabet
+# otherwise leave it empty
+alphabet = abcdefghijklmnopqrstuvwxyzåäöABCDEFGHIJKLMNOPQRSTUVWXYZÅÄÖ
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-invitations-dialog.dtd b/l10n-fi/calendar/chrome/calendar/calendar-invitations-dialog.dtd
new file mode 100644
index 0000000000..90bfceee0a
--- /dev/null
+++ b/l10n-fi/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 "Kutsut">
+<!ENTITY calendar.invitations.dialog.statusmessage.updating.text "Päivitetään kutsulistaa.">
+<!ENTITY calendar.invitations.dialog.statusmessage.noinvitations.text "Vahvistamattomia kutsuja ei löytynyt.">
+
+<!-- Calendar Invitations List -->
+<!ENTITY calendar.invitations.list.accept.button.label "Hyväksy">
+<!ENTITY calendar.invitations.list.decline.button.label "Älä hyväksy">
+<!ENTITY calendar.invitations.list.recurrentevent.text "Toistuva tapahtuma">
+<!ENTITY calendar.invitations.list.alldayevent.text "Koko päivän tapahtuma">
+<!ENTITY calendar.invitations.list.location.text "Osoite: ">
+<!ENTITY calendar.invitations.list.organizer.text "Järjestäjä: ">
+<!ENTITY calendar.invitations.list.attendee.text "Osallistuja: ">
+<!ENTITY calendar.invitations.list.none.text "Ei mitään">
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-invitations-dialog.properties b/l10n-fi/calendar/chrome/calendar/calendar-invitations-dialog.properties
new file mode 100644
index 0000000000..106825cb8f
--- /dev/null
+++ b/l10n-fi/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=Koko päivän tapahtuma
+recurrent-event=Toistuva tapahtuma
+location=Sijainti: %S
+organizer=Järjestäjä: %S
+attendee=Osallistuja: %S
+none=Ei mitään
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd b/l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd
new file mode 100644
index 0000000000..5864a9335f
--- /dev/null
+++ b/l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.dtd
@@ -0,0 +1,7 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+ - License, v. 2.0. If a copy of the MPL was not distributed with this
+ - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY buttons.occurrence.accesskey "t">
+<!ENTITY buttons.allfollowing.accesskey "f">
+<!ENTITY buttons.parent.accesskey "a">
diff --git a/l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.properties b/l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.properties
new file mode 100644
index 0000000000..19b9c57a4a
--- /dev/null
+++ b/l10n-fi/calendar/chrome/calendar/calendar-occurrence-prompt.properties
@@ -0,0 +1,63 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+header.isrepeating.event.label=on toistuva tapahtuma
+header.isrepeating.task.label=on toistuva tehtävä
+
+header.containsrepeating.event.label=sisältää toistuvia tapahtumia
+header.containsrepeating.task.label=sisältää toistuvia tehtäviä
+header.containsrepeating.mixed.label=sisältää erityyppisiä toistuvia kohteita
+
+windowtitle.event.copy=Kopioi toistuva tapahtuma
+windowtitle.task.copy=Kopioi toistuva tehtävä
+windowtitle.mixed.copy=Kopioi toistuvia kohteita
+windowtitle.event.cut=Leikkaa toistuva tapahtuma
+windowtitle.task.cut=Leikkaa toistuva tehtävä
+windowtitle.mixed.cut=Leikkaa toistuvia kohteita
+windowtitle.event.delete=Poista toistuva tapahtuma
+windowtitle.task.delete=Poista toistuva tehtävä
+windowtitle.mixed.delete=Poista toistuvia kohteita
+windowtitle.event.edit=Muokkaa toistuvaa tapahtumaa
+windowtitle.task.edit=Muokkaa toistuvaa tehtävää
+
+buttons.occurrence.delete.label=Poista vain tämä tapahtuma
+buttons.occurrence.edit.label=Muokkaa vain tätä tapahtumaa
+
+buttons.allfollowing.delete.label=Poista tämä ja kaikki tulevat tapahtumat
+buttons.allfollowing.edit.label=Muokkaa tätä ja kaikkia tulevia tapahtumia
+
+buttons.parent.delete.label=Poista kaikki tapahtumat
+buttons.parent.edit.label=Muokkaa kaikkia tapahtumia
+windowtitle.mixed.edit=Muokkaa toistuvia kohteita
+windowtitle.multipleitems=Valitut kohteet
+
+buttons.single.occurrence.copy.label=Kopioi vain tämä esiintymä
+buttons.single.occurrence.cut.label=Leikkaa vain tämä esiintymä
+buttons.single.occurrence.delete.label=Poista vain tämä esiintymä
+buttons.single.occurrence.edit.label=Muokkaa vain tätä esiintymää
+
+buttons.multiple.occurrence.copy.label=Kopioi vain valitut esiintymät
+buttons.multiple.occurrence.cut.label=Leikkaa vain valitut esiintymät
+buttons.multiple.occurrence.delete.label=Poista vain valitut esiintymät
+buttons.multiple.occurrence.edit.label=Muokkaa vain valittuja esiintymiä
+
+buttons.single.allfollowing.copy.label=Kopioi tämä ja kaikki tulevat esiintymät
+buttons.single.allfollowing.cut.label=Leikkaa tämä ja kaikki tulevat esiintymät
+buttons.single.allfollowing.delete.label=Poista tämä ja kaikki tulevat esiintymät
+buttons.single.allfollowing.edit.label=Muokkaa tätä ja kaikkia tulevia esiintymiä
+
+buttons.multiple.allfollowing.copy.label=Kopioi valitut ja kaikki tulevat esiintymät
+buttons.multiple.allfollowing.cut.label=Leikkaa valitut ja kaikki tulevat esiintymät
+buttons.multiple.allfollowing.delete.label=Poista valitut ja kaikki tulevat esiintymät
+buttons.multiple.allfollowing.edit.label=Muokkaa valittuja ja kaikkia tulevia esiintymiä
+
+buttons.single.parent.copy.label=Kopioi kaikki esiintymät
+buttons.single.parent.cut.label=Leikkaa kaikki esiintymät
+buttons.single.parent.delete.label=Poista kaikki esiintymät
+buttons.single.parent.edit.label=Muokkaa kaikkia esiintymiä
+
+buttons.multiple.parent.copy.label=Kopioi valittujen kohteiden kaikki esiintymät
+buttons.multiple.parent.cut.label=Leikkaa valittujen kohteiden kaikki esiintymät
+buttons.multiple.parent.delete.label=Poista valittujen kohteiden kaikki esiintymät
+buttons.multiple.parent.edit.label=Muokkaa valittujen kohteiden kaikkia esiintymiä
diff --git a/l10n-fi/calendar/chrome/calendar/calendar.dtd b/l10n-fi/calendar/chrome/calendar/calendar.dtd
new file mode 100644
index 0000000000..712a38450c
--- /dev/null
+++ b/l10n-fi/calendar/chrome/calendar/calendar.dtd
@@ -0,0 +1,407 @@
+<!-- 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 "Kalenteri">
+<!ENTITY calendar.calendar.accesskey "K">
+
+<!ENTITY calendar.newevent.button.tooltip "Luo uusi tapahtuma" >
+<!ENTITY calendar.newtask.button.tooltip "Luo uusi tehtävä" >
+
+<!ENTITY calendar.unifinder.showcompletedtodos.label "Näytä suoritetut tehtävät">
+
+<!ENTITY calendar.today.button.label "Tänään">
+<!ENTITY calendar.tomorrow.button.label "Huomenna">
+<!ENTITY calendar.upcoming.button.label "Tulevat">
+
+<!ENTITY calendar.events.filter.all.label "Kaikki tapahtumat">
+<!ENTITY calendar.events.filter.today.label "Tämän päivän tapahtumat">
+<!ENTITY calendar.events.filter.future.label "Kaikki tulevat tapahtumat">
+<!ENTITY calendar.events.filter.current.label "Valittuna oleva päivä">
+<!ENTITY calendar.events.filter.currentview.label "Tapahtumat nykyisessä näkymässä">
+<!ENTITY calendar.events.filter.next7Days.label "Seuraavien 7 päivän tapahtumat">
+<!ENTITY calendar.events.filter.next14Days.label "Seuraavien 14 päivän tapahtumat">
+<!ENTITY calendar.events.filter.next31Days.label "Seuraavien 31 päivän tapahtumat">
+<!ENTITY calendar.events.filter.thisCalendarMonth.label "Tämän kalenterikuukauden tapahtumat">
+
+<!-- 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 "Suoritettu">
+<!ENTITY calendar.unifinder.tree.done.tooltip2 "Lajittele suoritustilan mukaan">
+<!ENTITY calendar.unifinder.tree.priority.label "Tärkeysaste">
+<!ENTITY calendar.unifinder.tree.priority.tooltip2 "Lajittele tärkeysasteen mukaan">
+<!ENTITY calendar.unifinder.tree.title.label "Otsikko">
+<!ENTITY calendar.unifinder.tree.title.tooltip2 "Lajittele otsikon mukaan">
+<!ENTITY calendar.unifinder.tree.percentcomplete.label "&#37; suoritettu">
+<!ENTITY calendar.unifinder.tree.percentcomplete.tooltip2 "Lajittele sen mukaan, montako prosenttia on valmiina">
+<!ENTITY calendar.unifinder.tree.startdate.label "Alkaa">
+<!ENTITY calendar.unifinder.tree.startdate.tooltip2 "Lajittele aloituspäivän mukaan">
+<!ENTITY calendar.unifinder.tree.enddate.label "Päättyy">
+<!ENTITY calendar.unifinder.tree.enddate.tooltip2 "Lajittele päättymispäivän mukaan">
+<!ENTITY calendar.unifinder.tree.duedate.label "Eräpäivä">
+<!ENTITY calendar.unifinder.tree.duedate.tooltip2 "Lajittele eräpäivän mukaan">
+<!ENTITY calendar.unifinder.tree.completeddate.label "Suoritettu">
+<!ENTITY calendar.unifinder.tree.completeddate.tooltip2 "Lajittele suorituspäivän mukaan">
+<!ENTITY calendar.unifinder.tree.categories.label "Luokka">
+<!ENTITY calendar.unifinder.tree.categories.tooltip2 "Lajittele luokan mukaan">
+<!ENTITY calendar.unifinder.tree.location.label "Sijainti">
+<!ENTITY calendar.unifinder.tree.location.tooltip2 "Lajittele sijainnin mukaan">
+<!ENTITY calendar.unifinder.tree.status.label "Tila">
+<!ENTITY calendar.unifinder.tree.status.tooltip2 "Lajittele tilan mukaan">
+<!ENTITY calendar.unifinder.tree.calendarname.label "Kalenteri">
+<!ENTITY calendar.unifinder.tree.calendarname.tooltip2 "Lajittele kalenterin nimen mukaan">
+<!ENTITY calendar.unifinder.tree.duration.label "Valmis">
+<!ENTITY calendar.unifinder.tree.duration.tooltip2 "Lajittele sen mukaan milloin tehtävän tulee olla valmis">
+<!ENTITY calendar.unifinder.close.tooltip "Sulje tapahtumahaku ja -luettelo">
+
+<!ENTITY calendar.today.button.tooltip "Siirry tähän päivään" >
+<!ENTITY calendar.todaypane.button.tooltip "Näytä tänään-ruutu" >
+
+<!ENTITY calendar.day.button.tooltip "Siirry päivänäkymään" >
+<!ENTITY calendar.week.button.tooltip "Siirry viikkonäkymään" >
+<!ENTITY calendar.month.button.tooltip "Siirry kuukausinäkymään" >
+<!ENTITY calendar.multiweek.button.tooltip "Siirry moniviikkonäkymään" >
+
+<!ENTITY calendar.nextday.label "Seuraava päivä" >
+<!ENTITY calendar.prevday.label "Edellinen päivä" >
+<!ENTITY calendar.nextday.accesskey "S" >
+<!ENTITY calendar.prevday.accesskey "E" >
+<!ENTITY calendar.nextweek.label "Seuraava viikko" >
+<!ENTITY calendar.prevweek.label "Edellinen viikko" >
+<!ENTITY calendar.nextweek.accesskey "S" >
+<!ENTITY calendar.prevweek.accesskey "E" >
+<!ENTITY calendar.nextmonth.label "Seuraava kuukausi" >
+<!ENTITY calendar.prevmonth.label "Edellinen kuukausi" >
+<!ENTITY calendar.nextmonth.accesskey "S" >
+<!ENTITY calendar.prevmonth.accesskey "E" >
+
+<!ENTITY calendar.navigation.nextday.tooltip "Siirry päivä eteenpäin" >
+<!ENTITY calendar.navigation.prevday.tooltip "Siirry päivä taaksepäin" >
+<!ENTITY calendar.navigation.nextweek.tooltip "Siirry viikko eteenpäin" >
+<!ENTITY calendar.navigation.prevweek.tooltip "Siirry viikko taaksepäin" >
+<!ENTITY calendar.navigation.nextmonth.tooltip "Siirry seuraavaan kuukauteen" >
+<!ENTITY calendar.navigation.prevmonth.tooltip "Siirry edelliseen kuukauteen" >
+
+<!ENTITY calendar.newevent.button.label "Uusi tapahtuma" >
+<!ENTITY calendar.newtask.button.label "Uusi tehtävä" >
+<!ENTITY calendar.print.button.label "Tulosta" >
+<!ENTITY calendar.print.button.accesskey "u">
+
+<!ENTITY calendar.day.button.label "Päivä" >
+<!ENTITY calendar.week.button.label "Viikko" >
+<!ENTITY calendar.month.button.label "Kuukausi" >
+<!ENTITY calendar.multiweek.button.label "Moniviikko" >
+<!ENTITY calendar.onlyworkday.checkbox.label "Vain työpäivät" >
+<!ENTITY calendar.onlyworkday.checkbox.accesskey "V" >
+<!ENTITY calendar.displaytodos.checkbox.label "Näkymässä olevat tehtävät" >
+<!ENTITY calendar.displaytodos.checkbox.accesskey "k" >
+<!ENTITY calendar.completedtasks.checkbox.label "Näytä suoritetut tehtävät" >
+<!ENTITY calendar.completedtasks.checkbox.accesskey "N" >
+
+<!ENTITY calendar.orientation.label "Kierrä näkymää" >
+<!ENTITY calendar.orientation.accesskey "K" >
+
+<!ENTITY calendar.search.options.searchfor " sisältää">
+
+<!ENTITY calendar.list.header.label "Kalenteri">
+
+<!ENTITY calendar.task.filter.title.label "Näytä">
+<!ENTITY calendar.task.filter.all.label "Kaikki">
+<!ENTITY calendar.task.filter.all.accesskey "K">
+<!ENTITY calendar.task.filter.today.label "Tämä päivä">
+<!ENTITY calendar.task.filter.today.accesskey "T">
+<!ENTITY calendar.task.filter.next7days.label "Seuraavat 7 päivää">
+<!ENTITY calendar.task.filter.next7days.accesskey "S">
+<!ENTITY calendar.task.filter.notstarted.label "Aloittamattomat tehtävät">
+<!ENTITY calendar.task.filter.notstarted.accesskey "A">
+<!ENTITY calendar.task.filter.overdue.label "Myöhästyneet tehtävät">
+<!ENTITY calendar.task.filter.overdue.accesskey "M">
+<!ENTITY calendar.task.filter.completed.label "Suoritetut tehtävät">
+<!ENTITY calendar.task.filter.completed.accesskey "S">
+<!ENTITY calendar.task.filter.open.label "Tekemättömät tehtävät">
+<!ENTITY calendar.task.filter.open.accesskey "m">
+
+<!-- LOCALIZATION NOTE(calendar.task.filter.current.label)
+ "Current Tasks" will show all tasks, except those with a start date set
+ that is after today and after the selected date. If a task repeats, a
+ separate entry will be shown for each of the occurrences that happen on or
+ before today (or the selected date, whichever is later). -->
+<!ENTITY calendar.task.filter.current.label "Nykyiset tehtävät">
+<!ENTITY calendar.task.filter.current.accesskey "N">
+
+<!ENTITY calendar.task-details.title.label "otsikko">
+<!ENTITY calendar.task-details.organizer.label "lähettäjä">
+<!ENTITY calendar.task-details.priority.label "tärkeysaste">
+<!ENTITY calendar.task-details.priority.low.label "Matala">
+<!ENTITY calendar.task-details.priority.normal.label "Normaali">
+<!ENTITY calendar.task-details.priority.high.label "Korkea">
+<!ENTITY calendar.task-details.status.label "tila">
+<!ENTITY calendar.task-details.category.label "tyyppi">
+<!ENTITY calendar.task-details.repeat.label "toista">
+<!ENTITY calendar.task-details.attachments.label "liitteet">
+<!ENTITY calendar.task-details.start.label "aloituspäivä">
+<!ENTITY calendar.task-details.due.label "valmis">
+
+<!ENTITY calendar.task.category.button.tooltip "Luokittele tehtäviä">
+<!ENTITY calendar.task.complete.button.tooltip "Merkitse valitut tehtävät suoritetuksi">
+<!ENTITY calendar.task.priority.button.tooltip "Muuta tärkeysastetta">
+
+<!ENTITY calendar.task.text-filter.textbox.emptytext.base1 "Suodata tehtävät #1">
+<!ENTITY calendar.task.text-filter.textbox.emptytext.keylabel.nonmac "&lt;Ctrl+Shift+K&gt;">
+<!ENTITY calendar.task.text-filter.textbox.emptytext.keylabel.mac "&lt;&#x21E7;&#x2318;K&gt;">
+
+<!-- Context Menu -->
+<!ENTITY calendar.context.modifyorviewitem.label "Avaa">
+<!ENTITY calendar.context.modifyorviewitem.accesskey "A">
+<!ENTITY calendar.context.modifyorviewtask.label "Avaa tehtävä…">
+<!ENTITY calendar.context.modifyorviewtask.accesskey "A">
+<!ENTITY calendar.context.newevent.label "Uusi tapahtuma…">
+<!ENTITY calendar.context.newevent.accesskey "U">
+<!ENTITY calendar.context.newtodo.label "Uusi tehtävä…">
+<!ENTITY calendar.context.newtodo.accesskey "U">
+<!ENTITY calendar.context.deletetask.label "Poista tehtävä">
+<!ENTITY calendar.context.deletetask.accesskey "P">
+<!ENTITY calendar.context.deleteevent.label "Poista tapahtuma">
+<!ENTITY calendar.context.deleteevent.accesskey "P">
+<!ENTITY calendar.context.cutevent.label "Leikkaa">
+<!ENTITY calendar.context.cutevent.accesskey "L">
+<!ENTITY calendar.context.copyevent.label "Kopioi">
+<!ENTITY calendar.context.copyevent.accesskey "K">
+<!ENTITY calendar.context.pasteevent.label "Liitä">
+<!ENTITY calendar.context.pasteevent.accesskey "i">
+<!ENTITY calendar.context.button.label "Tänään-ruutu">
+<!ENTITY calendar.context.button.accesskey "T">
+
+<!ENTITY calendar.context.attendance.menu.label "Osallistuminen">
+<!ENTITY calendar.context.attendance.menu.accesskey "O">
+<!ENTITY calendar.context.attendance.occurrence.label "Vain tämä esiintymä">
+<!ENTITY calendar.context.attendance.all2.label "Valmis sarja">
+<!ENTITY calendar.context.attendance.send.label "Lähetä ilmoitus nyt">
+<!ENTITY calendar.context.attendance.send.accesskey "L">
+<!ENTITY calendar.context.attendance.dontsend.label "Älä lähetä muistutusta">
+<!ENTITY calendar.context.attendance.dontsend.accesskey "Ä">
+
+<!ENTITY calendar.context.attendance.occ.accepted.accesskey "y">
+<!ENTITY calendar.context.attendance.occ.accepted.label "Hyväksytty">
+<!ENTITY calendar.context.attendance.occ.tentative.accesskey "u">
+<!ENTITY calendar.context.attendance.occ.tentative.label "Hyväksytty alustavasti">
+<!ENTITY calendar.context.attendance.occ.declined.accesskey "ä">
+<!ENTITY calendar.context.attendance.occ.declined.label "Hylätty">
+<!ENTITY calendar.context.attendance.occ.delegated.accesskey "e">
+<!ENTITY calendar.context.attendance.occ.delegated.label "Delegoitu">
+<!ENTITY calendar.context.attendance.occ.needsaction.accesskey "T">
+<!ENTITY calendar.context.attendance.occ.needsaction.label "Tarvitsee vielä toimia">
+<!ENTITY calendar.context.attendance.occ.inprogress.accesskey "n">
+<!ENTITY calendar.context.attendance.occ.inprogress.label "Meneillään">
+<!ENTITY calendar.context.attendance.occ.completed.accesskey "V">
+<!ENTITY calendar.context.attendance.occ.completed.label "Valmis">
+
+<!ENTITY calendar.context.attendance.all.accepted.accesskey "y">
+<!ENTITY calendar.context.attendance.all.accepted.label "Hyväksytty">
+<!ENTITY calendar.context.attendance.all.tentative.accesskey "a">
+<!ENTITY calendar.context.attendance.all.tentative.label "Hyväksytty alustavasti">
+<!ENTITY calendar.context.attendance.all.declined.accesskey "H">
+<!ENTITY calendar.context.attendance.all.declined.label "Hylätty">
+<!ENTITY calendar.context.attendance.all.delegated.accesskey "D">
+<!ENTITY calendar.context.attendance.all.delegated.label "Delegoitu">
+<!ENTITY calendar.context.attendance.all.needsaction.accesskey "T">
+<!ENTITY calendar.context.attendance.all.needsaction.label "Tarvitsee vielä toimia">
+<!ENTITY calendar.context.attendance.all.inprogress.accesskey "K">
+<!ENTITY calendar.context.attendance.all.inprogress.label "Käynnissä">
+<!ENTITY calendar.context.attendance.all.completed.accesskey "V">
+<!ENTITY calendar.context.attendance.all.completed.label "Valmis">
+
+<!-- Task Context Menu -->
+<!ENTITY calendar.context.progress.label "Edistyminen">
+<!ENTITY calendar.context.progress.accesskey "E">
+<!ENTITY calendar.context.priority.label "Tärkeysaste">
+<!ENTITY calendar.context.priority.accesskey "r">
+<!ENTITY calendar.context.postpone.label "Siirrä tehtävän alkua">
+<!ENTITY calendar.context.postpone.accesskey "S">
+
+<!ENTITY percnt "&#38;#37;" ><!--=percent sign-->
+
+<!ENTITY calendar.context.markcompleted.label "Merkitse suoritetuksi">
+<!ENTITY calendar.context.markcompleted.accesskey "o">
+
+<!ENTITY progress.level.0 "0 &percnt; suoritettu">
+<!ENTITY progress.level.0.accesskey "0">
+<!ENTITY progress.level.25 "25 &percnt; suoritettu">
+<!ENTITY progress.level.25.accesskey "2">
+<!ENTITY progress.level.50 "50 &percnt; suoritettu">
+<!ENTITY progress.level.50.accesskey "5">
+<!ENTITY progress.level.75 "75 &percnt; suoritettu">
+<!ENTITY progress.level.75.accesskey "7">
+<!ENTITY progress.level.100 "100 &percnt; suoritettu">
+<!ENTITY progress.level.100.accesskey "1">
+
+<!ENTITY priority.level.none "Ei määritetty">
+<!ENTITY priority.level.none.accesskey "E">
+<!ENTITY priority.level.low "Matala">
+<!ENTITY priority.level.low.accesskey "M">
+<!ENTITY priority.level.normal "Normaali">
+<!ENTITY priority.level.normal.accesskey "N">
+<!ENTITY priority.level.high "Korkea">
+<!ENTITY priority.level.high.accesskey "K">
+
+<!ENTITY calendar.context.postpone.1hour.label "Yksi tunti">
+<!ENTITY calendar.context.postpone.1hour.accesskey "t">
+<!ENTITY calendar.context.postpone.1day.label "Yksi päivä">
+<!ENTITY calendar.context.postpone.1day.accesskey "p">
+<!ENTITY calendar.context.postpone.1week.label "Yksi viikko">
+<!ENTITY calendar.context.postpone.1week.accesskey "v">
+
+<!ENTITY calendar.copylink.label "Kopioi linkin osoite">
+<!ENTITY calendar.copylink.accesskey "K">
+
+<!-- Task View -->
+<!-- Note that the above *.context.* strings are currently used for the other
+ task action buttons -->
+<!ENTITY calendar.taskview.delete.label "Poista">
+
+<!-- Server Context Menu -->
+<!ENTITY calendar.context.newserver.label "Uusi kalenteri…">
+<!ENTITY calendar.context.newserver.accesskey "n">
+<!ENTITY calendar.context.findcalendar.label "Etsi kalenteri…" >
+<!ENTITY calendar.context.findcalendar.accesskey "E" >
+<!ENTITY calendar.context.deleteserver2.label "Poista kalenteri…">
+<!ENTITY calendar.context.deleteserver2.accesskey "T">
+
+<!-- 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 "Poista kalenteri…">
+<!ENTITY calendar.context.removeserver.accesskey "i">
+<!ENTITY calendar.context.unsubscribeserver.label "Peru kalenterin tilaus…">
+<!ENTITY calendar.context.unsubscribeserver.accesskey "r">
+<!ENTITY calendar.context.synccalendars.label "Synkronoi kalenterit">
+<!ENTITY calendar.context.synccalendars.accesskey "S">
+<!ENTITY calendar.context.publish.label "Julkaise kalenteri…">
+<!ENTITY calendar.context.publish.accesskey "J">
+<!ENTITY calendar.context.export.label "Vie kalenteri…">
+<!ENTITY calendar.context.export.accesskey "e">
+<!ENTITY calendar.context.properties.label "Ominaisuudet">
+<!ENTITY calendar.context.properties.accesskey "O">
+
+<!-- LOCALIZATION NOTE (calendar.context.showcalendar.accesskey)
+ This is the access key used for the showCalendar string -->
+<!ENTITY calendar.context.showcalendar.accesskey "N">
+
+<!-- LOCALIZATION NOTE (calendar.context.hidecalendar.accesskey)
+ This is the access key used for the hideCalendar string -->
+<!ENTITY calendar.context.hidecalendar.accesskey "P">
+
+<!-- LOCALIZATION NOTE (calendar.context.showonly.accesskey)
+ This is the access key used for the showOnlyCalendar string -->
+<!ENTITY calendar.context.showonly.accesskey "v">
+<!ENTITY calendar.context.showall.label "Näytä kaikki kalenterit">
+<!ENTITY calendar.context.showall.accesskey "k">
+
+<!ENTITY calendar.context.convertmenu.label "Muunna">
+<!ENTITY calendar.context.convertmenu.accesskey.mail "n">
+<!ENTITY calendar.context.convertmenu.accesskey.calendar "n">
+<!ENTITY calendar.context.convertmenu.event.label "Tapahtumaksi…">
+<!ENTITY calendar.context.convertmenu.event.accesskey "T">
+<!ENTITY calendar.context.convertmenu.message.label "Viestiksi…">
+<!ENTITY calendar.context.convertmenu.message.accesskey "V">
+<!ENTITY calendar.context.convertmenu.task.label "Tehtäväksi…">
+<!ENTITY calendar.context.convertmenu.task.accesskey "T">
+
+<!ENTITY calendar.tasks.view.minimonth.label "Pienoiskuukausi">
+<!ENTITY calendar.tasks.view.minimonth.accesskey "P">
+
+<!ENTITY calendar.tasks.view.calendarlist.label "Kalenteriluettelo">
+<!ENTITY calendar.tasks.view.calendarlist.accesskey "l">
+
+<!ENTITY calendar.tasks.view.filtertasks.label "Suodata tehtäviä">
+<!ENTITY calendar.tasks.view.filtertasks.accesskey "S">
+
+<!-- Calendar Alarm Dialog -->
+
+<!ENTITY calendar.alarm.location.label "Osoite:" >
+<!ENTITY calendar.alarm.details.label "Lisätiedot…" >
+
+<!ENTITY calendar.alarm.snoozefor.label "Lykkää" >
+<!ENTITY calendar.alarm.snoozeallfor.label "Lykkää kaikkia" >
+<!ENTITY calendar.alarm.title.label "Kalenterimuistutukset" >
+<!ENTITY calendar.alarm.dismiss.label "Lopeta" >
+<!ENTITY calendar.alarm.dismissall.label "Lopeta kaikki" >
+
+<!ENTITY calendar.alarm.snooze.5minutes.label "5 minuutin kuluttua" >
+<!ENTITY calendar.alarm.snooze.10minutes.label "10 minuutin kuluttua" >
+<!ENTITY calendar.alarm.snooze.15minutes.label "15 minuutin kuluttua" >
+<!ENTITY calendar.alarm.snooze.30minutes.label "30 minuutin kuluttua" >
+<!ENTITY calendar.alarm.snooze.45minutes.label "45 minuutin kuluttua" >
+<!ENTITY calendar.alarm.snooze.1hour.label "1 tunnin kuluttua" >
+<!ENTITY calendar.alarm.snooze.2hours.label "2 tunnin kuluttua" >
+<!ENTITY calendar.alarm.snooze.1day.label "1 päivän kuluttua" >
+
+<!-- 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 "Peruuta lykkäys">
+
+<!-- Calendar Server Dialog -->
+<!ENTITY calendar.server.dialog.title.edit "Muokkaa kalenteria">
+<!ENTITY calendar.server.dialog.name.label "Kalenterin nimi:">
+
+<!-- Calendar Properties -->
+<!ENTITY calendarproperties.color.label "Väri:">
+<!ENTITY calendarproperties.webdav.label "iCalendar (ICS)">
+<!ENTITY calendarproperties.caldav.label "CalDAV">
+<!ENTITY calendarproperties.format.label "Formaatti:">
+<!ENTITY calendarproperties.location.label "Sijainti:">
+<!ENTITY calendarproperties.refreshInterval.label "Päivitä kalenteri:">
+<!ENTITY calendarproperties.refreshInterval.manual.label "Käsin">
+<!ENTITY calendarproperties.name.label "Nimi:">
+<!ENTITY calendarproperties.readonly.label "Vain luku">
+<!ENTITY calendarproperties.firealarms.label "Näytä muistutukset">
+<!ENTITY calendarproperties.cache3.label "Yhteydettömän tilan tuki">
+<!ENTITY calendarproperties.enabled2.label "Ota tämä kalenteri käyttöön">
+<!ENTITY calendarproperties.forceDisabled.label "Tämän kalenterin tuottajaa ei löytynyt. Tämä tapahtuu usein tiettyjen lisäosien poistamisen tai käytöstä poistamisen jälkeen.">
+<!ENTITY calendarproperties.unsubscribe.label "Peruuta tilaus">
+<!ENTITY calendarproperties.unsubscribe.accesskey "P">
+
+<!-- Calendar Publish Dialog -->
+<!ENTITY calendar.publish.dialog.title "Julkaise kalenteri">
+<!ENTITY calendar.publish.url.label "Julkaisuosoite">
+<!ENTITY calendar.publish.publish.button "Julkaise">
+<!ENTITY calendar.publish.close.button "Sulje">
+
+<!ENTITY calendar.publish.example.url.description "Esimerkiksi http://www.palvelin.fi/webdav/testi.ics">
+
+<!-- Select Calendar Dialog -->
+<!ENTITY calendar.select.dialog.title "Valitse kalenteri">
+
+<!-- Calendar Printing -->
+<!ENTITY calendar.print.window.title "Tulosta kalenteri">
+<!ENTITY calendar.print.title.label "Otsikko:">
+<!ENTITY calendar.print.layout.label "Asettelu:">
+<!ENTITY calendar.print.range.label "Mitä tulostetaan">
+<!ENTITY calendar.print.currentView2.label "Nykyinen näkymä">
+<!ENTITY calendar.print.selectedEventsAndTasks.label "Valitut tapahtumat tai tehtävät">
+<!ENTITY calendar.print.tasks.label "Tehtävät">
+<!ENTITY calendar.print.events.label "Tapahtumat">
+<!ENTITY calendar.print.custom.label "Valitse:">
+<!ENTITY calendar.print.from.label "Alku:">
+<!ENTITY calendar.print.to.label "Loppu:">
+<!ENTITY calendar.print.settingsGroup.label "Tulostusasetukset">
+<!ENTITY calendar.print.optionsGroup.label "Valinnat">
+<!ENTITY calendar.print.taskswithnoduedate.label "Tehtävät ilman valmistumispäivää">
+<!ENTITY calendar.print.completedtasks.label "Suoritetut tehtävät">
+
+<!-- Error reporting -->
+<!ENTITY calendar.error.detail "Lisätiedot…">
+<!ENTITY calendar.error.code "Virhekoodi:">
+<!ENTITY calendar.error.description "Kuvaus:">
+<!ENTITY calendar.error.title "Tapahtui virhe">
+
+<!-- Extract buttons in message header -->
+<!ENTITY calendar.extract.event.button "Lisää tapahtumaksi">
+<!ENTITY calendar.extract.task.button "Lisää tehtäväksi">
+<!ENTITY calendar.extract.event.button.tooltip "Etsi aikataulutiedot viestistä ja lisää ne kalenteriin tapahtumaksi">
+<!ENTITY calendar.extract.task.button.tooltip "Etsi aikataulutiedot viestistä ja lisää ne kalenteriin tehtäväksi">
diff --git a/l10n-fi/calendar/chrome/calendar/calendar.properties b/l10n-fi/calendar/chrome/calendar/calendar.properties
new file mode 100644
index 0000000000..0af29d2568
--- /dev/null
+++ b/l10n-fi/calendar/chrome/calendar/calendar.properties
@@ -0,0 +1,809 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Misc. strings in JS
+
+# LOCALIZATION NOTE (PrintPreviewWindowTitle):
+# %1$S will be replaced with the title of a html frame
+PrintPreviewWindowTitle=Tulostuksen esikatselu: %1$S
+Untitled=Nimetön
+
+# Default name for new events
+newEvent=Uusi tapahtuma
+
+# Titles for the event/task dialog
+newEventDialog=Uusi tapahtuma
+editEventDialog=Muokkaa tapahtumaa
+newTaskDialog=Uusi tehtävä
+editTaskDialog=Muokkaa tehtävää
+
+# Do you want to save changes?
+askSaveTitleEvent=Tallenna tapahtuma
+askSaveTitleTask=Tallenna tehtävä
+askSaveMessageEvent=Tapahtumaa ei ole tallennettu. Haluatko tallentaa sen?
+askSaveMessageTask=Tehtävää ei ole tallennettu. Haluatko tallentaa sen?
+
+# Event Dialog Warnings
+warningEndBeforeStart=Antamasi päättymispäivämäärä on ennen aloituspäivämäärää
+warningUntilDateBeforeStart=Päättymispäivä on aikaisempi kuin aloituspäivä
+
+# The name of the calendar provided with the application by default
+homeCalendarName=Koti
+
+# The name given to a calendar if an opened calendar has an empty filename
+untitledCalendarName=Nimetön kalenteri
+
+# Event status: Tentative, Confirmed, Cancelled
+# ToDo task status: NeedsAction, InProcess, Completed, Cancelled
+statusTentative =Alustava
+statusConfirmed =Vahvistettu
+eventStatusCancelled=Peruttu
+todoStatusCancelled =Peruttu
+statusNeedsAction =Tarvitsee toimintaa
+statusInProcess =Käynnissä
+statusCompleted =Valmis
+
+# Task priority, these should match the priority.level.* labels in calendar.dtd
+highPriority=Korkea
+normalPriority=Normaali
+lowPriority=Matala
+
+importPrompt=Mihin kalenteriin haluat tuoda nämä merkinnät?
+exportPrompt=Mistä kalenterista haluat viedä?
+pastePrompt=Mihin kirjoitusoikeudelliseen kalenteriisi haluat liittää?
+publishPrompt=Minkä kalenterin haluat julkaista?
+
+# LOCALIZATION NOTE (pasteEventAlso): The users pasting operation includes among
+# others also a meeting invitation - this is used as a affix in
+# pasteNotifyAbout
+pasteEventAlso=Liittämisesi sisältää tapaamisen
+# LOCALIZATION NOTE (pasteEventsAlso): The users pasting operation includes among
+# others also several meeting invitations - this is used as a affix in
+# pasteNotifyAbout
+pasteEventsAlso=Liittämisesi sisältää tapaamisia
+# LOCALIZATION NOTE (pasteTaskAlso): The users pasting operation includes among
+# others also an assigned task - this is used as a affix in pasteNotifyAbout
+pasteTaskAlso=Liittämisesi sisältää delegoidun tehtävän
+# LOCALIZATION NOTE (pasteTasksAlso): The users pasting operation include among
+# others also several assigned tasks - this is used as a affix in
+# pasteNotifyAbout
+pasteTasksAlso=Liittämisesi sisältää delegoituja tehtäviä
+# 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=Liittämisesi sisältää tapaamisia ja delegoituja tehtäviä
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting a meeting -
+# this is used as a affix in pasteNotifyAbout
+pasteEventOnly=Olet liittämässä tapaamista
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several meetings -
+# this is used as a affix in pasteNotifyAbout
+pasteEventsOnly=Olet liittämässä tapaamisia
+# LOCALIZATION NOTE (pasteEventOnly): The users is pasting an assigned task -
+# this is used as a affix in pasteNotifyAbout
+pasteTaskOnly=Olet liittämässä delegoitua tehtävää
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting several assigned
+# tasks - this is used as a affix in pasteNotifyAbout
+pasteTasksOnly=Olet liittämässä delegoituja tehtäviä
+# LOCALIZATION NOTE (pasteEventsOnly): The users is pasting assigned task(s) and
+# meeting(s) - this is used as a affix in pasteNotifyAbout
+pasteItemsOnly=Olet liittämässä tapaamisia ja delegoituja tehtäviä
+
+# LOCALIZATION NOTE (pasteNotifyAbout): Text displayed if pasting an invitation
+# or assigned task
+# %1$S - pasteEvent* or pasteTask*
+pasteNotifyAbout=%1$S - haluatko lähettää päivityksen kaikille osallistujille?
+
+# LOCALIZATION NOTE (pasteAndNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteAndNotifyLabel=Liitä ja lähetä nyt
+# LOCALIZATION NOTE (pasteDontNotifyLabel): button label used in calendar prompt
+# of the pasted item has attendees
+pasteDontNotifyLabel=Liitä lähettämättä
+
+# LOCALIZATION NOTE (importItemsFailed):
+# %1$S will be replaced with number of failed items
+# %2$S will be replaced with last error code / error string
+importItemsFailed=%1$S merkintää ei voitu tuoda. Viimeinen virhe oli: %2$S
+# LOCALIZATION NOTE (noItemsInCalendarFile2):
+# %1$S will be replaced with file path
+noItemsInCalendarFile2=Ei voitu tuoda kohteesta %1$S. Tästä tiedostosta ei löytynyt tuontikelpoisia kohteita.
+
+#spaces needed at the end of the following lines
+eventDescription=Kuvaus:
+
+unableToRead=Tiedostoa ei voitu lukea:
+unableToWrite=Tiedostoon ei voitu kirjoittaa:
+defaultFileName=MozillaKalTapahtumat
+HTMLTitle=Mozilla-kalenteri
+
+# 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=Tuntematon ja määrittämätön aikavyöhyke löytyi luettaessa tiedostoa %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 merkintää ohitettiin, koska ne löytyvät sekä kohdekalenterista että kalenteritiedostosta %2$S.
+
+unableToCreateProvider=Tapahtui virhe valmisteltaessa kalenteritiedostoa %1$S käyttökuntoon. Se ei tule olemaan käytettävissä.
+
+# Sample: Unknown timezone "USPacific" in "Dentist Appt". Using the 'floating' local timezone instead: 2008/02/28 14:00:00
+unknownTimezoneInItem=Tuntematon aikavyöhyke "%1$S" osoitekirjassa "%2$S". Sen sijaan käytetään paikallista "leijuvaa" aikavyöhykettä: %3$S
+TimezoneErrorsAlertTitle=Aikavyöhykevirheitä
+TimezoneErrorsSeeConsole=Katso Virhekonsoli: Tuntemattomia aikavyöhykkeitä kohdellaan paikallisena 'leijuvana' aikavyöhykkeenä.
+
+# The following strings are for the prompt to delete/unsubscribe from the calendar
+removeCalendarTitle=Poista kalenteri
+removeCalendarButtonDelete=Poista kalenteri
+removeCalendarButtonUnsubscribe=Peruuta tilaus
+
+# LOCALIZATION NOTE (removeCalendarMessageDeleteOrUnsubscribe): Shown for
+# calendar where both deleting and unsubscribing is possible.
+# %1$S: The name of a calendar
+removeCalendarMessageDeleteOrUnsubscribe=Haluatko poistaa kalenterin "%1$S"? Tilauksen peruutus poistaa kalenterin luettelosta, tyhjentäminen myös poistaa kalenterin tiedot pysyvästi.
+
+# LOCALIZATION NOTE (removeCalendarMessageDelete): Shown for calendar where
+# deleting is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageDelete=Haluatko poistaa kalenterin "%1$S" pysyvästi?
+
+# LOCALIZATION NOTE (removeCalendarMessageUnsubscribe): Shown for calendar
+# where unsubscribing is the only option.
+# %1$S: The name of a calendar
+removeCalendarMessageUnsubscribe=Haluatko poistaa kalenterin "%1$S" tilauksen?
+
+WeekTitle=Viikko %1$S
+None=Ei mitään
+
+# 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=Kalenteritietosi eivät ole yhteensopivia %1$Sin tämän version kanssa. %1$Sin uudempi versio on päivittänyt profiilisi kalenteritiedot. Datatiedostosta on luotu varmuuskopio nimellä "%2$S". Jatketaan käyttäen äskettäin luotua datatiedostoa.
+
+# List of events or todos (unifinder)
+eventUntitled=Nimetön
+
+# Tooltips of events or todos
+tooltipTitle=Otsikko:
+tooltipLocation=Osoite:
+# 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=Päivämäärä:
+# event calendar name
+tooltipCalName=Kalenterin nimi:
+# event status: tentative, confirmed, cancelled
+tooltipStatus=Tila:
+# event organizer
+tooltipOrganizer=Järjestäjä:
+# task/todo fields
+# start date time, due date time, task priority number, completed date time
+tooltipStart=Alkaa:
+tooltipDue=Valmis:
+tooltipPriority=Tärkeysaste:
+tooltipPercent=% suoritettu:
+tooltipCompleted=Suoritettu:
+
+# Tooltips for attendees and organizer in event and summary dialog
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendee.combined): tooltip for itip icon in summary/event dialog.
+# Given an attendee loungeexample.org of type room is a mandatory participant and has accepted the
+# invitation, the tooltip would be:
+# lounge@example.org (room) is a required participant. lounge@example.org has confirmed attendance.
+# %1$S - value of dialog.tooltip.attendeeRole2.*
+# %2$S - value of dialog.tooltip.attendeePartStat2.*
+dialog.tooltip.attendee.combined=%1$S %2$S
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.CHAIR): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.CHAIR=%1$S johtaa tapahtumaa.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.NON-PARTICIPANT): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.NON-PARTICIPANT=%1$S ei osallistu.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.OPT-PARTICIPANT): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.OPT-PARTICIPANT=%1$S on valinnainen osallistuja.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeRole2.REQ-PARTICIPANT): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - value of dialog.tooltip.attendeeUserType2.*
+dialog.tooltip.attendeeRole2.REQ-PARTICIPANT=%1$S on välttämätön osallistuja.
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.ACCEPTED): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.ACCEPTED=%1$S on vahvistanut osallistumisen.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.DECLINED): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.DECLINED=%1$S ei osallistu.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.DELEGATED): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.DELEGATED=%1$S on delegoinut osallistumisen.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.NEEDS-ACTION): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.NEEDS-ACTION=%1$S ei ole vielä vastannut.
+# LOCALIZATION_NOTE(dialog.tooltip.attendeePartStat2.TENTATIVE): used to compose
+# dialog.tooltip.attendee.combined
+# %1$S - common name or email address of the attendee
+dialog.tooltip.attendeePartStat2.TENTATIVE=%1$S on vahvistanut osallistumisen alustavasti.
+
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.INDIVIDUAL): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing individual attendee
+dialog.tooltip.attendeeUserType2.INDIVIDUAL=%1$S
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.GROUP): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a group (e.g. a distribution list)
+dialog.tooltip.attendeeUserType2.GROUP=%1$S (ryhmä)
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.RESOURCE): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a resource (e.g. projector)
+dialog.tooltip.attendeeUserType2.RESOURCE=%1$S (resurssi)
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.ROOM): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing a room
+dialog.tooltip.attendeeUserType2.ROOM=%1$S (tila)
+# LOCALIZATION_NOTE(dialog.tooltip.attendeeUserType2.UNKNOWN): used to compose
+# dialog.tooltip.attendeeRole2.*
+# %1$S - email address or common name <email address> representing an attendee of unknown type
+dialog.tooltip.attendeeUserType2.UNKNOWN=%1$S
+
+#File commands and dialogs
+New=Uusi
+Open=Avaa
+filepickerTitleImport=Tuo
+filepickerTitleExport=Vie
+
+# Filters for export/import/open file picker. %1$S will be replaced with
+# wildmat used to filter files by extension, such as (*.html; *.htm).
+filterIcs=iCalendar (%1$S)
+filterXml=XML-dokumentti (%1$S)
+filterHtml=Verkkosivu (%1$S)
+filterOutlookCsv=Outlook-CSV (%1$S)
+
+# Remote calendar errors
+genericErrorTitle=Tapahtui virhe
+httpPutError=Kalenteritiedoston julkaiseminen epäonnistui.\nStatuskoodi: %1$S: %2$S
+otherPutError=Kalenteritiedoston julkaiseminen epäonnistui.\nStatuskoodi: 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=Kalenterin "%1$S" datan luvussa on tapahtunut virhe. Kalenteri on asetettu vain luku -tilaan, koska jos tähän kalenteriin tehdään muutoksia, siitä seuraa todennäköisesti tietojen häviämistä. Voit muuttaa tämän valitsemalla "Muokkaa kalenteria".
+
+# 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=Kalenterin "%1$S" datan luvussa on tapahtunut virhe. Kalenteri on poistettu käytöstä, kunnes sen käyttö on turvallista.
+
+# 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=Kalenterin "%1$S" datan luvussa on tapahtunut virhe. Tämä virhe on kuitenkin vähäinen, joten ohjelma yrittää jatkaa.
+
+# 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=Kalenterin "%1$S" datan luvussa on tapahtunut virhe.
+utf8DecodeError=Tapahtui virhe dekoodattaessa iCalendar-tiedostoa (.ics) UTF-8-muodossa. Varmista, että tiedosto, mukaanlukien symbolit ja aksentilliset kirjaimet, on koodattu UTF-8:lla.
+icsMalformedError=iCalendar-tiedoston (.ics) jäsennys epäonnistui. Varmista, että tiedoston sisältö on iCalendar-syntaksin mukainen.
+itemModifiedOnServerTitle=Merkintä palvelimella on muuttunut
+itemModifiedOnServer=Tätä palvelimella olevaa merkintää on muutettu viime aikoina.\n
+modifyWillLoseData=Jos lähetät omat muutoksesi, palvelimella tehdyt muutokset ylikirjoitetaan.
+deleteWillLoseData=Jos tämä merkintä poistetaan, palvelimella tehdyt muutokset menetetään.
+updateFromServer=Unohda omat muutokseni ja lataa uudelleen
+proceedModify=Lähetä omat muutokseni silti
+proceedDelete=Poista silti
+dav_notDav=Resurssi kohteessa %1$S ei ole joko DAV-kokoelma tai käytettävissä
+dav_davNotCaldav=Resurssi kohteessa %1$S on DAV-kokoelma muttei CalDAV-kalenteri
+itemPutError=Tapahtui virhe tallennettaessa merkintää palvelimelle.
+itemDeleteError=Tapahtui virhe poistettaessa merkintää palvelimelta.
+caldavRequestError=Tapahtui virhe lähetettäessä kutsua.
+caldavResponseError=Tapahtui virhe lähetettäessä vastausta kutsuun.
+caldavRequestStatusCode=Tilakoodi: %1$S
+caldavRequestStatusCodeStringGeneric=Pyyntöä ei voitu käsitellä.
+caldavRequestStatusCodeString400=Pyynnön syntaksi on virheellinen eikä sitä siksi voitu käsitellä.
+caldavRequestStatusCodeString403=Käyttäjällä ei ole pyynnön suorittamiseen vaadittua lupaa.
+caldavRequestStatusCodeString404=Resurssia ei löytynyt.
+caldavRequestStatusCodeString409=Resurssiristiriita.
+caldavRequestStatusCodeString412=Ehto ei täyttynyt.
+caldavRequestStatusCodeString500=Sisäinen palvelinvirhe.
+caldavRequestStatusCodeString502=Virheellinen yhdyskäytävä (välityspalvelimen asetukset?).
+caldavRequestStatusCodeString503=Sisäinen palvelinvirhe (väliaikainen palvelinkatkos?).
+caldavRedirectTitle=Haluatko päivittää sijainnin kalenteriin %1$S?
+caldavRedirectText=Pyynnöt kohteeseen %1$S ohjataan uuteen sijaintiin. Haluatko muuttaa sijainnin seuraavaan arvoon?
+caldavRedirectDisableCalendar=Estä kalenteri
+
+
+# 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/Helsinki
+
+# 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=Varoitus: Käyttöjärjestelmän aikavyöhyke "%1$S"\nei enää vastaa sisäistä ZoneInfo-aikavyöhykettä "%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=Ohitetaan käyttöjärjestelmän aikavyöhyke '%1$S'.
+
+# "Skipping locale timezone 'America/New_Yawk'."
+# Testing note: Skipping occurs if a likelyTimezone id is unknown or misspelled.
+SkippingLocaleTimezone=Ohitetaan lokaalin aikavyöhyke '%1$S'.
+
+# Testing note: "No match" timezones include Bucharest on W2k.
+# Brazil timezones may be "No match" (change every year, so often out of date,
+# and changes are often more than a week different).
+warningUsingFloatingTZNoMatch=Varoitus: Käytetään "leijuvaa" aikavyöhykettä.\nMikään ZoneInfo-aikavyöhyke ei vastannut käyttöjärjestelmän aikavyöhykettä.
+
+# "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=Varoitus: Käytetään arvattua aikavyöhykettä\n%1$S (UTC%2$S).\n%3$S\n%4$S
+
+# Testing note: "Almost match" timezones include Cairo on W2k.
+TZAlmostMatchesOSDifferAtMostAWeek=Tämä ZoneInfo-aikavyöhyke melkein vastaa käyttöjärjestelmän aikavyöhykettä.\nTämän johdosta seuraavat kesä- ja talviajan väliset siirtymät eroavat enintään\nviikolla käyttöjärjestelmän aikavyöhykesiirtymästä.\nTiedoissa saattaa olla eroavuuksia, kuten eri aloituspäivä,\nerilainen sääntö tai muun kuin gregoriaanisen kalenterin säännön likiarvo.
+
+TZSeemsToMatchOS=Tämä ZoneInfo-aikavyöhyke näyttäisi vastaavan käyttöjärjestelmän aikavyöhykettä tänä vuonna.
+
+# LOCALIZATION NOTE (TZFromOS):
+# used for a display of a chosen timezone
+# %1$S will be replaced with the name of a timezone
+TZFromOS=Tämä ZoneInfo-aikavyöhyke valittiin käyttöjärjestelmän aikavyöhyketunnisteen\n"%1$S" perusteella.
+
+# Localization note (TZFromLocale): Substitute name of your locale language.
+TZFromLocale=Tämä ZoneInfo-aikavyöhyke valittiin käyttöjärjestelmän aikavyöhykkeen ja suomea käyttävien\nInternetin käyttäjien todennäköisen aikavyöhykkeen yhteensovittamisen perusteella.
+
+TZFromKnownTimezones=Tämä ZoneInfo-aikavyöhyke valittiin etsimällä käyttöjärjestelmän aikavyöhykettä\ntunnettujen aikavyöhykkeiden joukosta aakkosjärjestyksessä.
+
+# Print Layout
+formatListName = Luettelo
+weekPrinterName = Viikkokalenteri
+monthPrinterName = Kuukausikalenteri
+
+# Print Layout
+tasksWithNoDueDate = Tehtävät ilman valmistumispäivää
+
+# Providers
+caldavName=CalDAV
+compositeName=Yhdistelmä
+icsName=iCalendar (ICS)
+memoryName=Väliaikainen (muisti)
+storageName=Paikallinen (SQLite)
+
+# Used in created html code for export
+htmlPrefixTitle=Otsikko
+htmlPrefixWhen=Milloin
+htmlPrefixLocation=Osoite
+htmlPrefixDescription=Kuvaus
+htmlTaskCompleted=%1$S (suoritettu)
+
+# Categories
+addCategory=Lisää tapahtumatyyppi
+multipleCategories=Useita tapahtumatyyppejä
+
+today=Tänään
+tomorrow=Huomenna
+yesterday=Eilen
+
+#Today pane
+eventsonly=Tapahtumat
+eventsandtasks=Tapahtumat ja tehtävät
+tasksonly=Tehtävät
+shortcalendarweek=vko
+
+go=Siirry
+
+# 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=seuraava
+next2=seuraava
+last1=viimeinen
+last2=viimeinen
+
+# Alarm Dialog
+# LOCALIZATION NOTE (alarmWindowTitle.label): Semi-colon list of plural
+# forms. See: http://developer.mozilla.org/en/Localization_and_Plurals
+alarmWindowTitle.label=#1 muistutus;#1 muistutusta
+
+# 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=Alkaa %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=Tänään %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=Huomenna %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=Eilen %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=Mozillan oletuskuvaus
+alarmDefaultSummary=Mozillan oletusyhteenveto
+
+# LOCALIZATION NOTE (alarmSnoozeLimitExceeded): Semi-colon list of plural
+# forms.
+alarmSnoozeLimitExceeded=Et voi lykätä muistutusta enempää kuin #1 kuukauden.;Et voi lykätä muistutusta enempää kuin #1 kuukautta.
+
+taskDetailsStatusNeedsAction=Tarvitsee toimintaa
+
+# LOCALIZATION NOTE (taskDetailsStatusInProgress):
+# used for a display of how much of a task is completed '25% Complete'
+# %1$S will be replaced with the number of percentage completed
+taskDetailsStatusInProgress=%1$S %% suoritettu
+taskDetailsStatusCompleted=Suoritettu
+
+# 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=Suoritettu %1$S
+taskDetailsStatusCancelled=Peruttu
+
+gettingCalendarInfoCommon=Tarkastetaan kalentereita…
+
+# 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=Tarkastetaan kalenteria %1$S/%2$S
+
+# LOCALIZATION NOTE (errorCode):
+# %1$S will be replaced with the number of an error code
+errorCode=Virhekoodi: %1$S
+
+# LOCALIZATION NOTE (errorDescription):
+# %1$S will be replaced with the description of an error
+errorDescription=Kuvaus: %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=Tapahtui virhe kirjoitettaessa kalenteriin %1$S! Katso lisätietoja alta.
+
+# LOCALIZATION NOTE (errorWritingDetails):
+# This will be displayed in the detail section of the error dialog
+errorWritingDetails=Jos näet tämän viestin muistutuksen hylkäämisen tai lykkäämisen jälkeen ja kyseessä on kalenteri jossa et halua käsitellä tapahtumia, voit merkitä tämän kalenterin vain-luku -kalenteriksi, jos et halua tämän toistuvan. Tee tämä siirtymällä kalenterin ominaisuuksiin napsauttamalla hiiren kakkospainikkeella kalenteria kalenteriluettelossa tai Tehtävät-näkymässä.
+
+# 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=Kalenteri %1$S on hetkellisesti poissa käytöstä
+
+# 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=Kalenteri %1$S on vain luettavissa
+
+taskEditInstructions=Lisää uusi tehtävä napsauttamalla tästä
+taskEditInstructionsReadonly=Valitse kalenteri, johon voi kirjoittaa
+taskEditInstructionsCapability=Valitse kalenteri, joka tukee tehtäviä
+
+eventDetailsStartDate=Alkaa:
+eventDetailsEndDate=Päättyy:
+
+# 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=Kalenteriviikko %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=Kalenteriviikot %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=vko %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=vkot %1$S-%2$S
+
+# LOCALIZATION NOTE (abbreviationOfWeek):
+# Used for displaying the week number in the first day box of every week
+# in multiweek and month views.
+# It allows to localize the label with the week number in case your locale
+# requires it.
+# Take into account that this label is placed in the same room of the day label
+# inside the day boxes, exactly on left side, hence a possible string shouldn't
+# be too long otherwise it will create confusion between the week number and
+# the day number other than a possible crop when the window is resized.
+#
+# %1$S is a number from 1 to 53 that represents the week number.
+abbreviationOfWeek=%1$S
+
+# 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=vk %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 päivä;#1 päivää
+dueInHours=#1 tunti;#1 tuntia
+dueInLessThanOneHour=< 1 tunti
+
+# 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$Sta %4$S
+
+# LOCALIZATION NOTE (daysIntervalInMonth.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalInMonth.monthFormat=nominative
+
+# LOCALIZATION NOTE (daysIntervalBetweenMonths):
+# used for display of intervals in the form 'September 29 - October 5, 2008'
+# %1$S will be replaced with name of the month of the start date
+# %2$S will be replaced with the day-index of the start date possibly followed by an ordinal symbol
+# %3$S will be replaced with name of the month of the end date
+# %4$S will be replaced with the day-index of the end date possibly followed by an ordinal symbol
+# %5$S will be replaced with the common year of both dates
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalBetweenMonths=%1$S %2$S – %3$S %4$S, %5$S
+
+# LOCALIZATION NOTE (daysIntervalBetweenMonths.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalBetweenMonths.monthFormat=nominative
+
+# LOCALIZATION NOTE (daysIntervalBetweenYears):
+# used for display of intervals in the form 'December 29, 2008 - January 4, 2009'
+# %1$S will be replaced with name of the month of the start date
+# %2$S will be replaced with the day-index of the start date possibly followed by an ordinal symbol
+# %3$S will be replaced with the year of the start date
+# %4$S will be replaced with name of the month of the end date
+# %5$S will be replaced with the day-index of the end date possibly followed by an ordinal symbol
+# %6$S will be replaced with the year of the end date
+# The presence of the ordinal symbol in the day-indexes depends on the string
+# dayOrdinalSymbol in dateFormat.properties
+daysIntervalBetweenYears=%1$S %2$S, %3$S – %4$S %5$S, %6$S
+
+# LOCALIZATION NOTE (daysIntervalBetweenYears.monthFormat):
+# If your language requires a different declension, change this to
+# one of the values specified in dateFormat.properties.
+# In any case, DO NOT TRANSLATE.
+daysIntervalBetweenYears.monthFormat=nominative
+
+# LOCALIZATION NOTE (datetimeIntervalOnSameDateTime):
+# used for intervals where end is equals to start
+# displayed form is '5 Jan 2006 13:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+datetimeIntervalOnSameDateTime=%1$S %2$S
+
+# LOCALIZATION NOTE (datetimeIntervalOnSameDay):
+# used for intervals where end is on the same day as start, so we can leave out the
+# end date but still include end time
+# displayed form is '5 Jan 2006 13:00 - 17:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+# %3$S will be replaced with the time of the end date
+datetimeIntervalOnSameDay=%1$S %2$S – %3$S
+
+# LOCALIZATION NOTE (datetimeIntervalOnSeveralDays):
+# used for intervals spanning multiple days by including date and time
+# displayed form is '5 Jan 2006 13:00 - 7 Jan 2006 9:00'
+# %1$S will be replaced with the date of the start date
+# %2$S will be replaced with the time of the start date
+# %3$S will be replaced with the date of the end date
+# %4$S will be replaced with the time of the end date
+datetimeIntervalOnSeveralDays=%1$S %2$S – %3$S %4$S
+
+# LOCALIZATION NOTE (datetimeIntervalTaskWithoutDate):
+# used for task without start and due date
+# (showed only in exported calendar in Html format)
+datetimeIntervalTaskWithoutDate= ei aloitus- tai valmistumispäivää
+# 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=aloituspäivä %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=valmistumispäivä %1$S %2$S
+
+# LOCALIZATION NOTE (dragLabelTasksWithOnlyEntryDate
+# dragLabelTasksWithOnlyDueDate)
+# Labels that appear while dragging a task with only
+# entry date OR due date
+dragLabelTasksWithOnlyEntryDate=Aloitusaika
+dragLabelTasksWithOnlyDueDate=Oltava valmiina
+
+deleteTaskLabel=Poista tehtävä
+deleteTaskMessage=Poistetaanko tämä tehtävä?
+deleteTaskAccesskey=P
+deleteItemLabel=Poista
+deleteItemMessage=Poistetaanko tämä merkintä?
+deleteItemAccesskey=P
+deleteEventLabel=Poista tapahtuma
+deleteEventMessage=Poistetaanko tämä tapahtuma?
+deleteEventAccesskey=P
+
+calendarPropertiesEveryMinute=Joka minuutti;Joka #1. minuutti
+
+# LOCALIZATION NOTE (extractUsing)
+# Used in message header
+# %1$S will be replaced with language name from languageNames.properties
+extractUsing=Kielellä %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=Kielellä %1$S (%2$S)
+
+# LOCALIZATION NOTE (unit)
+# Used to determine the correct plural form of a unit
+unitMinutes=#1 minuutti;#1 minuuttia
+unitHours=#1 tunti;#1 tuntia
+unitDays=#1 päivä;#1 päivää
+unitWeeks=#1 viikko;#1 viikkoa
+
+# 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=Näytä %1$S
+hideCalendar=Piilota %1$S
+# uses the access key calendar.context.showonly.accesskey
+showOnlyCalendar=Näytä vain %1$S
+
+# LOCALIZATION NOTE (modifyConflict)
+# Used by the event dialog to resolve item modification conflicts.
+modifyConflictPromptTitle=Ristiriita kohteen muokkauksessa
+modifyConflictPromptMessage=Avoinna olevaa kohdetta on muokattu sen avaamisen jälkeen.
+modifyConflictPromptButton1=Korvaa muut muutokset
+modifyConflictPromptButton2=Hylkää omat muutokseni
+
+# LOCALIZATION_NOTE(dialog.attendee.append.delegatedFrom): this is appended behind an attendee name
+# in the tooltip and the visible name for an attendee in the event summary dialog - don't add
+# leading or trailing whitespaces here
+# %1$S - a single delegatee or a comma separated list of delegatees
+# delegation is different from simple invitation forwarding - in case of delegation the original
+# invited attendee gets replaced
+dialog.attendee.append.delegatedFrom=(delegoija: %1$S)
+# LOCALIZATION_NOTE(dialog.attendee.append.delegatedTo): this is appended behind an attendee name
+# in the tooltip for an attendee in the event summary dialog - don't add leading or trailing
+# whitespaces here
+# delegation is different from simple invitation forwarding - in case of delegation the original
+# invited attendee gets replaced
+dialog.attendee.append.delegatedTo=(delegoitu henkilölle %1$S)
+
+# Accessible description of a grid calendar with no selected date
+minimonthNoSelectedDate=Päivämäärää ei ole valittu
diff --git a/l10n-fi/calendar/chrome/calendar/calendarCreation.dtd b/l10n-fi/calendar/chrome/calendar/calendarCreation.dtd
new file mode 100644
index 0000000000..c5e2064963
--- /dev/null
+++ b/l10n-fi/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 "Luo uusi kalenteri" >
+<!ENTITY wizard.label "Luo uusi kalenteri" >
+<!ENTITY wizard.description "Määritä kalenterin sijainti" >
+
+<!ENTITY initialpage.description "Kalenterin voi tallentaa joko tälle tietokoneelle tai palvelimelle, jolloin sitä voi käyttää verkossa. Voit myös jakaa jonkin kalenterin ystäviesi tai työtovereidesi kanssa." >
+<!ENTITY initialpage.computer.label "Tällä tietokoneella">
+<!ENTITY initialpage.network.label "Verkossa">
+
+<!ENTITY locationpage.description "Määritä tiedot, jotka tarvitaan kalenterin avaamiseen" >
+<!ENTITY locationpage.login.description "Valinnainen: kirjoita käyttäjätunnus ja salasana" >
+<!ENTITY locationpage.username.label "Käyttäjätunnus:" >
+<!ENTITY locationpage.password.label "Salasana:" >
+
+<!ENTITY custompage.shortdescription "Kustomoi kalenteri" >
+<!ENTITY custompage.longdescription "Voit antaa tälle kalenterille lempinimen sekä määrittää tämän kalenterin tapahtumat tietyn värisiksi." >
+
+<!ENTITY finishpage.shortdescription "Kalenteri on luotu" >
+<!ENTITY finishpage.longdescription "Kalenteri on luotu." >
+
+<!-- Below are new strings for the revised new calendar dialog. The above strings should be
+ removed/renamed later on -->
+
+<!ENTITY sourcetabs.other.label "Muu">
+
+<!ENTITY buttons.create.label "Luo kalenteri">
+<!ENTITY buttons.create.accesskey "L">
+
+<!ENTITY buttons.find.label "Etsi kalentereita">
+<!ENTITY buttons.find.accesskey "E">
+
+<!ENTITY buttons.back.label "Takaisin">
+<!ENTITY buttons.back.accesskey "T">
+
+<!ENTITY buttons.subscribe.label "Tilaa">
+<!ENTITY buttons.subscribe.accesskey "i">
+
+<!ENTITY calendartype.label "Kalenterin tyyppi:">
+<!ENTITY location.label "Sijainti:">
+<!ENTITY location.placeholder "Kalenteripalvelimen URL tai palvelinnimi">
+
+<!ENTITY network.nocredentials.label "Tämä sijainti ei vaadi kirjautumistietoja">
+<!ENTITY network.loading.description "Odota hetki, kalentereitasi etsitään.">
+<!ENTITY network.notfound.description "Tästä sijainnista ei löytynyt kalentereita. Tarkista asetukset.">
+<!ENTITY network.authfail.description "Syöttämiäsi kirjautumistietoja ei hyväksytty. Tarkista asetukset.">
+
+<!ENTITY network.subscribe.single.description "Valitse kalenterit, jotka haluat tilata.">
+<!ENTITY network.subscribe.multiple.description "Tässä sijainnissa on monen tyyppisiä kalentereita. Valitse ensin kalenterin tyyppi ja valitse sitten kalenterit, jotka haluat tilata.">
diff --git a/l10n-fi/calendar/chrome/calendar/calendarCreation.properties b/l10n-fi/calendar/chrome/calendar/calendarCreation.properties
new file mode 100644
index 0000000000..7897310e12
--- /dev/null
+++ b/l10n-fi/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=Kirjoita kelvollinen sijainti.
+error.alreadyExists=Olet jo tilannut tässä sijainnissa olevan kalenterin.
diff --git a/l10n-fi/calendar/chrome/calendar/categories.properties b/l10n-fi/calendar/chrome/calendar/categories.properties
new file mode 100644
index 0000000000..846344fd0d
--- /dev/null
+++ b/l10n-fi/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=Asian tila,Henkilökohtainen,Idea,Jatkotoimenpide,Kaupan asiakas,Kilpailu,Kokous,Lahja,Lakitoimiston asiakas,Liiketoiminta,Loma,Matka,Ongelma,Projekti,Sekalainen,Soitto,Suosikki,Syntymäpäivä,Tavarantoimittaja,Vapaapäivä,Vuosipäivä,Yleinen vapaapäivä
diff --git a/l10n-fi/calendar/chrome/calendar/dateFormat.properties b/l10n-fi/calendar/chrome/calendar/dateFormat.properties
new file mode 100644
index 0000000000..284bc95350
--- /dev/null
+++ b/l10n-fi/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=tammikuu
+month.2.name=helmikuu
+month.3.name=maaliskuu
+month.4.name=huhtikuu
+month.5.name=toukokuu
+month.6.name=kesäkuu
+month.7.name=heinäkuu
+month.8.name=elokuu
+month.9.name=syyskuu
+month.10.name=lokakuu
+month.11.name=marraskuu
+month.12.name=joulukuu
+
+# 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=tammikuun
+month.2.genitive=helmikuun
+month.3.genitive=maaliskuun
+month.4.genitive=huhtikuun
+month.5.genitive=toukokuun
+month.6.genitive=kesäkuun
+month.7.genitive=heinäkuun
+month.8.genitive=elokuun
+month.9.genitive=syyskuun
+month.10.genitive=lokakuun
+month.11.genitive=marraskuun
+month.12.genitive=joulukuun
+
+month.1.Mmm=tammi
+month.2.Mmm=helmi
+month.3.Mmm=maalis
+month.4.Mmm=huhti
+month.5.Mmm=touko
+month.6.Mmm=kesä
+month.7.Mmm=heinä
+month.8.Mmm=elo
+month.9.Mmm=syys
+month.10.Mmm=loka
+month.11.Mmm=marras
+month.12.Mmm=joulu
+
+day.1.name=sunnuntai
+day.2.name=maanantai
+day.3.name=tiistai
+day.4.name=keskiviikko
+day.5.name=torstai
+day.6.name=perjantai
+day.7.name=lauantai
+
+day.1.Mmm=su
+day.2.Mmm=ma
+day.3.Mmm=ti
+day.4.Mmm=ke
+day.5.Mmm=to
+day.6.Mmm=pe
+day.7.Mmm=la
+
+# Can someone tell me why we're not counting from zero?
+day.1.short=su
+day.2.short=ma
+day.3.short=ti
+day.4.short=ke
+day.5.short=to
+day.6.short=pe
+day.7.short=la
+
+# Localizable day's date
+day.1.number=1
+day.2.number=2
+day.3.number=3
+day.4.number=4
+day.5.number=5
+day.6.number=6
+day.7.number=7
+day.8.number=8
+day.9.number=9
+day.10.number=10
+day.11.number=11
+day.12.number=12
+day.13.number=13
+day.14.number=14
+day.15.number=15
+day.16.number=16
+day.17.number=17
+day.18.number=18
+day.19.number=19
+day.20.number=20
+day.21.number=21
+day.22.number=22
+day.23.number=23
+day.24.number=24
+day.25.number=25
+day.26.number=26
+day.27.number=27
+day.28.number=28
+day.29.number=29
+day.30.number=30
+day.31.number=31
+
+# LOCALIZATION NOTE (dayOrdinalSymbol):
+# Allows to insert a string, a character or a symbol after the number of a
+# monthday in order to give it the meaning of ordinal number e.g. 1 -> 1st etc.
+# It's mainly used when formatting dates with both monthday and month name. It
+# affects the following localizable strings that hence must be localized *without*
+# any ordinal symbol for the monthday number:
+# dayHeaderLabel, monthlyDaysOfNth_day,
+# yearlyNthOn, daysIntervalBetweenYears,
+# daysIntervalBetweenMonths, daysIntervalInMonth.
+# Write only a single string if the ordinal symbol is the same for every monthday, otherwise
+# write a sequence of _31_ strings (one for each monthday) separated with commas.
+# If your language doesn't require that in the mentioned strings, leave it empty.
+# e.g.
+# dayOrdinalSymbol=.
+# -> daysIntervalInMonth: 'March 3. - 9., 2008'
+# dayOrdinalSymbol=st,nd,rd,th,th,th,th,th,th,th,th,th,th,th,th,
+# th,th,th,th,th,st,nd,rd,th,th,th,th,th,th,th,st
+# -> daysIntervalBetweenMonths: 'September 29th - November 1st, 2008'
+dayOrdinalSymbol=.
+
+noon=keskipäivällä
+midnight=keskiyöllä
+
+AllDay=koko päivän
+Repeating=(Toistuu)
diff --git a/l10n-fi/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd b/l10n-fi/calendar/chrome/calendar/dialogs/calendar-event-dialog-reminder.dtd
new file mode 100644
index 0000000000..a398bcb490
--- /dev/null
+++ b/l10n-fi/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 "Aseta muistutus">
+<!ENTITY reminder.add.label "Lisää">
+<!ENTITY reminder.add.accesskey "L">
+<!ENTITY reminder.remove.label "Poista">
+<!ENTITY reminder.remove.accesskey "P">
+
+<!ENTITY reminder.reminderDetails.label "Muistutuksen lisätiedot">
+<!ENTITY reminder.action.label "Valitse muistutustapa">
+
+<!ENTITY reminder.action.alert.label "Näytä ilmoitus">
+<!ENTITY reminder.action.email.label "Lähetä sähköpostiviesti">
+
+<!ENTITY alarm.units.minutes "minuuttia" >
+<!ENTITY alarm.units.hours "tuntia" >
+<!ENTITY alarm.units.days "päivää" >
diff --git a/l10n-fi/calendar/chrome/calendar/global.dtd b/l10n-fi/calendar/chrome/calendar/global.dtd
new file mode 100644
index 0000000000..d65c7f0a56
--- /dev/null
+++ b/l10n-fi/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 "keskiyöllä" >
+<!ENTITY time.noon "keskipäivällä" >
+
+<!-- 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 "su" >
+<!ENTITY day.1.Ddd.accesskey "s">
+<!ENTITY day.2.Ddd "ma" >
+<!ENTITY day.2.Ddd.accesskey "m">
+<!ENTITY day.3.Ddd "ti" >
+<!ENTITY day.3.Ddd.accesskey "t">
+<!ENTITY day.4.Ddd "ke" >
+<!ENTITY day.4.Ddd.accesskey "k">
+<!ENTITY day.5.Ddd "to" >
+<!ENTITY day.5.Ddd.accesskey "o">
+<!ENTITY day.6.Ddd "pe" >
+<!ENTITY day.6.Ddd.accesskey "e">
+<!ENTITY day.7.Ddd "la" >
+<!ENTITY day.7.Ddd.accesskey "a">
+
+<!ENTITY day.1.name "sunnuntai" >
+<!ENTITY day.2.name "maanantai" >
+<!ENTITY day.3.name "tiistai" >
+<!ENTITY day.4.name "keskiviikko" >
+<!ENTITY day.5.name "torstai" >
+<!ENTITY day.6.name "perjantai" >
+<!ENTITY day.7.name "lauantai" >
+
+<!ENTITY month.1.name "tammikuu" >
+<!ENTITY month.2.name "helmikuu" >
+<!ENTITY month.3.name "maaliskuu" >
+<!ENTITY month.4.name "huhtikuu" >
+<!ENTITY month.5.name "toukokuu" >
+<!ENTITY month.6.name "kesäkuu" >
+<!ENTITY month.7.name "heinäkuu" >
+<!ENTITY month.8.name "elokuu" >
+<!ENTITY month.9.name "syyskuu" >
+<!ENTITY month.10.name "lokakuu" >
+<!ENTITY month.11.name "marraskuu" >
+<!ENTITY month.12.name "joulukuu" >
+
+<!ENTITY onemonthbackward.tooltip "Siirry edelliseen kuukauteen" >
+<!ENTITY onemonthforward.tooltip "Siirry seuraavaan kuukauteen" >
+<!ENTITY oneyearbackward.tooltip "Siirry vuosi taaksepäin" >
+<!ENTITY oneyearforward.tooltip "Siirry vuosi eteenpäin" >
+<!ENTITY showToday.tooltip "Siirry tähän päivään">
+<!ENTITY onedayforward.tooltip "Siirry seuraavaan päivään">
+<!ENTITY onedaybackward.tooltip "Siirry edelliseen päivään">
+<!ENTITY showselectedday.tooltip "Näytä valitun päivän tapahtumat">
diff --git a/l10n-fi/calendar/chrome/calendar/menuOverlay.dtd b/l10n-fi/calendar/chrome/calendar/menuOverlay.dtd
new file mode 100644
index 0000000000..00d821fc8d
--- /dev/null
+++ b/l10n-fi/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 "Uusi tapahtuma…">
+<!ENTITY event.new.event.accesskey "t">
+
+<!ENTITY event.new.task "Uusi tehtävä…">
+<!ENTITY event.new.task.accesskey "h">
+
+<!ENTITY calendar.import.label "Tuo…">
+<!ENTITY calendar.import.accesskey "u">
+
+<!ENTITY calendar.export.label "Vie…">
+<!ENTITY calendar.export.accesskey "V">
+
+<!ENTITY calendar.publish.label "Julkaise…">
+<!ENTITY calendar.publish.accesskey "s">
+
+<!ENTITY calendar.deletecalendar.label "Poista valittu kalenteri…">
+<!ENTITY calendar.deletecalendar.accesskey "P">
+<!ENTITY calendar.unsubscribecalendar.label "Peruuta valitun kalenterin tilaus…">
+<!ENTITY calendar.unsubscribecalendar.accesskey "v">
+
+<!-- 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 "Poista valittu kalenteri…">
+<!ENTITY calendar.removecalendar.accesskey "P">
+
+
+<!ENTITY calendar.menu.customize.label "Muokkaa…">
+<!ENTITY calendar.menu.customize.accesskey "M">
+
+<!ENTITY showUnifinderCmd.label "Etsi tapahtumia">
+<!ENTITY showUnifinderCmd.accesskey "E">
+<!ENTITY showUnifinderCmd.tooltip "Näytä/piilota Etsi tapahtumia -paneeli">
+
+<!ENTITY calendar.displaytodos.checkbox.label "Näytä tehtävät kalenterissa">
+<!ENTITY calendar.displaytodos.checkbox.accesskey "N">
+
+<!ENTITY goTodayCmd.label "Tähän päivään">
+<!ENTITY goTodayCmd.accesskey "h">
+
+<!ENTITY showCurrentView.label "Nykyinen näkymä">
+<!ENTITY showCurrentView.accesskey "N">
+
+<!ENTITY calendar.properties.label "Kalenterin ominaisuudet…">
+<!ENTITY calendar.properties.accesskey "K">
diff --git a/l10n-fi/calendar/chrome/calendar/migration.dtd b/l10n-fi/calendar/chrome/calendar/migration.dtd
new file mode 100644
index 0000000000..17466cc3bc
--- /dev/null
+++ b/l10n-fi/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;: Tietojen tuonti">
+<!ENTITY migration.welcome "Tervetuloa">
+<!ENTITY migration.importing "Tuonti käynnissä">
+<!ENTITY migration.list.description "&brandShortName;iin voi tuoda tiedot monista yleisimmistä sovelluksista. Tältä tietokoneelta löytyi seuraavien sovellusten tietoja. Valitse ne sovellukset, joista haluat tuoda tiedot.">
+<!ENTITY migration.progress.description "Tuodaan valittuja tietoja">
diff --git a/l10n-fi/calendar/chrome/calendar/migration.properties b/l10n-fi/calendar/chrome/calendar/migration.properties
new file mode 100644
index 0000000000..a41e703a9e
--- /dev/null
+++ b/l10n-fi/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 = Tuodaan tietoja sovelluksesta %1$S…
+
+# The next two lines are duplicated from migration.dtd until there is branding
+# for lightning
+migrationTitle = %1$S: Tietojen tuonti
+migrationDescription=%1$S voi tuoda kalenteritiedot monista yleisimmistä sovelluksista. Tietokoneeltasi löytyi seuraavien sovellusten kalenteritietoja. Valitse ne, joista haluat tuoda tiedot.
+finished = Valmis
+disableExtTitle = Yhteensopimaton laajennus löytyi
+disableExtText = Sinulla on asennettuna vanha Mozillan kalenterilaajennus, joka ei ole yhteensopiva Lightningin kanssa. Vanha laajennus poistetaan käytöstä ja %1$S käynnistetään uudelleen.
diff --git a/l10n-fi/calendar/chrome/calendar/provider-uninstall.dtd b/l10n-fi/calendar/chrome/calendar/provider-uninstall.dtd
new file mode 100644
index 0000000000..f6da3379bd
--- /dev/null
+++ b/l10n-fi/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 "Poista palveluntarjoajan asennus">
+<!ENTITY providerUninstall.accept.label "Peruuta valittu tilaus">
+<!ENTITY providerUninstall.accept.accesskey "u">
+<!ENTITY providerUninstall.cancel.label "Pidä lisäosa">
+<!ENTITY providerUninstall.cancel.accesskey "P">
+<!ENTITY providerUninstall.preName.label "Olet pyytänyt, että seuraava lisäosa poistetaan tai poistetaan käytöstä:">
+<!ENTITY providerUninstall.postName.label "Tämän seurauksena alla luetellut kalenterit poistuvat käytöstä.">
+<!ENTITY providerUninstall.reinstallNote.label "Voit myös peruuttaa tämän tarjoajan kalenterien tilaukset, paitsi jos aiot myöhemmin asentaa tämän tarjoajan uudelleen.">
diff --git a/l10n-fi/calendar/chrome/calendar/timezones.properties b/l10n-fi/calendar/chrome/calendar/timezones.properties
new file mode 100644
index 0000000000..1154c0f6ee
--- /dev/null
+++ b/l10n-fi/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=Paikallinen aika
+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=Afrikka/Abidjan
+pref.timezone.Africa.Accra=Afrikka/Accra
+pref.timezone.Africa.Addis_Ababa=Afrikka/Addis Abeba
+pref.timezone.Africa.Algiers=Afrikka/Alger
+pref.timezone.Africa.Asmara=Afrikka/Asmara
+pref.timezone.Africa.Bamako=Afrikka/Bamako
+pref.timezone.Africa.Bangui=Afrikka/Bangui
+pref.timezone.Africa.Banjul=Afrikka/Banjul
+pref.timezone.Africa.Bissau=Afrikka/Bissau
+pref.timezone.Africa.Blantyre=Afrikka/Blantyre
+pref.timezone.Africa.Brazzaville=Afrikka/Brazzaville
+pref.timezone.Africa.Bujumbura=Afrikka/Bujumbura
+pref.timezone.Africa.Cairo=Afrikka/Kairo
+pref.timezone.Africa.Casablanca=Afrikka/Casablanca
+pref.timezone.Africa.Ceuta=Afrikka/Ceuta
+pref.timezone.Africa.Conakry=Afrikka/Conakry
+pref.timezone.Africa.Dakar=Afrikka/Dakar
+pref.timezone.Africa.Dar_es_Salaam=Afrikka/Dar es Salaam
+pref.timezone.Africa.Djibouti=Afrikka/Djibouti
+pref.timezone.Africa.Douala=Afrikka/Douala
+pref.timezone.Africa.El_Aaiun=Afrikka/El Aaiun
+pref.timezone.Africa.Freetown=Afrikka/Freetown
+pref.timezone.Africa.Gaborone=Afrikka/Gaborone
+pref.timezone.Africa.Harare=Afrikka/Harare
+pref.timezone.Africa.Johannesburg=Afrikka/Johannesburg
+pref.timezone.Africa.Kampala=Afrikka/Kampala
+pref.timezone.Africa.Khartoum=Afrikka/Khartum
+pref.timezone.Africa.Kigali=Afrikka/Kigali
+pref.timezone.Africa.Kinshasa=Afrikka/Kinshasa
+pref.timezone.Africa.Lagos=Afrikka/Lagos
+pref.timezone.Africa.Libreville=Afrikka/Libreville
+pref.timezone.Africa.Lome=Afrikka/Lome
+pref.timezone.Africa.Luanda=Afrikka/Luanda
+pref.timezone.Africa.Lubumbashi=Afrikka/Lubumbashi
+pref.timezone.Africa.Lusaka=Afrikka/Lusaka
+pref.timezone.Africa.Malabo=Afrikka/Malabo
+pref.timezone.Africa.Maputo=Afrikka/Maputo
+pref.timezone.Africa.Maseru=Afrikka/Maseru
+pref.timezone.Africa.Mbabane=Afrikka/Mbabane
+pref.timezone.Africa.Mogadishu=Afrikka/Mogadishu
+pref.timezone.Africa.Monrovia=Afrikka/Monrovia
+pref.timezone.Africa.Nairobi=Afrikka/Nairobi
+pref.timezone.Africa.Ndjamena=Afrikka/Ndjamena
+pref.timezone.Africa.Niamey=Afrikka/Niamey
+pref.timezone.Africa.Nouakchott=Afrikka/Nouakchott
+pref.timezone.Africa.Ouagadougou=Afrikka/Ouagadougou
+pref.timezone.Africa.Porto-Novo=Afrikka/Porto-Novo
+pref.timezone.Africa.Sao_Tome=Afrikka/Sao Tome
+pref.timezone.Africa.Tripoli=Afrikka/Tripoli
+pref.timezone.Africa.Tunis=Afrikka/Tunis
+pref.timezone.Africa.Windhoek=Afrikka/Windhoek
+pref.timezone.America.Adak=Amerikka/Adak
+pref.timezone.America.Anchorage=Amerikka/Anchorage
+pref.timezone.America.Anguilla=Amerikka/Anguilla
+pref.timezone.America.Antigua=Amerikka/Antigua
+pref.timezone.America.Araguaina=Amerikka/Araguaina
+pref.timezone.America.Argentina.Buenos_Aires=Amerikka/Argentiina/Buenos Aires
+pref.timezone.America.Argentina.Catamarca=Amerikka/Argentiina/Catamarca
+pref.timezone.America.Argentina.Cordoba=Amerikka/Argentiina/Cordoba
+pref.timezone.America.Argentina.Jujuy=Amerikka/Argentiina/Jujuy
+pref.timezone.America.Argentina.La_Rioja=Amerikka/Argentiina/La Rioja
+pref.timezone.America.Argentina.Mendoza=Amerikka/Argentiina/Mendoza
+pref.timezone.America.Argentina.Rio_Gallegos=Amerikka/Argentiina/Rio Gallegos
+pref.timezone.America.Argentina.San_Juan=Amerikka/Argentiina/San Juan
+pref.timezone.America.Argentina.Tucuman=Amerikka/Argentiina/Tucuman
+pref.timezone.America.Argentina.Ushuaia=Amerikka/Argentiina/Ushuaia
+pref.timezone.America.Aruba=Amerikka/Aruba
+pref.timezone.America.Asuncion=Amerikka/Asuncion
+pref.timezone.America.Atikokan=Amerikka/Atikokan
+pref.timezone.America.Bahia=Amerikka/Bahia
+pref.timezone.America.Barbados=Amerikka/Barbados
+pref.timezone.America.Belem=Amerikka/Belem
+pref.timezone.America.Belize=Amerikka/Belize
+pref.timezone.America.Blanc-Sablon=Amerikka/Blanc-Sablon
+pref.timezone.America.Boa_Vista=Amerikka/Boa Vista
+pref.timezone.America.Bogota=Amerikka/Bogota
+pref.timezone.America.Boise=Amerikka/Boise
+pref.timezone.America.Cambridge_Bay=Amerikka/Cambridge Bay
+pref.timezone.America.Campo_Grande=Amerikka/Campo Grande
+pref.timezone.America.Cancun=Amerikka/Cancun
+pref.timezone.America.Caracas=Amerikka/Caracas
+pref.timezone.America.Cayenne=Amerikka/Cayenne
+pref.timezone.America.Cayman=Amerikka/Cayman
+pref.timezone.America.Chicago=Amerikka/Chicago
+pref.timezone.America.Chihuahua=Amerikka/Chihuahua
+pref.timezone.America.Costa_Rica=Amerikka/Costa Rica
+pref.timezone.America.Cuiaba=Amerikka/Cuiaba
+pref.timezone.America.Curacao=Amerikka/Curacao
+pref.timezone.America.Danmarkshavn=Amerikka/Danmarkshavn
+pref.timezone.America.Dawson=Amerikka/Dawson
+pref.timezone.America.Dawson_Creek=Amerikka/Dawson Creek
+pref.timezone.America.Denver=Amerikka/Denver
+pref.timezone.America.Detroit=Amerikka/Detroit
+pref.timezone.America.Dominica=Amerikka/Dominica
+pref.timezone.America.Edmonton=Amerikka/Edmonton
+pref.timezone.America.Eirunepe=Amerikka/Eirunepe
+pref.timezone.America.El_Salvador=Amerikka/El Salvador
+pref.timezone.America.Fortaleza=Amerikka/Fortaleza
+pref.timezone.America.Glace_Bay=Amerikka/Glace Bay
+pref.timezone.America.Godthab=Amerikka/Godthab
+pref.timezone.America.Goose_Bay=Amerikka/Goose Bay
+pref.timezone.America.Grand_Turk=Amerikka/Grand Turk
+pref.timezone.America.Grenada=Amerikka/Grenada
+pref.timezone.America.Guadeloupe=Amerikka/Guadeloupe
+pref.timezone.America.Guatemala=Amerikka/Guatemala
+pref.timezone.America.Guayaquil=Amerikka/Guayaquil
+pref.timezone.America.Guyana=Amerikka/Guyana
+pref.timezone.America.Halifax=Amerikka/Halifax
+pref.timezone.America.Havana=Amerikka/Havana
+pref.timezone.America.Hermosillo=Amerikka/Hermosillo
+pref.timezone.America.Indiana.Indianapolis=Amerikka/Indiana/Indianapolis
+pref.timezone.America.Indiana.Knox=Amerikka/Indiana/Knox
+pref.timezone.America.Indiana.Marengo=Amerikka/Indiana/Marengo
+pref.timezone.America.Indiana.Petersburg=Amerikka/Indiana/Petersburg
+pref.timezone.America.Indiana.Vevay=Amerikka/Indiana/Vevay
+pref.timezone.America.Indiana.Vincennes=Amerikka/Indiana/Vincennes
+pref.timezone.America.Inuvik=Amerikka/Inuvik
+pref.timezone.America.Iqaluit=Amerikka/Iqaluit
+pref.timezone.America.Jamaica=Amerikka/Jamaika
+pref.timezone.America.Juneau=Amerikka/Juneau
+pref.timezone.America.Kentucky.Louisville=Amerikka/Kentucky/Louisville
+pref.timezone.America.Kentucky.Monticello=Amerikka/Kentucky/Monticello
+pref.timezone.America.La_Paz=Amerikka/La Paz
+pref.timezone.America.Lima=Amerikka/Lima
+pref.timezone.America.Los_Angeles=Amerikka/Los Angeles
+pref.timezone.America.Maceio=Amerikka/Maceio
+pref.timezone.America.Managua=Amerikka/Managua
+pref.timezone.America.Manaus=Amerikka/Manaus
+pref.timezone.America.Martinique=Amerikka/Martinique
+pref.timezone.America.Mazatlan=Amerikka/Mazatlan
+pref.timezone.America.Menominee=Amerikka/Menominee
+pref.timezone.America.Merida=Amerikka/Merida
+pref.timezone.America.Mexico_City=Amerikka/Mexico
+pref.timezone.America.Miquelon=Amerikka/Miquelon
+pref.timezone.America.Moncton=Amerikka/Moncton
+pref.timezone.America.Monterrey=Amerikka/Monterrey
+pref.timezone.America.Montevideo=Amerikka/Montevideo
+pref.timezone.America.Montreal=Amerikka/Montreal
+pref.timezone.America.Montserrat=Amerikka/Montserrat
+pref.timezone.America.Nassau=Amerikka/Nassau
+pref.timezone.America.New_York=Amerikka/New York
+pref.timezone.America.Nipigon=Amerikka/Nipigon
+pref.timezone.America.Nome=Amerikka/Nome
+pref.timezone.America.Noronha=Amerikka/Noronha
+pref.timezone.America.North_Dakota.Center=Amerikka/Pohjois-Dakota/Center
+pref.timezone.America.North_Dakota.New_Salem=Amerikka/Pohjois-Dakota/New Salem
+pref.timezone.America.Panama=Amerikka/Panama
+pref.timezone.America.Pangnirtung=Amerikka/Pangnirtung
+pref.timezone.America.Paramaribo=Amerikka/Paramaribo
+pref.timezone.America.Phoenix=Amerikka/Phoenix
+pref.timezone.America.Port-au-Prince=Amerikka/Port-au-Prince
+pref.timezone.America.Port_of_Spain=Amerikka/Port of Spain
+pref.timezone.America.Porto_Velho=Amerikka/Porto Velho
+pref.timezone.America.Puerto_Rico=Amerikka/Puerto Rico
+pref.timezone.America.Rainy_River=Amerikka/Rainy River
+pref.timezone.America.Rankin_Inlet=Amerikka/Rankin Inlet
+pref.timezone.America.Recife=Amerikka/Recife
+pref.timezone.America.Regina=Amerikka/Regina
+pref.timezone.America.Rio_Branco=Amerikka/Rio Branco
+pref.timezone.America.Santiago=Amerikka/Santiago
+pref.timezone.America.Santo_Domingo=Amerikka/Santo Domingo
+pref.timezone.America.Sao_Paulo=Amerikka/Sao Paulo
+pref.timezone.America.Scoresbysund=Amerikka/Scoresbysund
+pref.timezone.America.Shiprock=Amerikka/Shiprock
+pref.timezone.America.St_Johns=Amerikka/St. Johns
+pref.timezone.America.St_Kitts=Amerikka/St. Kitts
+pref.timezone.America.St_Lucia=Amerikka/St. Lucia
+pref.timezone.America.St_Thomas=Amerikka/St. Thomas
+pref.timezone.America.St_Vincent=Amerikka/St. Vincent
+pref.timezone.America.Swift_Current=Amerikka/Swift Current
+pref.timezone.America.Tegucigalpa=Amerikka/Tegucigalpa
+pref.timezone.America.Thule=Amerikka/Thule
+pref.timezone.America.Thunder_Bay=Amerikka/Thunder Bay
+pref.timezone.America.Tijuana=Amerikka/Tijuana
+pref.timezone.America.Toronto=Amerikka/Toronto
+pref.timezone.America.Tortola=Amerikka/Tortola
+pref.timezone.America.Vancouver=Amerikka/Vancouver
+pref.timezone.America.Whitehorse=Amerikka/Whitehorse
+pref.timezone.America.Winnipeg=Amerikka/Winnipeg
+pref.timezone.America.Yakutat=Amerikka/Yakutat
+pref.timezone.America.Yellowknife=Amerikka/Yellowknife
+pref.timezone.Antarctica.Casey=Antarktis/Casey
+pref.timezone.Antarctica.Davis=Antarktis/Davis
+pref.timezone.Antarctica.DumontDUrville=Antarktis/DumontDUrville
+pref.timezone.Antarctica.Mawson=Antarktis/Mawson
+pref.timezone.Antarctica.McMurdo=Antarktis/McMurdo
+pref.timezone.Antarctica.Palmer=Antarktis/Palmer
+pref.timezone.Antarctica.Rothera=Antarktis/Rothera
+pref.timezone.Antarctica.South_Pole=Antarktis/Etelänapa
+pref.timezone.Antarctica.Syowa=Antarktis/Syowa
+pref.timezone.Antarctica.Vostok=Antarktis/Vostok
+pref.timezone.Arctic.Longyearbyen=Arktis/Longyearbyen
+pref.timezone.Asia.Aden=Aasia/Aden
+pref.timezone.Asia.Almaty=Aasia/Almaty
+pref.timezone.Asia.Amman=Aasia/Amman
+pref.timezone.Asia.Anadyr=Aasia/Anadyr
+pref.timezone.Asia.Aqtau=Aasia/Aqtau
+pref.timezone.Asia.Aqtobe=Aasia/Aqtöbe
+pref.timezone.Asia.Ashgabat=Aasia/Ašgabat
+pref.timezone.Asia.Baghdad=Aasia/Bagdad
+pref.timezone.Asia.Bahrain=Aasia/Bahrain
+pref.timezone.Asia.Baku=Aasia/Baku
+pref.timezone.Asia.Bangkok=Aasia/Bangkok
+pref.timezone.Asia.Beirut=Aasia/Beirut
+pref.timezone.Asia.Bishkek=Aasia/Biškek
+pref.timezone.Asia.Brunei=Aasia/Brunei
+pref.timezone.Asia.Choibalsan=Aasia/Choibalsan
+pref.timezone.Asia.Chongqing=Aasia/Chongqing
+pref.timezone.Asia.Colombo=Aasia/Colombo
+pref.timezone.Asia.Damascus=Aasia/Damaskos
+pref.timezone.Asia.Dhaka=Aasia/Dhaka
+pref.timezone.Asia.Dili=Aasia/Dili
+pref.timezone.Asia.Dubai=Aasia/Dubai
+pref.timezone.Asia.Dushanbe=Aasia/Dushanbe
+pref.timezone.Asia.Gaza=Aasia/Gaza
+pref.timezone.Asia.Harbin=Aasia/Harbin
+pref.timezone.Asia.Hong_Kong=Aasia/Hong Kong
+pref.timezone.Asia.Hovd=Aasia/Hovd
+pref.timezone.Asia.Irkutsk=Aasia/Irkutsk
+pref.timezone.Asia.Istanbul=Aasia/Istanbul
+pref.timezone.Asia.Jakarta=Aasia/Jakarta
+pref.timezone.Asia.Jayapura=Aasia/Jayapura
+pref.timezone.Asia.Jerusalem=Aasia/Jerusalem
+pref.timezone.Asia.Kabul=Aasia/Kabul
+pref.timezone.Asia.Kamchatka=Aasia/Kamtšatka
+pref.timezone.Asia.Karachi=Aasia/Karachi
+pref.timezone.Asia.Kashgar=Aasia/Kashgar
+pref.timezone.Asia.Kathmandu=Aasia/Kathmandu
+pref.timezone.Asia.Krasnoyarsk=Aasia/Krasnojarsk
+pref.timezone.Asia.Kuala_Lumpur=Aasia/Kuala Lumpur
+pref.timezone.Asia.Kuching=Aasia/Kuching
+pref.timezone.Asia.Kuwait=Aasia/Kuwait
+pref.timezone.Asia.Macau=Aasia/Macao
+pref.timezone.Asia.Magadan=Aasia/Magadan
+pref.timezone.Asia.Makassar=Aasia/Makassar
+pref.timezone.Asia.Manila=Aasia/Manila
+pref.timezone.Asia.Muscat=Aasia/Masqat
+pref.timezone.Asia.Nicosia=Aasia/Nikosia
+pref.timezone.Asia.Novosibirsk=Aasia/Novosibirsk
+pref.timezone.Asia.Omsk=Aasia/Omsk
+pref.timezone.Asia.Oral=Aasia/Oral
+pref.timezone.Asia.Phnom_Penh=Aasia/Phnom Penh
+pref.timezone.Asia.Pontianak=Aasia/Pontianak
+pref.timezone.Asia.Pyongyang=Aasia/Pjongjang
+pref.timezone.Asia.Qatar=Aasia/Qatar
+pref.timezone.Asia.Qyzylorda=Aasia/Qizilorda
+pref.timezone.Asia.Rangoon=Aasia/Rangoon
+pref.timezone.Asia.Riyadh=Aasia/Riad
+pref.timezone.Asia.Sakhalin=Aasia/Sahalin
+pref.timezone.Asia.Samarkand=Aasia/Samarkand
+pref.timezone.Asia.Seoul=Aasia/Soul
+pref.timezone.Asia.Shanghai=Aasia/Shanghai
+pref.timezone.Asia.Singapore=Aasia/Singapore
+pref.timezone.Asia.Taipei=Aasia/Taipei
+pref.timezone.Asia.Tashkent=Aasia/Taškent
+pref.timezone.Asia.Tbilisi=Aasia/Tbilisi
+pref.timezone.Asia.Tehran=Aasia/Teheran
+pref.timezone.Asia.Thimphu=Aasia/Thimphu
+pref.timezone.Asia.Tokyo=Aasia/Tokio
+pref.timezone.Asia.Ulaanbaatar=Aasia/Ulan Bator
+pref.timezone.Asia.Urumqi=Aasia/Ürümqi
+pref.timezone.Asia.Vientiane=Aasia/Vientiane
+pref.timezone.Asia.Vladivostok=Aasia/Vladivostok
+pref.timezone.Asia.Yakutsk=Aasia/Jakutsk
+pref.timezone.Asia.Yekaterinburg=Aasia/Jekaterinburg
+pref.timezone.Asia.Yerevan=Aasia/Jerevan
+pref.timezone.Atlantic.Azores=Atlantin valtameri/Azorit
+pref.timezone.Atlantic.Bermuda=Atlantin valtameri/Bermuda
+pref.timezone.Atlantic.Canary=Atlantin valtameri/Kanariansaaret
+pref.timezone.Atlantic.Cape_Verde=Atlantin valtameri/Kap Verde
+pref.timezone.Atlantic.Faroe=Atlantin valtameri/Färsaaret
+pref.timezone.Atlantic.Madeira=Atlantin valtameri/Madeira
+pref.timezone.Atlantic.Reykjavik=Atlantin valtameri/Reykjavik
+pref.timezone.Atlantic.South_Georgia=Atlantin valtameri/Etelä-Georgia
+pref.timezone.Atlantic.St_Helena=Atlantin valtameri/St. Helena
+pref.timezone.Atlantic.Stanley=Atlantin valtameri/Port Stanley
+pref.timezone.Australia.Adelaide=Australia/Adelaide
+pref.timezone.Australia.Brisbane=Australia/Brisbane
+pref.timezone.Australia.Broken_Hill=Australia/Broken Hill
+pref.timezone.Australia.Currie=Australia/Currie
+pref.timezone.Australia.Darwin=Australia/Darwin
+pref.timezone.Australia.Eucla=Australia/Eucla
+pref.timezone.Australia.Hobart=Australia/Hobart
+pref.timezone.Australia.Lindeman=Australia/Lindeman
+pref.timezone.Australia.Lord_Howe=Australia/Lord Howe
+pref.timezone.Australia.Melbourne=Australia/Melbourne
+pref.timezone.Australia.Perth=Australia/Perth
+pref.timezone.Australia.Sydney=Australia/Sydney
+pref.timezone.Europe.Amsterdam=Eurooppa/Amsterdam
+pref.timezone.Europe.Andorra=Eurooppa/Andorra
+pref.timezone.Europe.Athens=Eurooppa/Ateena
+pref.timezone.Europe.Belgrade=Eurooppa/Belgrad
+pref.timezone.Europe.Berlin=Eurooppa/Berliini
+pref.timezone.Europe.Bratislava=Eurooppa/Bratislava
+pref.timezone.Europe.Brussels=Eurooppa/Bryssel
+pref.timezone.Europe.Bucharest=Eurooppa/Bukarest
+pref.timezone.Europe.Budapest=Eurooppa/Budapest
+pref.timezone.Europe.Chisinau=Eurooppa/Chisinau
+pref.timezone.Europe.Copenhagen=Eurooppa/Kööpenhamina
+pref.timezone.Europe.Dublin=Eurooppa/Dublin
+pref.timezone.Europe.Gibraltar=Eurooppa/Gibraltar
+pref.timezone.Europe.Guernsey=Eurooppa/Guernsey
+pref.timezone.Europe.Helsinki=Eurooppa/Helsinki
+pref.timezone.Europe.Isle_of_Man=Eurooppa/Mansaari
+pref.timezone.Europe.Istanbul=Eurooppa/Istanbul
+pref.timezone.Europe.Jersey=Eurooppa/Jersey
+pref.timezone.Europe.Kaliningrad=Eurooppa/Kaliningrad
+pref.timezone.Europe.Kiev=Eurooppa/Kiova
+pref.timezone.Europe.Lisbon=Eurooppa/Lissabon
+pref.timezone.Europe.Ljubljana=Eurooppa/Ljubljana
+pref.timezone.Europe.London=Eurooppa/Lontoo
+pref.timezone.Europe.Luxembourg=Eurooppa/Luxemburg
+pref.timezone.Europe.Madrid=Eurooppa/Madrid
+pref.timezone.Europe.Malta=Eurooppa/Malta
+pref.timezone.Europe.Mariehamn=Eurooppa/Maarianhamina
+pref.timezone.Europe.Minsk=Eurooppa/Minsk
+pref.timezone.Europe.Monaco=Eurooppa/Monaco
+pref.timezone.Europe.Moscow=Eurooppa/Moskova
+pref.timezone.Europe.Nicosia=Eurooppa/Nikosia
+pref.timezone.Europe.Oslo=Eurooppa/Oslo
+pref.timezone.Europe.Paris=Eurooppa/Pariisi
+pref.timezone.Europe.Podgorica=Eurooppa/Podgorica
+pref.timezone.Europe.Prague=Eurooppa/Praha
+pref.timezone.Europe.Riga=Eurooppa/Riika
+pref.timezone.Europe.Rome=Eurooppa/Rooma
+pref.timezone.Europe.Samara=Eurooppa/Samara
+pref.timezone.Europe.San_Marino=Eurooppa/San Marino
+pref.timezone.Europe.Sarajevo=Eurooppa/Sarajevo
+pref.timezone.Europe.Simferopol=Eurooppa/Simferopol
+pref.timezone.Europe.Skopje=Eurooppa/Skopje
+pref.timezone.Europe.Sofia=Eurooppa/Sofia
+pref.timezone.Europe.Stockholm=Eurooppa/Tukholma
+pref.timezone.Europe.Tallinn=Eurooppa/Tallinna
+pref.timezone.Europe.Tirane=Eurooppa/Tirana
+pref.timezone.Europe.Uzhgorod=Eurooppa/Užhorod
+pref.timezone.Europe.Vaduz=Eurooppa/Vaduz
+pref.timezone.Europe.Vatican=Eurooppa/Vatikaanivaltio
+pref.timezone.Europe.Vienna=Eurooppa/Wien
+pref.timezone.Europe.Vilnius=Eurooppa/Vilna
+pref.timezone.Europe.Volgograd=Eurooppa/Volgograd
+pref.timezone.Europe.Warsaw=Eurooppa/Varsova
+pref.timezone.Europe.Zagreb=Eurooppa/Zagreb
+pref.timezone.Europe.Zaporozhye=Eurooppa/Zaporižžja
+pref.timezone.Europe.Zurich=Eurooppa/Zürich
+pref.timezone.Indian.Antananarivo=Intian valtameri/Antananarivo
+pref.timezone.Indian.Chagos=Intian valtameri/Chagossaaristo
+pref.timezone.Indian.Christmas=Intian valtameri/Joulusaari
+pref.timezone.Indian.Cocos=Intian valtameri/Kookossaaret
+pref.timezone.Indian.Comoro=Intian valtameri/Komorit
+pref.timezone.Indian.Kerguelen=Intian valtameri/Kerguelen
+pref.timezone.Indian.Mahe=Intian valtameri/Mahe
+pref.timezone.Indian.Maldives=Intian valtameri/Malediivit
+pref.timezone.Indian.Mauritius=Intian valtameri/Mauritius
+pref.timezone.Indian.Mayotte=Intian valtameri/Mayotte
+pref.timezone.Indian.Reunion=Intian valtameri/Réunion
+pref.timezone.Pacific.Apia=Tyyni valtameri/Apia
+pref.timezone.Pacific.Auckland=Tyyni valtameri/Auckland
+pref.timezone.Pacific.Chatham=Tyyni valtameri/Chathamsaaret
+pref.timezone.Pacific.Easter=Tyyni valtameri/Pääsiäissaari
+pref.timezone.Pacific.Efate=Tyyni valtameri/Efate
+pref.timezone.Pacific.Enderbury=Tyyni valtameri/Enderburysaari
+pref.timezone.Pacific.Fakaofo=Tyyni valtameri/Fakaofo
+pref.timezone.Pacific.Fiji=Tyyni valtameri/Fidži
+pref.timezone.Pacific.Funafuti=Tyyni valtameri/Funafuti
+pref.timezone.Pacific.Galapagos=Tyyni valtameri/Galápagossaaret
+pref.timezone.Pacific.Gambier=Tyyni valtameri/Gambiersaaret
+pref.timezone.Pacific.Guadalcanal=Tyyni valtameri/Guadalcanal
+pref.timezone.Pacific.Guam=Tyyni valtameri/Guam
+pref.timezone.Pacific.Honolulu=Tyyni valtameri/Honolulu
+pref.timezone.Pacific.Johnston=Tyyni valtameri/Johnstonin atolli
+pref.timezone.Pacific.Kiritimati=Tyyni valtameri/Kiritimati
+pref.timezone.Pacific.Kosrae=Tyyni valtameri/Kosrae
+pref.timezone.Pacific.Kwajalein=Tyyni valtameri/Kwajaleinin atolli
+pref.timezone.Pacific.Majuro=Tyyni valtameri/Majuron atolli
+pref.timezone.Pacific.Marquesas=Tyyni valtameri/Marquesassaaret
+pref.timezone.Pacific.Midway=Tyyni valtameri/Midwaysaaret
+pref.timezone.Pacific.Nauru=Tyyni valtameri/Nauru
+pref.timezone.Pacific.Niue=Tyyni valtameri/Niue
+pref.timezone.Pacific.Norfolk=Tyyni valtameri/Norfolkinsaari
+pref.timezone.Pacific.Noumea=Tyyni valtameri/Nouméa
+pref.timezone.Pacific.Pago_Pago=Tyyni valtameri/Pago Pago
+pref.timezone.Pacific.Palau=Tyyni valtameri/Palau
+pref.timezone.Pacific.Pitcairn=Tyyni valtameri/Pitcairn
+pref.timezone.Pacific.Ponape=Tyyni valtameri/Ponape
+pref.timezone.Pacific.Port_Moresby=Tyyni valtameri/Port Moresby
+pref.timezone.Pacific.Rarotonga=Tyyni valtameri/Rarotonga
+pref.timezone.Pacific.Saipan=Tyyni valtameri/Saipan
+pref.timezone.Pacific.Tahiti=Tyyni valtameri/Tahiti
+pref.timezone.Pacific.Tarawa=Tyyni valtameri/Tarawa
+pref.timezone.Pacific.Tongatapu=Tyyni valtameri/Tongatapu
+pref.timezone.Pacific.Truk=Tyyni valtameri/Chuuk
+pref.timezone.Pacific.Wake=Tyyni valtameri/Wake
+pref.timezone.Pacific.Wallis=Tyyni valtameri/Wallis
+
+# the following have been missing
+pref.timezone.America.Indiana.Tell_City=Amerikka/Indiana/Tell City
+pref.timezone.America.Indiana.Winamac=Amerikka/Indiana/Winamac
+pref.timezone.America.Marigot=Amerikka/Marigot
+pref.timezone.America.Resolute=Amerikka/Resolute
+pref.timezone.America.St_Barthelemy=Amerikka/St. Barthelemy
+
+# added with 2008d:
+pref.timezone.America.Argentina.San_Luis=Amerikka/Argentiina/San Luis
+pref.timezone.America.Santarem=Amerikka/Santarem
+pref.timezone.Asia.Ho_Chi_Minh=Aasia/Hồ Chí Minhin kaupunki
+pref.timezone.Asia.Kolkata=Aasia/Kalkutta
+
+# added with 2008i:
+pref.timezone.America.Argentina.Salta=Amerikka/Argentiina/Salta
+
+# added with 2010i
+pref.timezone.America.Matamoros=Amerikka/Matamoros
+pref.timezone.America.Ojinaga=Amerikka/Ojinaga
+pref.timezone.America.Santa_Isabel=Amerikka/Santa Isabel
+pref.timezone.Antarctica.Macquarie=Antarktis/Macquarie
+pref.timezone.Asia.Novokuznetsk=Aasia/Novokuznetsk
+
+#added with 2011b
+pref.timezone.America.Bahia_Banderas=Amerikka/Bahia Banderas
+pref.timezone.America.North_Dakota.Beulah=Amerikka/Pohjois-Dakota/Beulah
+pref.timezone.Pacific.Chuuk=Tyyni valtameri/Chuuk
+pref.timezone.Pacific.Pohnpei=Tyyni valtameri/Pohnpei
+
+#added with 2011n
+pref.timezone.Africa.Juba=Afrikka/Juba
+pref.timezone.America.Kralendijk=Amerikka/Kralendijk
+pref.timezone.America.Lower_Princes=Amerikka/Lower Princes
+pref.timezone.America.Metlakatla=Amerikka/Metlakatla
+pref.timezone.America.Sitka=Amerikka/Sitka
+pref.timezone.Asia.Hebron=Aasia/Hebron
+
+#added with 2013a
+pref.timezone.America.Creston=Amerikka/Creston
+pref.timezone.Asia.Khandyga=Aasia/Handyga
+pref.timezone.Asia.Ust-Nera=Aasia/Ust-Nera
+pref.timezone.Europe.Busingen=Eurooppa/Büsingen
+
+#added with 2014b
+pref.timezone.Antarctica.Troll=Antarktis/Troll
+
+#added with 2014j
+pref.timezone.Asia.Chita=Aasia/Chita
+pref.timezone.Asia.Srednekolymsk=Aasia/Srednekolymsk
+pref.timezone.Pacific.Bougainville=Tyyni valtameri/Bougainville
+
+#added with 2.2015g
+pref.timezone.America.Fort_Nelson=Amerikka/Fort Nelson
+
+#added with 2.2016b
+pref.timezone.Europe.Ulyanovsk=Eurooppa/Uljanovsk
+pref.timezone.Europe.Astrakhan=Eurooppa/Astrahan
+pref.timezone.Asia.Barnaul=Aasia/Barnaul
+
+#added with 2.2016i
+pref.timezone.Asia.Yangon=Aasia/Yangon
+pref.timezone.Asia.Tomsk=Aasia/Tomsk
+pref.timezone.Asia.Famagusta=Aasia/Famagusta
+pref.timezone.Europe.Kirov=Eurooppa/Kirov
+
+#added with 2.2016j
+pref.timezone.Europe.Saratov=Eurooppa/Saratov
+pref.timezone.Asia.Atyrau=Aasia/Atyrau
+
+#added with 2.2017b
+pref.timezone.America.Punta_Arenas=Amerikka/Punta Arenas
+
+#added with 2.2018i
+pref.timezone.Asia.Qostanay=Aasia/Kostanai
+
+#added with 2.2020a
+pref.timezone.America.Nuuk=Amerikka/Nuuk
+
+#added with 2.2021c
+pref.timezone.Pacific.Kanton=Tyyni valtameri/Kanton
+
+#added with 2.2022b
+pref.timezone.Europe.Kyiv=Eurooppa/Kiova
diff --git a/l10n-fi/calendar/chrome/lightning/lightning-toolbar.dtd b/l10n-fi/calendar/chrome/lightning/lightning-toolbar.dtd
new file mode 100644
index 0000000000..010a506e20
--- /dev/null
+++ b/l10n-fi/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 "Kalenterityökalupalkki">
+<!ENTITY lightning.toolbar.calendar.name.accesskey "K">
+<!ENTITY lightning.toolbar.task.name "Tehtävätyökalupalkki">
+<!ENTITY lightning.toolbar.task.name.accesskey "T">
+
+<!ENTITY lightning.toolbar.sync.label "Synkronoi">
+<!ENTITY lightning.toolbar.sync.tooltip "Lataa kalenterit uudelleen ja synkronoi muutokset">
+<!ENTITY lightning.toolbar.delete.label "Poista">
+<!ENTITY lightning.toolbar.delete.tooltip "Poista valitut tapahtumat tai tehtävät">
+<!ENTITY lightning.toolbar.edit.label "Muokkaa">
+<!ENTITY lightning.toolbar.edit.tooltip "Muokkaa valittua tapahtumaa tai tehtävää">
+<!ENTITY lightning.toolbar.gototoday.label "Siirry tähän päivään">
+<!ENTITY lightning.toolbar.gototoday.tooltip "Siirry tähän päivään">
+<!ENTITY lightning.toolbar.print.label "Tulosta">
+<!ENTITY lightning.toolbar.print.tooltip "Tulosta tapahtumat tai tehtävät">
+
+<!-- Mode Toolbar -->
+<!ENTITY lightning.toolbar.calendar.label "Kalenteri">
+<!ENTITY lightning.toolbar.calendar.tooltip "Siirry Kalenteri-välilehteen">
+<!ENTITY lightning.toolbar.calendar.accesskey "K">
+<!ENTITY lightning.toolbar.task.label "Tehtävät">
+<!ENTITY lightning.toolbar.task.tooltip "Siirry Tehtävät-välilehteen">
+<!ENTITY lightning.toolbar.task.accesskey "T">
+
+<!-- Toolbar write button -->
+<!ENTITY lightning.toolbar.newevent.label "Tapahtuma">
+<!ENTITY lightning.toolbar.newevent.tooltip "Luo uusi tapahtuma">
+<!ENTITY lightning.toolbar.newtask.label "Tehtävä">
+<!ENTITY lightning.toolbar.newtask.tooltip "Luo uusi tehtävä">
+
+<!-- Calendar and Task Mode Toolbar -->
+<!ENTITY lightning.toolbar.day.label "Päivä">
+<!ENTITY lightning.toolbar.day.accesskey "P">
+<!ENTITY lightning.toolbar.week.label "Viikko">
+<!ENTITY lightning.toolbar.week.accesskey "V">
+<!ENTITY lightning.toolbar.multiweek.label "Moniviikko">
+<!ENTITY lightning.toolbar.multiweek.accesskey "M">
+<!ENTITY lightning.toolbar.month.label "Kuukausi">
+<!ENTITY lightning.toolbar.month.accesskey "K">
+<!-- LOCALIZATION NOTE: the same as appmenuButton.label and appmenuButton1.tooltip
+ from messenger.dtd -->
+<!ENTITY lightning.toolbar.appmenuButton.label "Sovellusvalikko">
+<!ENTITY lightning.toolbar.appmenuButton1.tooltip "Avaa &brandShortName;-valikon">
+<!ENTITY lightning.toolbar.calendarmenu.label "Kalenteripaneeli">
+<!ENTITY lightning.toolbar.calendarmenu.accesskey "K">
+<!ENTITY lightning.toolbar.calendarpane.label "Näytä kalenteripaneeli">
+<!ENTITY lightning.toolbar.calendarpane.accesskey "N">
diff --git a/l10n-fi/calendar/chrome/lightning/lightning.dtd b/l10n-fi/calendar/chrome/lightning/lightning.dtd
new file mode 100644
index 0000000000..756a5aba2a
--- /dev/null
+++ b/l10n-fi/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 "Kalenteri">
+
+<!-- New menu popup in File menu -->
+<!ENTITY lightning.menupopup.new.event.label "Tapahtuma…">
+<!ENTITY lightning.menupopup.new.event.accesskey "T">
+<!ENTITY lightning.menupopup.new.task.label "Tehtävä…">
+<!ENTITY lightning.menupopup.new.task.accesskey "e">
+<!ENTITY lightning.menupopup.new.calendar.label "Kalenteri…">
+<!ENTITY lightning.menupopup.new.calendar.accesskey "l">
+
+<!-- Open menu popup in File menu -->
+<!ENTITY lightning.menupopup.open.calendar.label "Kalenteritiedosto…">
+<!ENTITY lightning.menupopup.open.calendar.accesskey "K">
+
+<!-- View Menu -->
+<!ENTITY lightning.menu.view.calendar.label "Kalenteri">
+<!ENTITY lightning.menu.view.calendar.accesskey "n">
+<!ENTITY lightning.menu.view.tasks.label "Tehtävät">
+<!ENTITY lightning.menu.view.tasks.accesskey "T">
+
+<!-- Events and Tasks menu -->
+<!ENTITY lightning.menu.eventtask.label "Tapahtumat ja tehtävät">
+<!ENTITY lightning.menu.eventtask.accesskey "a">
+
+<!-- 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 "Sähköposti:">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.label "Suosi asiakaspuolen sähköpostien ajastusta">
+<!-- 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 "Voit ottaa tämän ominaisuuden käyttöön kalenterin asentamisen jälkeen sallimalla ominaisuuden kalenterin ominaisuusikkunassa, jos palvelin tukee ajastamista.">
+<!ENTITY lightning.calendarproperties.forceEmailScheduling.tooltiptext2 "Tämä asetus on käytettävissä vain, jos kalenteripalvelin tukee ajastamista. Ominaisuuden salliminen palauttaa ajastamisen sähköpostipohjaiseen ajastukseen palvelimen suorittaman ajastuksen sijaan.">
+
+<!-- The notifications settings in the properties dialog -->
+<!ENTITY lightning.calendarproperties.notifications.label "Ilmoitukset">
+<!ENTITY lightning.calendarproperties.globalNotifications.label "Yleiset ilmoitusasetukset…">
+
+<!-- iMIP Bar (meeting support) -->
+<!ENTITY lightning.imipbar.btnAccept.label "Hyväksy">
+<!ENTITY lightning.imipbar.btnAccept2.tooltiptext "Hyväksy tapahtumakutsu">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences.label "Hyväksy kaikki">
+<!ENTITY lightning.imipbar.btnAcceptRecurrences2.tooltiptext "Hyväksy tapahtumakutsu koskien kaikkia tapahtuman tapauksia">
+<!ENTITY lightning.imipbar.btnAdd.label "Lisää">
+<!ENTITY lightning.imipbar.btnAdd.tooltiptext "Lisää tapahtuma kalenteriin">
+<!ENTITY lightning.imipbar.btnDecline.label "Hylkää">
+<!ENTITY lightning.imipbar.btnDecline2.tooltiptext "Hylkää tapahtumakutsu">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences.label "Hylkää kaikki">
+<!ENTITY lightning.imipbar.btnDeclineRecurrences2.tooltiptext "Hylkää tapahtumakutsu koskien kaikkia tapahtuman tapauksia">
+<!ENTITY lightning.imipbar.btnDeclineCounter.label "Hylkää">
+<!ENTITY lightning.imipbar.btnDeclineCounter.tooltiptext "Hylkää vastaehdotus">
+<!ENTITY lightning.imipbar.btnDelete.label "Poista">
+<!ENTITY lightning.imipbar.btnDelete.tooltiptext "Poista kalenterista">
+<!ENTITY lightning.imipbar.btnDetails.label "Lisätiedot…">
+<!ENTITY lightning.imipbar.btnDetails.tooltiptext "Näytä lisää tietoa tapahtumasta">
+<!ENTITY lightning.imipbar.btnDoNotShowImipBar.label "Älä näytä näitä viestejä">
+<!ENTITY lightning.imipbar.btnGoToCalendar.label "Kalenteri">
+<!ENTITY lightning.imipbar.btnGoToCalendar.tooltiptext "Siirry Kalenteri-välilehteen">
+<!ENTITY lightning.imipbar.btnMore.label "Lisää">
+<!ENTITY lightning.imipbar.btnMore.tooltiptext "Napsauta, niin näet lisää valintoja">
+<!ENTITY lightning.imipbar.btnReconfirm2.label "Vahvista uudelleen">
+<!ENTITY lightning.imipbar.btnReconfirm.tooltiptext "Lähettää järjestäjälle uudelleenvahvistuksen">
+<!ENTITY lightning.imipbar.btnReschedule.label "Ajoita uudelleen">
+<!ENTITY lightning.imipbar.btnReschedule.tooltiptext "Ajoita tapahtuma uudelleen">
+<!ENTITY lightning.imipbar.btnSaveCopy.label "Tallenna kopio">
+<!ENTITY lightning.imipbar.btnSaveCopy.tooltiptext "Tallenna kalenteriin kopio tapahtumasta ilman, että järjestäjä saa tietää. Osallistujaluettelo tyhjennetään.">
+<!ENTITY lightning.imipbar.btnTentative.label "Alustava">
+<!ENTITY lightning.imipbar.btnTentative2.tooltiptext "Hyväksy tapahtumakutsu alustavasti">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences.label "Alustavasti kaikki">
+<!ENTITY lightning.imipbar.btnTentativeRecurrences2.tooltiptext "Hyväksy kaikki tapahtuman esiintymät alustavasti">
+<!ENTITY lightning.imipbar.btnUpdate.label "Päivitä">
+<!ENTITY lightning.imipbar.btnUpdate.tooltiptext "Päivitä tapahtumaa kalenterissa">
+<!ENTITY lightning.imipbar.description "Tässä viestissä on kutsu tapahtumaan.">
+
+<!ENTITY lightning.imipbar.btnSend.label "Lähetä vastaus nyt">
+<!ENTITY lightning.imipbar.btnSend.tooltiptext "Lähetä vastaus järjestäjälle">
+<!ENTITY lightning.imipbar.btnSendSeries.tooltiptext "Lähetä vastaus kaikille järjestäjille">
+<!ENTITY lightning.imipbar.btnDontSend.label "Älä lähetä vastausta">
+<!ENTITY lightning.imipbar.btnDontSend.tooltiptext "Muuta osallistumistilaasi ilman vastauksen lähettämistä tapahtuman järjestäjälle">
+<!ENTITY lightning.imipbar.btnDontSendSeries.tooltiptext "Muuta osallistumistilaasi ilman vastauksen lähettämistä tapahtumasarjan järjestäjälle">
+
+<!-- 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 "Luo uusi kalenteri">
+
+<!-- today-pane-specific -->
+<!ENTITY todaypane.showMinimonth.label "Näytä pienoiskuukausi">
+<!ENTITY todaypane.showMinimonth.accesskey "N">
+<!ENTITY todaypane.showMiniday.label "Näytä pienoispäivä">
+<!ENTITY todaypane.showMiniday.accesskey "N">
+<!ENTITY todaypane.showNone.label "Älä näytä mitään">
+<!ENTITY todaypane.showNone.accesskey "n">
+<!ENTITY todaypane.showTodayPane.label "Näytä tänään-ruutu">
+<!ENTITY todaypane.showTodayPane.accesskey "N">
+<!ENTITY todaypane.statusButton.label "Tänään-ruutu">
diff --git a/l10n-fi/calendar/chrome/lightning/lightning.properties b/l10n-fi/calendar/chrome/lightning/lightning.properties
new file mode 100644
index 0000000000..60470494d9
--- /dev/null
+++ b/l10n-fi/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=Integroitu kalenteri ja aikataulutus sähköpostiohjelmaan
+extensions.{e2fda1a4-762b-4020-b5ad-a41df1933103}.creator=Mozillan kalenteriprojekti
+
+# Lightning branding
+brandShortName=Lightning
+
+# Task mode title
+taskModeApplicationTitle=Tehtävät
+
+# Tab titles
+tabTitleCalendar=Kalenteri
+tabTitleTasks=Tehtävät
+
+# Html event display in message
+imipHtml.header=Kutsu tapahtumaan
+imipHtml.summary=Otsikko:
+imipHtml.location=Paikka:
+imipHtml.when=Aika:
+imipHtml.organizer=Järjestäjä:
+imipHtml.description=Kuvaus:
+# LOCALIZATION_NOTE(imipHtml.attachments): This is a label for one or more (additional) links to
+# documents or websites attached to this event.
+imipHtml.attachments=Liitteet:
+imipHtml.comment=Kommentti:
+imipHtml.attendees=Osallistujat:
+# 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=Aiheeseen liittyvä linkki:
+imipHtml.canceledOccurrences=Peruutetut esiintymät:
+imipHtml.modifiedOccurrences=Muokatut esiintymät:
+imipHtml.newLocation=Uusi sijainti: %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=(delegoija/delegoijat: %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=(delegoitu: %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 johtaa tapahtumaa.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.NON-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.NON-PARTICIPANT=%1$S ei osallistu.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.OPT-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.OPT-PARTICIPANT=%1$S on valinnainen osallistuja.
+# LOCALIZATION_NOTE(imipHtml.attendeeRole2.REQ-PARTICIPANT): used to compose
+# imipHtml.attendee.combined
+# %1$S - value of imipHtml.attendeeUserType2.*
+imipHtml.attendeeRole2.REQ-PARTICIPANT=%1$S on välttämätön osallistuja.
+
+# 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 on vahvistanut osallistumisen.
+# 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 ei osallistu.
+# 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 on delegoinut osallistumisen henkilölle %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 ei ole vielä vastannut.
+# 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 on vahvistanut osallistumisen alustavasti.
+
+# 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 (ryhmä)
+# 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 (resurssi)
+# 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 (tila)
+# 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=Tapahtuma on lisätty kalenteriisi.
+imipCanceledItem2=Tapahtuma on poistettu kalenteristasi.
+imipUpdatedItem2=Tapahtuma on päivitetty.
+imipBarCancelText=Tässä viestissä ilmoitetaan tapahtuman peruuntumisesta.
+imipBarCounterErrorText=Tämä viesti sisältää vastaehdotuksen kutsulle, jota ei voi käsitellä.
+imipBarCounterPreviousVersionText=Tämä viesti sisältää vastaehdotuksen kutsun edelliselle versiolle.
+imipBarCounterText=Tämä viesti sisältää vastaehdotuksen kutsulle.
+imipBarDisallowedCounterText=Tämä viesti sisältää vastaehdotuksen kutsulle, vaikka kielsit vastaehdotukset tälle tapahtumalle.
+imipBarDeclineCounterText=Tämä viesti sisältää vastauksen vastaehdotuksellesi.
+imipBarRefreshText=Tässä viestissä pyydetään päivittämään tapahtuma.
+imipBarPublishText=Tämä viesti sisältää tapahtuman.
+imipBarRequestText=Tämä viesti sisältää kutsun tapahtumaan.
+imipBarSentText=Tämä viesti sisältää lähetetyn tapahtuman.
+imipBarSentButRemovedText=Tämä viesti sisältää lähetetyn tapahtuman, joka ei ole enää kalenterissasi.
+imipBarUpdateText=Tämä viesti sisältää päivityksen olemassaolevaan tapahtumaan.
+imipBarUpdateMultipleText=Tämä viesti sisältää päivityksiä useisiin olemassa oleviin tapahtumiin.
+imipBarUpdateSeriesText=Tämä viesti sisältää päivityksen olemassa olevaan tapahtumasarjaan.
+imipBarAlreadyProcessedText=Tämä viesti sisältää tapahtuman, joka on jo käsitelty.
+imipBarProcessedNeedsAction=Tämä viesti sisältää tapahtuman, johon et vielä ole vastannut.
+imipBarProcessedMultipleNeedsAction=Tämä viesti sisältää useita tapahtumia, joihin et ole vielä vastannut.
+imipBarProcessedSeriesNeedsAction=Tämä viesti sisältää tapahtumasarjoja joihin et ole vielä vastannut.
+imipBarReplyText=Tämä viesti sisältää vastauksen kutsuun.
+imipBarReplyToNotExistingItem=Tämä viesti sisältää vastauksen tapahtumaan jota ei löydy kalenteristasi.
+# LOCALIZATION_NOTE(imipBarReplyToRecentlyRemovedItem):
+# %1$S - datetime of deletion
+imipBarReplyToRecentlyRemovedItem=Tämä viesti sisältää vastauksen tapahtumaan joka poistettiin kalenteristasi %1$S.
+imipBarUnsupportedText=Tässä viestissä on tapahtuma, jota tämä Lightningin versio ei voi käsitellä.
+imipBarUnsupportedText2=Tässä viestissä on tapahtuma, jota nykyinen versio %1$S ei voi käsitellä.
+imipBarProcessingFailed=Viestin käsittely epäonnistui. Tila: %1$S.
+imipBarCalendarDeactivated=Tämä viesti sisältää tietoa tapahtumasta. Ota kalenteri käyttöön käsitelläksesi viestiä.
+imipBarNotWritable=Kutsuja varten ei ole määritetty muokattavaa kalenteria. Tarkista kalenterin asetukset.
+imipSendMail.title=Sähköposti-ilmoitus
+imipSendMail.text=Haluatko lähettää ilmoitusviestin nyt?
+imipNoIdentity=Ei mitään
+imipNoCalendarAvailable=Käytettävissä ei ole muokattavaa kalenteria.
+
+itipReplySubject2=Vastaus kutsuun: %1$S
+itipReplyBodyAccept=%1$S on hyväksynyt tapahtumakutsusi.
+itipReplyBodyDecline=%1$S on hylännyt tapahtumakutsusi.
+itipReplySubjectAccept2=Hyväksytty: %1$S
+itipReplySubjectDecline2=Kutsu hylätty: %1$S
+itipReplySubjectTentative2=Hyväksytty alustavasti: %1$S
+itipRequestSubject2=Kutsu: %1$S
+itipRequestUpdatedSubject2=Päivitetty: %1$S
+itipRequestBody=%1$S on kutsunut sinut tapahtumaan %2$S
+itipCancelSubject2=Peruttu: %1$S
+itipCancelBody=%1$S on peruuttanut tapahtuman: %2$S
+itipCounterBody=%1$S on tehnyt vastaehdotuksen tapahtumaan ”%2$S”:
+itipDeclineCounterBody=%1$S on hylännyt vastaehdotuksesi tapahtumaan ”%2$S”.
+itipDeclineCounterSubject=Vastaehdotus hylätty: %1$S
+
+confirmProcessInvitation=Olet äskettäin poistanut tämän kohteen. Haluatko varmasti käsitellä tämän kutsun?
+confirmProcessInvitationTitle=Käsitelläänkö kutsu?
+
+invitationsLink.label=Kutsut: %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=%1$S:n vaatimaa binaarista komponenttia ei voitu ladata. Syynä tähän on todennäköisesti se, että käytössä on väärä versioyhdistelmä. Parhaillaan on asennettuna %1$S %2$S, mutta pitäisi käyttää versiota %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=%1$S.n vaatimaa binaarista komponenttia ei voitu ladata. Syynä tähän on todennäköisesti se, että käytössä on väärä versioyhdistelmä. Parhaillaan on asennettuna %2$S %3$S ja %1$S %4$S. Katso lisätietoja sivulta https://developer.mozilla.org/en/Calendar/Calendar_Versions.
+
+# LOCALIZATION_NOTE(binaryComponentTitle): The title for the dialog that
+# notifies about a version mismatch.
+# %1$S - The Lightning brand name, from the brandShortName string above.
+binaryComponentTitle=Epäsopiva %1$S-versio
+
+# LOCALIZATION NOTE(noIdentitySelectedNotification):
+noIdentitySelectedNotification=Jos haluat käyttää tätä kalenteria kutsujen säilyttämiseen, lisää sähköpostinimesi alle.
diff --git a/l10n-fi/calendar/lightning-l10n.js b/l10n-fi/calendar/lightning-l10n.js
new file mode 100644
index 0000000000..fc962481f2
--- /dev/null
+++ b/l10n-fi/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", "Asian tila,Henkilökohtainen,Idea,Jatkotoimenpide,Kaupan asiakas,Kilpailu,Kokous,Lahja,Lakitoimiston asiakas,Liiketoiminta,Loma,Matka,Ongelma,Projekti,Sekalainen,Soitto,Suosikki,Syntymäpäivä,Tavarantoimittaja,Vapaapäivä,Vuosipäivä,Yleinen vapaapäivä");