diff --git a/CHANGELOG.md b/CHANGELOG.md
index fdb936800c..c103945e44 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,7 +1,29 @@
-
# Changelog
-## 4.6.0 - unreleased
+## 3.5.8 - 2023-01-10
+### Fixed
+- Rate limit appointment booking and config creation
+- Tooltip when importing ics with invalid attendees
+- "After the event" slot not being displayed on the appointment config modal
+
+## 4.6.3 - 2024-01-10
+### Fixed
+- Rate limit appointment booking and config creation
+- Apointment confirmation modal button style
+- Filtering in sharing search
+- Attachment folder picker opening twice
+
+## 4.6.2 - 2024-01-03
+### Fixed
+- Uploading attachments in Firefox
+
+## 4.6.1 - 2023-12-21
+### Fixed
+- Localisation for month view
+- From/To order in booking emails
+- Alarm not editable when menu is open
+
+## 4.6.0 - 2023-11-30
### Added
- v2 for widget API
- PHP8.3 support
diff --git a/l10n/ar.js b/l10n/ar.js
index 3e7d214f69..8f54fb7536 100644
--- a/l10n/ar.js
+++ b/l10n/ar.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "إشتراك جديد عن طريق رابط (للقراءة فقط)",
"Creating subscription …" : "جارٍ إنشاء اشتراك …",
"Add public holiday calendar" : "أضف تقويم العطلات العامة",
+ "Add custom public calendar" : "أضِف تقويماً عمومياً مُخصّصاً",
"An error occurred, unable to create the calendar." : "حدث خطأ، يتعذّر إنشاء التقويم.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "يرجى ادخال رابطٍ صحيحٍ (يبدأ بـ https://, http://, webcals://, webcal://)",
"Copy subscription link" : "نسخ رابط الاشتراك",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "إختر ملفّاً لإضافته كمرفق",
"Choose a file to share as a link" : "إختر ملفاً لمشاركته كرابط",
"Attachment {name} already exist!" : "المُرفَق {name} موجودٌ سلفاً!",
+ "Could not upload attachment(s)" : "يتعذّر رفع المرفقـ(ات)",
"_{count} attachment_::_{count} attachments_" : ["{count} مرفقات","{count} مرفق","{count} مرفقات","{count} مرفقات","{count} مرفقات","{count} مرفقات"],
"Invitation accepted" : "تمّ قبول الدعوة",
"Available" : "مُتوفر",
@@ -383,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "أكتب للبحث في المنطقة الزمنية ",
"Global" : "عالمي",
"Public holiday calendars" : "تقاويم العطلات العامة",
+ "Public calendars" : "التقاويم العمومية",
+ "No valid public calendars configured" : "لا توجد أيّ تقاويم عمومية مُهيّأة بالشكل الصحيح",
+ "Speak to the server administrator to resolve this issue." : "تحدّث مع مشرف الخادوم لحل هذا الإشكال.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "يتم توفير تقاويم العطلات العامة من موقع ثندربرد Thunderbird. سوف يتم تنزيل بيانات التقويم من {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "هذه التقاويم العمومية تمّ اقتراحها من قِبل مشرف الخادوم. بيانات التقويم سيتم تحميلها من موقع الوب المعنِي.",
"By {authors}" : "من قِبَل {authors}",
"Subscribed" : "مُشترِك subscribed",
"Subscribe" : "إشترك subscribe",
"Holidays in {region}" : "العطلات الرسمية في {region}",
- "An error occurred, unable to create the public holiday calendar." : "حدث خطأ، غير قادر على إنشاء تقويم العطللات العامة.",
+ "An error occurred, unable to read public calendars." : "حدث خطأ؛ تعذّرت قراءة التقاويم العمومية.",
+ "An error occurred, unable to subscribe to calendar." : "حدث خطأ؛ تعذّر الاشتراك في التقويم.",
"Select date" : "إختر التاريخ",
"Select slot" : "إختر الفُرضة الزمنية",
"No slots available" : "لا توجد أي فُرَضةٍ slot مٌتاحةٍ",
diff --git a/l10n/ar.json b/l10n/ar.json
index ad672e89a6..88138598d6 100644
--- a/l10n/ar.json
+++ b/l10n/ar.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "إشتراك جديد عن طريق رابط (للقراءة فقط)",
"Creating subscription …" : "جارٍ إنشاء اشتراك …",
"Add public holiday calendar" : "أضف تقويم العطلات العامة",
+ "Add custom public calendar" : "أضِف تقويماً عمومياً مُخصّصاً",
"An error occurred, unable to create the calendar." : "حدث خطأ، يتعذّر إنشاء التقويم.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "يرجى ادخال رابطٍ صحيحٍ (يبدأ بـ https://, http://, webcals://, webcal://)",
"Copy subscription link" : "نسخ رابط الاشتراك",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "إختر ملفّاً لإضافته كمرفق",
"Choose a file to share as a link" : "إختر ملفاً لمشاركته كرابط",
"Attachment {name} already exist!" : "المُرفَق {name} موجودٌ سلفاً!",
+ "Could not upload attachment(s)" : "يتعذّر رفع المرفقـ(ات)",
"_{count} attachment_::_{count} attachments_" : ["{count} مرفقات","{count} مرفق","{count} مرفقات","{count} مرفقات","{count} مرفقات","{count} مرفقات"],
"Invitation accepted" : "تمّ قبول الدعوة",
"Available" : "مُتوفر",
@@ -381,12 +383,17 @@
"Type to search time zone" : "أكتب للبحث في المنطقة الزمنية ",
"Global" : "عالمي",
"Public holiday calendars" : "تقاويم العطلات العامة",
+ "Public calendars" : "التقاويم العمومية",
+ "No valid public calendars configured" : "لا توجد أيّ تقاويم عمومية مُهيّأة بالشكل الصحيح",
+ "Speak to the server administrator to resolve this issue." : "تحدّث مع مشرف الخادوم لحل هذا الإشكال.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "يتم توفير تقاويم العطلات العامة من موقع ثندربرد Thunderbird. سوف يتم تنزيل بيانات التقويم من {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "هذه التقاويم العمومية تمّ اقتراحها من قِبل مشرف الخادوم. بيانات التقويم سيتم تحميلها من موقع الوب المعنِي.",
"By {authors}" : "من قِبَل {authors}",
"Subscribed" : "مُشترِك subscribed",
"Subscribe" : "إشترك subscribe",
"Holidays in {region}" : "العطلات الرسمية في {region}",
- "An error occurred, unable to create the public holiday calendar." : "حدث خطأ، غير قادر على إنشاء تقويم العطللات العامة.",
+ "An error occurred, unable to read public calendars." : "حدث خطأ؛ تعذّرت قراءة التقاويم العمومية.",
+ "An error occurred, unable to subscribe to calendar." : "حدث خطأ؛ تعذّر الاشتراك في التقويم.",
"Select date" : "إختر التاريخ",
"Select slot" : "إختر الفُرضة الزمنية",
"No slots available" : "لا توجد أي فُرَضةٍ slot مٌتاحةٍ",
diff --git a/l10n/ast.js b/l10n/ast.js
index dbb3b88c12..d255dd195c 100644
--- a/l10n/ast.js
+++ b/l10n/ast.js
@@ -7,15 +7,18 @@ OC.L10N.register(
"More events" : "Más eventos",
"Calendar" : "Calendariu",
"%1$s - %2$s" : "%1$s - %2$s",
+ "Confirm" : "Confirmar",
"Date:" : "Data:",
"Today" : "Güei",
"Year" : "Añu",
"Edit" : "Editar",
"Delete" : "Desaniciar",
+ "Export" : "Esportar",
"Trash bin" : "Papelera",
"Name" : "Nome",
"Internal link" : "Enllaz internu",
"A private link that can be used with external clients" : "Un enllaz priváu que se pue usar con veceros esternos",
+ "Copy public link" : "Copiar l'enllaz públicu",
"An error occurred while unsharing the calendar." : "Prodúxose un error mentanto se dexaba de compartir el calendariu.",
"Save" : "Guardar",
"Cancel" : "Encaboxar",
@@ -39,14 +42,17 @@ OC.L10N.register(
"Friday" : "Vienres",
"Saturday" : "Sábadu",
"Sunday" : "Domingu",
+ "Update" : "Anovar",
"Notification" : "Avisu",
"_second_::_seconds_" : ["segundu","segundos"],
"_minute_::_minutes_" : ["minutu","minutos"],
"_hour_::_hours_" : ["hora","hores"],
"_day_::_days_" : ["día","díes"],
"_week_::_weeks_" : ["selmana","selmanes"],
+ "Out of office" : "Fuera de la oficina",
"Accept" : "Aceptar",
"Decline" : "Refugar",
+ "Send email" : "Unviar un corréu electrónicu",
"_month_::_months_" : ["mes","meses"],
"_year_::_years_" : ["añu","años"],
"Suggestions" : "Suxerencies",
@@ -72,7 +78,9 @@ OC.L10N.register(
"_Every %n year_::_Every %n years_" : ["Cada %n añu","Cada %n años"],
"%n more" : "%n más",
"Status" : "Estáu",
+ "Categories" : "Categories",
"Meditation" : "Meditación",
+ "Commuting" : "En desplazamientu",
"Dog" : "Perru",
"Concert" : "Conciertu",
"Festival" : "Festival",
@@ -85,6 +93,7 @@ OC.L10N.register(
"Cinema" : "Cine",
"Graduation" : "Graduación",
"Inspection" : "Inspeición",
+ "Mail" : "Corréu electrónicu",
"Soccer" : "Fútbol",
"Basketball" : "Baloncestu",
"Museum" : "Muséu",
diff --git a/l10n/ast.json b/l10n/ast.json
index a04c78f374..d9c77de8e5 100644
--- a/l10n/ast.json
+++ b/l10n/ast.json
@@ -5,15 +5,18 @@
"More events" : "Más eventos",
"Calendar" : "Calendariu",
"%1$s - %2$s" : "%1$s - %2$s",
+ "Confirm" : "Confirmar",
"Date:" : "Data:",
"Today" : "Güei",
"Year" : "Añu",
"Edit" : "Editar",
"Delete" : "Desaniciar",
+ "Export" : "Esportar",
"Trash bin" : "Papelera",
"Name" : "Nome",
"Internal link" : "Enllaz internu",
"A private link that can be used with external clients" : "Un enllaz priváu que se pue usar con veceros esternos",
+ "Copy public link" : "Copiar l'enllaz públicu",
"An error occurred while unsharing the calendar." : "Prodúxose un error mentanto se dexaba de compartir el calendariu.",
"Save" : "Guardar",
"Cancel" : "Encaboxar",
@@ -37,14 +40,17 @@
"Friday" : "Vienres",
"Saturday" : "Sábadu",
"Sunday" : "Domingu",
+ "Update" : "Anovar",
"Notification" : "Avisu",
"_second_::_seconds_" : ["segundu","segundos"],
"_minute_::_minutes_" : ["minutu","minutos"],
"_hour_::_hours_" : ["hora","hores"],
"_day_::_days_" : ["día","díes"],
"_week_::_weeks_" : ["selmana","selmanes"],
+ "Out of office" : "Fuera de la oficina",
"Accept" : "Aceptar",
"Decline" : "Refugar",
+ "Send email" : "Unviar un corréu electrónicu",
"_month_::_months_" : ["mes","meses"],
"_year_::_years_" : ["añu","años"],
"Suggestions" : "Suxerencies",
@@ -70,7 +76,9 @@
"_Every %n year_::_Every %n years_" : ["Cada %n añu","Cada %n años"],
"%n more" : "%n más",
"Status" : "Estáu",
+ "Categories" : "Categories",
"Meditation" : "Meditación",
+ "Commuting" : "En desplazamientu",
"Dog" : "Perru",
"Concert" : "Conciertu",
"Festival" : "Festival",
@@ -83,6 +91,7 @@
"Cinema" : "Cine",
"Graduation" : "Graduación",
"Inspection" : "Inspeición",
+ "Mail" : "Corréu electrónicu",
"Soccer" : "Fútbol",
"Basketball" : "Baloncestu",
"Museum" : "Muséu",
diff --git a/l10n/az.js b/l10n/az.js
index 9a12116515..7475fc393c 100644
--- a/l10n/az.js
+++ b/l10n/az.js
@@ -1,8 +1,10 @@
OC.L10N.register(
"calendar",
{
+ "Hello," : "Salam,",
"Cheers!" : "Şərəfə!",
"Calendar" : "Təqvim",
+ "Confirm" : "Təsdiq edin",
"Today" : "Bu gün",
"Day" : "Gün",
"Week" : "Həftə",
@@ -38,18 +40,23 @@ OC.L10N.register(
"Email" : "Email",
"Choose a file to add as attachment" : "Əlavə ediləcək faylı seçin",
"Accept" : "Qəbul et",
+ "Decline" : "İmtina",
"Send email" : "Email yolla",
"Remove group" : "Qrupu sil",
"Repeat" : "Təkrar",
"never" : "heç vaxt",
"More" : "Daha da",
+ "Subscribe" : "Abunə",
"Personal" : "Şəxsi",
"Details" : "Detallar",
"Attendees" : "İştirakçılar",
+ "Resources" : "Resurslar",
"Close" : "Bağla",
"Daily" : "Günlük",
"Weekly" : "Həftəlik",
"Other" : "Digər",
+ "Status" : "Status",
+ "Categories" : "Kateqoriyalar",
"Mail" : "Məktub",
"Birthday" : "Ad günü"
},
diff --git a/l10n/az.json b/l10n/az.json
index 81634c8bef..b28e61ab2e 100644
--- a/l10n/az.json
+++ b/l10n/az.json
@@ -1,6 +1,8 @@
{ "translations": {
+ "Hello," : "Salam,",
"Cheers!" : "Şərəfə!",
"Calendar" : "Təqvim",
+ "Confirm" : "Təsdiq edin",
"Today" : "Bu gün",
"Day" : "Gün",
"Week" : "Həftə",
@@ -36,18 +38,23 @@
"Email" : "Email",
"Choose a file to add as attachment" : "Əlavə ediləcək faylı seçin",
"Accept" : "Qəbul et",
+ "Decline" : "İmtina",
"Send email" : "Email yolla",
"Remove group" : "Qrupu sil",
"Repeat" : "Təkrar",
"never" : "heç vaxt",
"More" : "Daha da",
+ "Subscribe" : "Abunə",
"Personal" : "Şəxsi",
"Details" : "Detallar",
"Attendees" : "İştirakçılar",
+ "Resources" : "Resurslar",
"Close" : "Bağla",
"Daily" : "Günlük",
"Weekly" : "Həftəlik",
"Other" : "Digər",
+ "Status" : "Status",
+ "Categories" : "Kateqoriyalar",
"Mail" : "Məktub",
"Birthday" : "Ad günü"
},"pluralForm" :"nplurals=2; plural=(n != 1);"
diff --git a/l10n/ca.js b/l10n/ca.js
index eabdffa217..915b392ff7 100644
--- a/l10n/ca.js
+++ b/l10n/ca.js
@@ -34,7 +34,7 @@ OC.L10N.register(
"Dear %s, your booking has been accepted." : "Benvolgut %s, s'ha acceptat la vostra reserva.",
"Appointment for:" : "Cita per a:",
"Date:" : "Data:",
- "You will receive a link with the confirmation email" : "Rebreu un enllaç amb el correu de confirmació",
+ "You will receive a link with the confirmation email" : "Rebreu un enllaç amb el correu electrònic de confirmació",
"Where:" : "Ubicació:",
"Comment:" : "Comentari:",
"You have a new appointment booking \"%s\" from %s" : "Tens una nova reserva de cita \"%s\" de %s",
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Nova subscripció des d'enllaç (només lectura)",
"Creating subscription …" : "Creant la subscripció …",
"Add public holiday calendar" : "Afegeix un calendari de festes públiques",
+ "Add custom public calendar" : "Afegeix un calendari públic personalitzat",
"An error occurred, unable to create the calendar." : "Ha succeït un error i no s'ha pogut crear el calendari.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Escriviu un enllaç vàlid (que comenci amb http://, https://, webcal://, o webcals://)",
"Copy subscription link" : "Copiar l'enllaç de subscripció",
@@ -203,8 +204,8 @@ OC.L10N.register(
"Private – only accessible via secret link" : "Privat – només accessible mitjançant un enllaç secret",
"Appointment name" : "Nom de la cita",
"Location" : "Ubicació",
- "Create a Talk room" : "Crea una sala de conversa",
- "A unique link will be generated for every booked appointment and sent via the confirmation email" : "Un enllaç únic que es generarà per cada cita reservada i enviada mitjançant el correu de confirmació",
+ "Create a Talk room" : "Crea una sala de Converses",
+ "A unique link will be generated for every booked appointment and sent via the confirmation email" : "Un enllaç únic que es generarà per cada cita reservada i enviada mitjançant el correu electrònic de confirmació",
"Description" : "Descripció",
"Visibility" : "Visibilitat",
"Duration" : "Durada",
@@ -298,6 +299,7 @@ OC.L10N.register(
"Create Talk room for this event" : "Crea una sala a Talk per a aquest esdeveniment",
"Show busy times" : "Mostra els horaris ocupats",
"No attendees yet" : "Encara no hi ha cap participant",
+ "You do not own this calendar, so you cannot add attendees to this event" : "No sou el propietari d'aquest calendari, de manera que no podeu afegir assistents a aquest esdeveniment",
"Successfully appended link to talk room to location." : "S'ha afegit correctament l'enllaç a la sala de conversa a la ubicació.",
"Successfully appended link to talk room to description." : "S'ha afegit l'enllaç d'una nova sala de Talk a la descripció de l'esdeveniment.",
"Error creating Talk room" : "Ha succeït un error tractant de crear la sala a Talk",
@@ -308,7 +310,10 @@ OC.L10N.register(
"Non-participant" : "Sense participació",
"Remove group" : "Suprimir el grup",
"Remove attendee" : "Suprimeix el participant",
+ "_%n member_::_%n members_" : ["{n} membre","{n} membres"],
+ "Search for emails, users, contacts or groups" : "Cerca correus electrònics, usuaris, contactes o grups",
"No match found" : "No s'ha trobat cap coincidència",
+ "Note that members of circles get invited but are not synced yet." : "Tingueu en compte que els membres dels cercles són convidats però encara no es sincronitzen.",
"(organizer)" : "(organitza l'esdeveniment)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Per enviar invitacions i atendre les respostes, cal que [linkopen]afegiu la vostra adreça de correu a la vostra configuració personal[linkclose].",
"Remove color" : "Suprimeix el color",
@@ -379,15 +384,21 @@ OC.L10N.register(
"Type to search time zone" : "Escriviu per cercar la zona horària",
"Global" : "Global",
"Public holiday calendars" : "Calendaris de festius",
+ "Public calendars" : "Calendaris públics",
+ "No valid public calendars configured" : "No s'han configurat calendaris públics vàlids",
+ "Speak to the server administrator to resolve this issue." : "Parleu amb l'administrador del servidor per resoldre aquest problema.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Thunderbird proporciona els calendaris de festius. Les dades del calendari es baixaran de {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Aquests calendaris públics els suggereix l'administrador del servidor. Les dades del calendari es descarregaran del lloc web corresponent.",
"By {authors}" : "Per {authors}",
"Subscribed" : "Subscrit",
"Subscribe" : "Subscriu-m'hi",
"Holidays in {region}" : "Festius a {region}",
- "An error occurred, unable to create the public holiday calendar." : "S'ha produït un error, no s'ha pogut crear el calendari de festius.",
+ "An error occurred, unable to read public calendars." : "S'ha produït un error, no es poden llegir els calendaris públics.",
+ "An error occurred, unable to subscribe to calendar." : "S'ha produït un error, no es pot subscriure al calendari.",
"Select date" : "Seleccioneu una data",
"Select slot" : "Seleccioneu unitat temporal",
"No slots available" : "No hi han unitats temporals disponibles",
+ "Could not fetch slots" : "No s'han pogut obtenir les unitats temporals",
"The slot for your appointment has been confirmed" : "S'ha confirmat l’unitat temporal per a la vostra cita",
"Appointment Details:" : "Detalls de la cita:",
"Time:" : "Hora:",
diff --git a/l10n/ca.json b/l10n/ca.json
index 96e4c685b3..34ac5690c6 100644
--- a/l10n/ca.json
+++ b/l10n/ca.json
@@ -32,7 +32,7 @@
"Dear %s, your booking has been accepted." : "Benvolgut %s, s'ha acceptat la vostra reserva.",
"Appointment for:" : "Cita per a:",
"Date:" : "Data:",
- "You will receive a link with the confirmation email" : "Rebreu un enllaç amb el correu de confirmació",
+ "You will receive a link with the confirmation email" : "Rebreu un enllaç amb el correu electrònic de confirmació",
"Where:" : "Ubicació:",
"Comment:" : "Comentari:",
"You have a new appointment booking \"%s\" from %s" : "Tens una nova reserva de cita \"%s\" de %s",
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Nova subscripció des d'enllaç (només lectura)",
"Creating subscription …" : "Creant la subscripció …",
"Add public holiday calendar" : "Afegeix un calendari de festes públiques",
+ "Add custom public calendar" : "Afegeix un calendari públic personalitzat",
"An error occurred, unable to create the calendar." : "Ha succeït un error i no s'ha pogut crear el calendari.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Escriviu un enllaç vàlid (que comenci amb http://, https://, webcal://, o webcals://)",
"Copy subscription link" : "Copiar l'enllaç de subscripció",
@@ -201,8 +202,8 @@
"Private – only accessible via secret link" : "Privat – només accessible mitjançant un enllaç secret",
"Appointment name" : "Nom de la cita",
"Location" : "Ubicació",
- "Create a Talk room" : "Crea una sala de conversa",
- "A unique link will be generated for every booked appointment and sent via the confirmation email" : "Un enllaç únic que es generarà per cada cita reservada i enviada mitjançant el correu de confirmació",
+ "Create a Talk room" : "Crea una sala de Converses",
+ "A unique link will be generated for every booked appointment and sent via the confirmation email" : "Un enllaç únic que es generarà per cada cita reservada i enviada mitjançant el correu electrònic de confirmació",
"Description" : "Descripció",
"Visibility" : "Visibilitat",
"Duration" : "Durada",
@@ -296,6 +297,7 @@
"Create Talk room for this event" : "Crea una sala a Talk per a aquest esdeveniment",
"Show busy times" : "Mostra els horaris ocupats",
"No attendees yet" : "Encara no hi ha cap participant",
+ "You do not own this calendar, so you cannot add attendees to this event" : "No sou el propietari d'aquest calendari, de manera que no podeu afegir assistents a aquest esdeveniment",
"Successfully appended link to talk room to location." : "S'ha afegit correctament l'enllaç a la sala de conversa a la ubicació.",
"Successfully appended link to talk room to description." : "S'ha afegit l'enllaç d'una nova sala de Talk a la descripció de l'esdeveniment.",
"Error creating Talk room" : "Ha succeït un error tractant de crear la sala a Talk",
@@ -306,7 +308,10 @@
"Non-participant" : "Sense participació",
"Remove group" : "Suprimir el grup",
"Remove attendee" : "Suprimeix el participant",
+ "_%n member_::_%n members_" : ["{n} membre","{n} membres"],
+ "Search for emails, users, contacts or groups" : "Cerca correus electrònics, usuaris, contactes o grups",
"No match found" : "No s'ha trobat cap coincidència",
+ "Note that members of circles get invited but are not synced yet." : "Tingueu en compte que els membres dels cercles són convidats però encara no es sincronitzen.",
"(organizer)" : "(organitza l'esdeveniment)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Per enviar invitacions i atendre les respostes, cal que [linkopen]afegiu la vostra adreça de correu a la vostra configuració personal[linkclose].",
"Remove color" : "Suprimeix el color",
@@ -377,15 +382,21 @@
"Type to search time zone" : "Escriviu per cercar la zona horària",
"Global" : "Global",
"Public holiday calendars" : "Calendaris de festius",
+ "Public calendars" : "Calendaris públics",
+ "No valid public calendars configured" : "No s'han configurat calendaris públics vàlids",
+ "Speak to the server administrator to resolve this issue." : "Parleu amb l'administrador del servidor per resoldre aquest problema.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Thunderbird proporciona els calendaris de festius. Les dades del calendari es baixaran de {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Aquests calendaris públics els suggereix l'administrador del servidor. Les dades del calendari es descarregaran del lloc web corresponent.",
"By {authors}" : "Per {authors}",
"Subscribed" : "Subscrit",
"Subscribe" : "Subscriu-m'hi",
"Holidays in {region}" : "Festius a {region}",
- "An error occurred, unable to create the public holiday calendar." : "S'ha produït un error, no s'ha pogut crear el calendari de festius.",
+ "An error occurred, unable to read public calendars." : "S'ha produït un error, no es poden llegir els calendaris públics.",
+ "An error occurred, unable to subscribe to calendar." : "S'ha produït un error, no es pot subscriure al calendari.",
"Select date" : "Seleccioneu una data",
"Select slot" : "Seleccioneu unitat temporal",
"No slots available" : "No hi han unitats temporals disponibles",
+ "Could not fetch slots" : "No s'han pogut obtenir les unitats temporals",
"The slot for your appointment has been confirmed" : "S'ha confirmat l’unitat temporal per a la vostra cita",
"Appointment Details:" : "Detalls de la cita:",
"Time:" : "Hora:",
diff --git a/l10n/cs.js b/l10n/cs.js
index d33afc8320..2778f8672a 100644
--- a/l10n/cs.js
+++ b/l10n/cs.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Nové přihlášení se k odběru z odkazu (pouze pro čtení)",
"Creating subscription …" : "Vytváření přihlášení se k odběru…",
"Add public holiday calendar" : "Přidat kalendář veřejných svátků",
+ "Add custom public calendar" : "Přidat uživatelsky určený veřejný kalendář",
"An error occurred, unable to create the calendar." : "Došlo k chybě, kalendář se nepodařilo vytvořit.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Vložte platný odkaz (včetně http://, https://, webcal://, nebo webcals:// na začátku)",
"Copy subscription link" : "Zkopírovat odkaz pro přihlášení se k odběru",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Vyberte soubor k přiložení",
"Choose a file to share as a link" : "Zvolte soubor, který sdílet jako odkaz",
"Attachment {name} already exist!" : "Příloha {name} už existuje!",
+ "Could not upload attachment(s)" : "Nepodařilo se nahrát přílohy",
"_{count} attachment_::_{count} attachments_" : ["{count} příloha","{count} přílohy","{count} příloh","{count} přílohy"],
"Invitation accepted" : "Pozvání přijato",
"Available" : "K dispozici",
@@ -383,12 +385,16 @@ OC.L10N.register(
"Type to search time zone" : "Psaním vyhledejte časové pásmo",
"Global" : "Globální",
"Public holiday calendars" : "Kalendář veřejných svátků",
+ "Public calendars" : "Veřejné kalendáře",
+ "No valid public calendars configured" : "Nenastaveny žádné platné veřejné kalendáře",
+ "Speak to the server administrator to resolve this issue." : "O řešení tohoto problému požádejte správce serveru.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Kalendáře veřejných svátků jsou poskytovány projektem Thunderbird. Data kalendáře budou stažena z {website}",
"By {authors}" : "Od {authors}",
"Subscribed" : "Přihlášeno se k odběru",
"Subscribe" : "Přihlásit se k odběru",
"Holidays in {region}" : "Svátky v {region}",
- "An error occurred, unable to create the public holiday calendar." : "Došlo k chybě – nepodařilo se vytvořit kalendář veřejných svátků.",
+ "An error occurred, unable to read public calendars." : "Došlo k chybě –nepodařilo se načíst veřejné kalendáře.",
+ "An error occurred, unable to subscribe to calendar." : "Došlo k chybě – nepodařilo se přihlásit k odběru kalendáře.",
"Select date" : "Vybrat datum",
"Select slot" : "Vybrat slot",
"No slots available" : "Nejsou k dispozici žádná časová okna",
diff --git a/l10n/cs.json b/l10n/cs.json
index 5facafb8ad..98079fbd13 100644
--- a/l10n/cs.json
+++ b/l10n/cs.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Nové přihlášení se k odběru z odkazu (pouze pro čtení)",
"Creating subscription …" : "Vytváření přihlášení se k odběru…",
"Add public holiday calendar" : "Přidat kalendář veřejných svátků",
+ "Add custom public calendar" : "Přidat uživatelsky určený veřejný kalendář",
"An error occurred, unable to create the calendar." : "Došlo k chybě, kalendář se nepodařilo vytvořit.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Vložte platný odkaz (včetně http://, https://, webcal://, nebo webcals:// na začátku)",
"Copy subscription link" : "Zkopírovat odkaz pro přihlášení se k odběru",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Vyberte soubor k přiložení",
"Choose a file to share as a link" : "Zvolte soubor, který sdílet jako odkaz",
"Attachment {name} already exist!" : "Příloha {name} už existuje!",
+ "Could not upload attachment(s)" : "Nepodařilo se nahrát přílohy",
"_{count} attachment_::_{count} attachments_" : ["{count} příloha","{count} přílohy","{count} příloh","{count} přílohy"],
"Invitation accepted" : "Pozvání přijato",
"Available" : "K dispozici",
@@ -381,12 +383,16 @@
"Type to search time zone" : "Psaním vyhledejte časové pásmo",
"Global" : "Globální",
"Public holiday calendars" : "Kalendář veřejných svátků",
+ "Public calendars" : "Veřejné kalendáře",
+ "No valid public calendars configured" : "Nenastaveny žádné platné veřejné kalendáře",
+ "Speak to the server administrator to resolve this issue." : "O řešení tohoto problému požádejte správce serveru.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Kalendáře veřejných svátků jsou poskytovány projektem Thunderbird. Data kalendáře budou stažena z {website}",
"By {authors}" : "Od {authors}",
"Subscribed" : "Přihlášeno se k odběru",
"Subscribe" : "Přihlásit se k odběru",
"Holidays in {region}" : "Svátky v {region}",
- "An error occurred, unable to create the public holiday calendar." : "Došlo k chybě – nepodařilo se vytvořit kalendář veřejných svátků.",
+ "An error occurred, unable to read public calendars." : "Došlo k chybě –nepodařilo se načíst veřejné kalendáře.",
+ "An error occurred, unable to subscribe to calendar." : "Došlo k chybě – nepodařilo se přihlásit k odběru kalendáře.",
"Select date" : "Vybrat datum",
"Select slot" : "Vybrat slot",
"No slots available" : "Nejsou k dispozici žádná časová okna",
diff --git a/l10n/da.js b/l10n/da.js
index d189e66443..444d602eee 100644
--- a/l10n/da.js
+++ b/l10n/da.js
@@ -385,7 +385,6 @@ OC.L10N.register(
"Subscribed" : "Abonneret",
"Subscribe" : "Tilmeld",
"Holidays in {region}" : "Ferie i {region}",
- "An error occurred, unable to create the public holiday calendar." : "Der opstod en fejl, helligdagskalenderen kunne ikke oprettes.",
"Select date" : "Vælg dato",
"Select slot" : "Vælg tidspunkt",
"No slots available" : "Ingen ledige tidspunkter",
diff --git a/l10n/da.json b/l10n/da.json
index 1332c82d58..0015741701 100644
--- a/l10n/da.json
+++ b/l10n/da.json
@@ -383,7 +383,6 @@
"Subscribed" : "Abonneret",
"Subscribe" : "Tilmeld",
"Holidays in {region}" : "Ferie i {region}",
- "An error occurred, unable to create the public holiday calendar." : "Der opstod en fejl, helligdagskalenderen kunne ikke oprettes.",
"Select date" : "Vælg dato",
"Select slot" : "Vælg tidspunkt",
"No slots available" : "Ingen ledige tidspunkter",
diff --git a/l10n/de.js b/l10n/de.js
index 91acf6da43..94dc582319 100644
--- a/l10n/de.js
+++ b/l10n/de.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Neues Abonnement aus Link (schreibgeschützt)",
"Creating subscription …" : "Erstelle Abonnement …",
"Add public holiday calendar" : "Feiertagskalender hinzufügen",
+ "Add custom public calendar" : "Benutzerdefinierten öffentlichen Kalender hinzufügen",
"An error occurred, unable to create the calendar." : "Es ist ein Fehler aufgetreten, der Kalender konnte nicht erstellt werden.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Bitte einen gültigen Link eingeben (beginnend mit http://, https://, webcal://, oder webcals://)",
"Copy subscription link" : "Abonnement-Link kopieren",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Wähle eine Datei, die als Anhang angefügt werden soll",
"Choose a file to share as a link" : "Datei auswählen welche als Link geteilt wird",
"Attachment {name} already exist!" : "Anhang {name} existiert bereits",
+ "Could not upload attachment(s)" : "Anhänge konnten nicht hochgeladen werden.",
"_{count} attachment_::_{count} attachments_" : ["{count} Anhang","{count} Anhänge"],
"Invitation accepted" : "Einladung angenommen",
"Available" : "Verfügbar",
@@ -383,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Zum Suchen der Zeitzone tippen",
"Global" : "Weltweit",
"Public holiday calendars" : "Feiertagskalender",
+ "Public calendars" : "Öffentliche Kalender",
+ "No valid public calendars configured" : "Keine gültigen öffentlichen Kalender eingerichtet.",
+ "Speak to the server administrator to resolve this issue." : "Spreche bitte den Administrator an, um dieses Problem zu lösen.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Feiertagskalender werden von Thunderbird bereitgestellt. Kalenderdaten werden von {website} heruntergeladen.",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Diese öffentlichen Kalender werden von dem Serveradministrator vorgeschlagen. Kalenderdaten werden von der entsprechenden Webseite heruntergeladen.",
"By {authors}" : "Von {authors}",
"Subscribed" : "Abonniert",
"Subscribe" : "Abonnieren",
"Holidays in {region}" : "Feiertage in {region}",
- "An error occurred, unable to create the public holiday calendar." : "Es ist ein Fehler aufgetreten, der Feiertagskalender konnte nicht erstellt werden.",
+ "An error occurred, unable to read public calendars." : "Es ist ein Fehler aufgetreten, öffentliche Kalender können nicht gelesen werden.",
+ "An error occurred, unable to subscribe to calendar." : "Es ist ein Fehler aufgetreten, Kalender konnte nicht abonniert werden.",
"Select date" : "Datum auswählen",
"Select slot" : "Zeitfenster auswählen",
"No slots available" : "Keine Zeitfenster verfügbar",
diff --git a/l10n/de.json b/l10n/de.json
index 6d6b45c15a..45e21e4ad9 100644
--- a/l10n/de.json
+++ b/l10n/de.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Neues Abonnement aus Link (schreibgeschützt)",
"Creating subscription …" : "Erstelle Abonnement …",
"Add public holiday calendar" : "Feiertagskalender hinzufügen",
+ "Add custom public calendar" : "Benutzerdefinierten öffentlichen Kalender hinzufügen",
"An error occurred, unable to create the calendar." : "Es ist ein Fehler aufgetreten, der Kalender konnte nicht erstellt werden.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Bitte einen gültigen Link eingeben (beginnend mit http://, https://, webcal://, oder webcals://)",
"Copy subscription link" : "Abonnement-Link kopieren",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Wähle eine Datei, die als Anhang angefügt werden soll",
"Choose a file to share as a link" : "Datei auswählen welche als Link geteilt wird",
"Attachment {name} already exist!" : "Anhang {name} existiert bereits",
+ "Could not upload attachment(s)" : "Anhänge konnten nicht hochgeladen werden.",
"_{count} attachment_::_{count} attachments_" : ["{count} Anhang","{count} Anhänge"],
"Invitation accepted" : "Einladung angenommen",
"Available" : "Verfügbar",
@@ -381,12 +383,17 @@
"Type to search time zone" : "Zum Suchen der Zeitzone tippen",
"Global" : "Weltweit",
"Public holiday calendars" : "Feiertagskalender",
+ "Public calendars" : "Öffentliche Kalender",
+ "No valid public calendars configured" : "Keine gültigen öffentlichen Kalender eingerichtet.",
+ "Speak to the server administrator to resolve this issue." : "Spreche bitte den Administrator an, um dieses Problem zu lösen.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Feiertagskalender werden von Thunderbird bereitgestellt. Kalenderdaten werden von {website} heruntergeladen.",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Diese öffentlichen Kalender werden von dem Serveradministrator vorgeschlagen. Kalenderdaten werden von der entsprechenden Webseite heruntergeladen.",
"By {authors}" : "Von {authors}",
"Subscribed" : "Abonniert",
"Subscribe" : "Abonnieren",
"Holidays in {region}" : "Feiertage in {region}",
- "An error occurred, unable to create the public holiday calendar." : "Es ist ein Fehler aufgetreten, der Feiertagskalender konnte nicht erstellt werden.",
+ "An error occurred, unable to read public calendars." : "Es ist ein Fehler aufgetreten, öffentliche Kalender können nicht gelesen werden.",
+ "An error occurred, unable to subscribe to calendar." : "Es ist ein Fehler aufgetreten, Kalender konnte nicht abonniert werden.",
"Select date" : "Datum auswählen",
"Select slot" : "Zeitfenster auswählen",
"No slots available" : "Keine Zeitfenster verfügbar",
diff --git a/l10n/de_DE.js b/l10n/de_DE.js
index 1199e0af28..1504e0e1f1 100644
--- a/l10n/de_DE.js
+++ b/l10n/de_DE.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Neues Abonnement aus Link (schreibgeschützt)",
"Creating subscription …" : "Erstelle Abonnement …",
"Add public holiday calendar" : "Feiertagskalender hinzufügen",
+ "Add custom public calendar" : "Benutzerdefinierten öffentlichen Kalender hinzufügen",
"An error occurred, unable to create the calendar." : "Es ist ein Fehler aufgetreten, der Kalender konnte nicht erstellt werden.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Bitte geben Sie einen gültigen Link ein (beginnend mit http://, https://, webcal://, oder webcals://)",
"Copy subscription link" : "Abonnement-Link kopieren",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Wählen Sie eine Datei, die als Anhang angefügt werden soll",
"Choose a file to share as a link" : "Wählen Sie eine Datei, die als Link geteilt werden soll",
"Attachment {name} already exist!" : "Anhang {name} existiert bereits",
+ "Could not upload attachment(s)" : "Anhänge konnten nicht hochgeladen werden",
"_{count} attachment_::_{count} attachments_" : ["{count} Anhang","{count} Anhänge"],
"Invitation accepted" : "Einladung angenommen",
"Available" : "Verfügbar",
@@ -383,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Zum Suchen der Zeitzone tippen",
"Global" : "Weltweit",
"Public holiday calendars" : "Feiertagskalender",
+ "Public calendars" : "Öffentliche Kalender",
+ "No valid public calendars configured" : "Keine gültigen öffentlichen Kalender eingerichtet",
+ "Speak to the server administrator to resolve this issue." : "Sprechen Sie die Administration an, um dieses Problem zu lösen.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Feiertagskalender werden von Thunderbird bereitgestellt. Kalenderdaten werden von {website} heruntergeladen.",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Diese öffentlichen Kalender werden von der Serveradministration vorgeschlagen. Kalenderdaten werden von der entsprechenden Webseite heruntergeladen.",
"By {authors}" : "Von {authors}",
"Subscribed" : "Abonniert",
"Subscribe" : "Abonnieren",
"Holidays in {region}" : "Feiertage in {region}",
- "An error occurred, unable to create the public holiday calendar." : "Es ist ein Fehler aufgetreten, der Feiertagskalender konnte nicht erstellt werden.",
+ "An error occurred, unable to read public calendars." : "Es ist ein Fehler aufgetreten, öffentliche Kalender können nicht gelesen werden.",
+ "An error occurred, unable to subscribe to calendar." : "Es ist ein Fehler aufgetreten, Kalender konnte nicht abonniert werden.",
"Select date" : "Datum auswählen",
"Select slot" : "Zeitfenster auswählen",
"No slots available" : "Keine Zeitfenster verfügbar",
diff --git a/l10n/de_DE.json b/l10n/de_DE.json
index e71929dd48..f22557a6b9 100644
--- a/l10n/de_DE.json
+++ b/l10n/de_DE.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Neues Abonnement aus Link (schreibgeschützt)",
"Creating subscription …" : "Erstelle Abonnement …",
"Add public holiday calendar" : "Feiertagskalender hinzufügen",
+ "Add custom public calendar" : "Benutzerdefinierten öffentlichen Kalender hinzufügen",
"An error occurred, unable to create the calendar." : "Es ist ein Fehler aufgetreten, der Kalender konnte nicht erstellt werden.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Bitte geben Sie einen gültigen Link ein (beginnend mit http://, https://, webcal://, oder webcals://)",
"Copy subscription link" : "Abonnement-Link kopieren",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Wählen Sie eine Datei, die als Anhang angefügt werden soll",
"Choose a file to share as a link" : "Wählen Sie eine Datei, die als Link geteilt werden soll",
"Attachment {name} already exist!" : "Anhang {name} existiert bereits",
+ "Could not upload attachment(s)" : "Anhänge konnten nicht hochgeladen werden",
"_{count} attachment_::_{count} attachments_" : ["{count} Anhang","{count} Anhänge"],
"Invitation accepted" : "Einladung angenommen",
"Available" : "Verfügbar",
@@ -381,12 +383,17 @@
"Type to search time zone" : "Zum Suchen der Zeitzone tippen",
"Global" : "Weltweit",
"Public holiday calendars" : "Feiertagskalender",
+ "Public calendars" : "Öffentliche Kalender",
+ "No valid public calendars configured" : "Keine gültigen öffentlichen Kalender eingerichtet",
+ "Speak to the server administrator to resolve this issue." : "Sprechen Sie die Administration an, um dieses Problem zu lösen.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Feiertagskalender werden von Thunderbird bereitgestellt. Kalenderdaten werden von {website} heruntergeladen.",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Diese öffentlichen Kalender werden von der Serveradministration vorgeschlagen. Kalenderdaten werden von der entsprechenden Webseite heruntergeladen.",
"By {authors}" : "Von {authors}",
"Subscribed" : "Abonniert",
"Subscribe" : "Abonnieren",
"Holidays in {region}" : "Feiertage in {region}",
- "An error occurred, unable to create the public holiday calendar." : "Es ist ein Fehler aufgetreten, der Feiertagskalender konnte nicht erstellt werden.",
+ "An error occurred, unable to read public calendars." : "Es ist ein Fehler aufgetreten, öffentliche Kalender können nicht gelesen werden.",
+ "An error occurred, unable to subscribe to calendar." : "Es ist ein Fehler aufgetreten, Kalender konnte nicht abonniert werden.",
"Select date" : "Datum auswählen",
"Select slot" : "Zeitfenster auswählen",
"No slots available" : "Keine Zeitfenster verfügbar",
diff --git a/l10n/el.js b/l10n/el.js
index b01c3d93c8..786188927d 100644
--- a/l10n/el.js
+++ b/l10n/el.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Νέα συνδρομή από τον σύνδεσμο (μόνο για ανάγνωση)",
"Creating subscription …" : "Δημιουργία συνδρομής ...",
"Add public holiday calendar" : "Προσθήκη ημερολογίου αργιών",
+ "Add custom public calendar" : "Προσθήκη προσαρμοσμένου δημόσιου ημερολογίου",
"An error occurred, unable to create the calendar." : "Παρουσιάστηκε σφάλμα, δεν μπορεί να δημιουργηθεί το ημερολόγιο.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Παρακαλώ εισάγετε έγκυρο σύνδεσμο (ξεκινούν με http://, https://, webcal://, ή webcals://)",
"Copy subscription link" : "Αντιγραφή συνδέσμου συνδρομής",
@@ -309,7 +310,10 @@ OC.L10N.register(
"Non-participant" : "Μη-συμμετέχοντας",
"Remove group" : "Αφαίρεση ομάδας",
"Remove attendee" : "Κατάργηση του συμμετέχοντα",
+ "_%n member_::_%n members_" : ["%n μέλος","%n μέλη"],
+ "Search for emails, users, contacts or groups" : "Αναζήτηση για emails, χρήστες, επαφές ή ομάδες",
"No match found" : "Δεν βρέθηκε αποτέλεσμα.",
+ "Note that members of circles get invited but are not synced yet." : "Σημειώστε ότι τα μέλη των κύκλων προσκαλούνται αλλά δεν έχουν συγχρονιστεί ακόμα.",
"(organizer)" : "(organizer)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Για να στείλετε προσκλήσεις και να χειριστείτε τις απαντήσεις, [linkopen]προσθέστε το email σας στις προσωπικές ρυθμίσεις [linkclose].",
"Remove color" : "Αφαίρεση χρώματος",
@@ -380,12 +384,17 @@ OC.L10N.register(
"Type to search time zone" : "Πληκτρολογήστε για αναζήτηση χρονικής ζώνης",
"Global" : "Καθολικό",
"Public holiday calendars" : "Ημερολόγια δημόσιων αργιών",
+ "Public calendars" : "Δημόσια ημερολόγια",
+ "No valid public calendars configured" : "Δεν έχουν διαμορφωθεί έγκυρα δημόσια ημερολόγια",
+ "Speak to the server administrator to resolve this issue." : "Μιλήστε με τον διαχειριστή του διακομιστή για να επιλυθεί αυτό το πρόβλημα.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Τα ημερολόγια δημόσιων αργιών παρέχονται από το Thunderbird. Τα δεδομένα του ημερολογίου θα ληφθούν από το {ιστοσελίδα}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Αυτά τα δημόσια ημερολόγια προτείνονται από τους διαχειριστές του διακομιστή. Τα δεδομένα του ημερολογίου θα ληφθούν από την αντίστοιχη ιστοσελίδα.",
"By {authors}" : "Από {authors}",
"Subscribed" : "Εγγεγραμμένα",
"Subscribe" : "Εγγραφή",
"Holidays in {region}" : "Αργίες σε {region}",
- "An error occurred, unable to create the public holiday calendar." : "Εμφανίστηκε σφάλμα, δεν ήταν δυνατή η δημιουργία του ημερολογίου δημόσιων αργιών.",
+ "An error occurred, unable to read public calendars." : "Παρουσιάστηκε ένα σφάλμα, αδυναμία ανάγνωσης δημόσιων ημερολογίων.",
+ "An error occurred, unable to subscribe to calendar." : "Παρουσιάστηκε ένα σφάλμα, αδυναμία εγγραφής στο ημερολόγιο.",
"Select date" : "Επιλέξτε ημερομηνία",
"Select slot" : "Επιλογή θέσης",
"No slots available" : "Καμμια διαθέσιμη θέση",
diff --git a/l10n/el.json b/l10n/el.json
index 9645ecc91e..7af9ede5cf 100644
--- a/l10n/el.json
+++ b/l10n/el.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Νέα συνδρομή από τον σύνδεσμο (μόνο για ανάγνωση)",
"Creating subscription …" : "Δημιουργία συνδρομής ...",
"Add public holiday calendar" : "Προσθήκη ημερολογίου αργιών",
+ "Add custom public calendar" : "Προσθήκη προσαρμοσμένου δημόσιου ημερολογίου",
"An error occurred, unable to create the calendar." : "Παρουσιάστηκε σφάλμα, δεν μπορεί να δημιουργηθεί το ημερολόγιο.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Παρακαλώ εισάγετε έγκυρο σύνδεσμο (ξεκινούν με http://, https://, webcal://, ή webcals://)",
"Copy subscription link" : "Αντιγραφή συνδέσμου συνδρομής",
@@ -307,7 +308,10 @@
"Non-participant" : "Μη-συμμετέχοντας",
"Remove group" : "Αφαίρεση ομάδας",
"Remove attendee" : "Κατάργηση του συμμετέχοντα",
+ "_%n member_::_%n members_" : ["%n μέλος","%n μέλη"],
+ "Search for emails, users, contacts or groups" : "Αναζήτηση για emails, χρήστες, επαφές ή ομάδες",
"No match found" : "Δεν βρέθηκε αποτέλεσμα.",
+ "Note that members of circles get invited but are not synced yet." : "Σημειώστε ότι τα μέλη των κύκλων προσκαλούνται αλλά δεν έχουν συγχρονιστεί ακόμα.",
"(organizer)" : "(organizer)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Για να στείλετε προσκλήσεις και να χειριστείτε τις απαντήσεις, [linkopen]προσθέστε το email σας στις προσωπικές ρυθμίσεις [linkclose].",
"Remove color" : "Αφαίρεση χρώματος",
@@ -378,12 +382,17 @@
"Type to search time zone" : "Πληκτρολογήστε για αναζήτηση χρονικής ζώνης",
"Global" : "Καθολικό",
"Public holiday calendars" : "Ημερολόγια δημόσιων αργιών",
+ "Public calendars" : "Δημόσια ημερολόγια",
+ "No valid public calendars configured" : "Δεν έχουν διαμορφωθεί έγκυρα δημόσια ημερολόγια",
+ "Speak to the server administrator to resolve this issue." : "Μιλήστε με τον διαχειριστή του διακομιστή για να επιλυθεί αυτό το πρόβλημα.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Τα ημερολόγια δημόσιων αργιών παρέχονται από το Thunderbird. Τα δεδομένα του ημερολογίου θα ληφθούν από το {ιστοσελίδα}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Αυτά τα δημόσια ημερολόγια προτείνονται από τους διαχειριστές του διακομιστή. Τα δεδομένα του ημερολογίου θα ληφθούν από την αντίστοιχη ιστοσελίδα.",
"By {authors}" : "Από {authors}",
"Subscribed" : "Εγγεγραμμένα",
"Subscribe" : "Εγγραφή",
"Holidays in {region}" : "Αργίες σε {region}",
- "An error occurred, unable to create the public holiday calendar." : "Εμφανίστηκε σφάλμα, δεν ήταν δυνατή η δημιουργία του ημερολογίου δημόσιων αργιών.",
+ "An error occurred, unable to read public calendars." : "Παρουσιάστηκε ένα σφάλμα, αδυναμία ανάγνωσης δημόσιων ημερολογίων.",
+ "An error occurred, unable to subscribe to calendar." : "Παρουσιάστηκε ένα σφάλμα, αδυναμία εγγραφής στο ημερολόγιο.",
"Select date" : "Επιλέξτε ημερομηνία",
"Select slot" : "Επιλογή θέσης",
"No slots available" : "Καμμια διαθέσιμη θέση",
diff --git a/l10n/en_GB.js b/l10n/en_GB.js
index 87d9b08365..d5a921e114 100644
--- a/l10n/en_GB.js
+++ b/l10n/en_GB.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "New subscription from link (read-only)",
"Creating subscription …" : "Creating subscription …",
"Add public holiday calendar" : "Add public holiday calendar",
+ "Add custom public calendar" : "Add custom public calendar",
"An error occurred, unable to create the calendar." : "An error occurred, unable to create the calendar.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Please enter a valid link (starting with http://, https://, webcal://, or webcals://)",
"Copy subscription link" : "Copy subscription link",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Choose a file to add as attachment",
"Choose a file to share as a link" : "Choose a file to share as a link",
"Attachment {name} already exist!" : "Attachment {name} already exist!",
+ "Could not upload attachment(s)" : "Could not upload attachment(s)",
"_{count} attachment_::_{count} attachments_" : ["{count} attachment","{count} attachments"],
"Invitation accepted" : "Invitation accepted",
"Available" : "Available",
@@ -310,7 +312,9 @@ OC.L10N.register(
"Remove group" : "Remove group",
"Remove attendee" : "Remove attendee",
"_%n member_::_%n members_" : ["%n member","%n members"],
+ "Search for emails, users, contacts or groups" : "Search for emails, users, contacts or groups",
"No match found" : "No match found",
+ "Note that members of circles get invited but are not synced yet." : "Note that members of circles get invited but are not synced yet.",
"(organizer)" : "(organiser)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose].",
"Remove color" : "Remove colour",
@@ -381,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Type to search time zone",
"Global" : "Global",
"Public holiday calendars" : "Public holiday calendars",
+ "Public calendars" : "Public calendars",
+ "No valid public calendars configured" : "No valid public calendars configured",
+ "Speak to the server administrator to resolve this issue." : "Speak to the server administrator to resolve this issue.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website.",
"By {authors}" : "By {authors}",
"Subscribed" : "Subscribed",
"Subscribe" : "Subscribe",
"Holidays in {region}" : "Holidays in {region}",
- "An error occurred, unable to create the public holiday calendar." : "An error occurred, unable to create the public holiday calendar.",
+ "An error occurred, unable to read public calendars." : "An error occurred, unable to read public calendars.",
+ "An error occurred, unable to subscribe to calendar." : "An error occurred, unable to subscribe to calendar.",
"Select date" : "Select date",
"Select slot" : "Select slot",
"No slots available" : "No slots available",
diff --git a/l10n/en_GB.json b/l10n/en_GB.json
index 01398c9432..db356f4d40 100644
--- a/l10n/en_GB.json
+++ b/l10n/en_GB.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "New subscription from link (read-only)",
"Creating subscription …" : "Creating subscription …",
"Add public holiday calendar" : "Add public holiday calendar",
+ "Add custom public calendar" : "Add custom public calendar",
"An error occurred, unable to create the calendar." : "An error occurred, unable to create the calendar.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Please enter a valid link (starting with http://, https://, webcal://, or webcals://)",
"Copy subscription link" : "Copy subscription link",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Choose a file to add as attachment",
"Choose a file to share as a link" : "Choose a file to share as a link",
"Attachment {name} already exist!" : "Attachment {name} already exist!",
+ "Could not upload attachment(s)" : "Could not upload attachment(s)",
"_{count} attachment_::_{count} attachments_" : ["{count} attachment","{count} attachments"],
"Invitation accepted" : "Invitation accepted",
"Available" : "Available",
@@ -308,7 +310,9 @@
"Remove group" : "Remove group",
"Remove attendee" : "Remove attendee",
"_%n member_::_%n members_" : ["%n member","%n members"],
+ "Search for emails, users, contacts or groups" : "Search for emails, users, contacts or groups",
"No match found" : "No match found",
+ "Note that members of circles get invited but are not synced yet." : "Note that members of circles get invited but are not synced yet.",
"(organizer)" : "(organiser)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose].",
"Remove color" : "Remove colour",
@@ -379,12 +383,17 @@
"Type to search time zone" : "Type to search time zone",
"Global" : "Global",
"Public holiday calendars" : "Public holiday calendars",
+ "Public calendars" : "Public calendars",
+ "No valid public calendars configured" : "No valid public calendars configured",
+ "Speak to the server administrator to resolve this issue." : "Speak to the server administrator to resolve this issue.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website.",
"By {authors}" : "By {authors}",
"Subscribed" : "Subscribed",
"Subscribe" : "Subscribe",
"Holidays in {region}" : "Holidays in {region}",
- "An error occurred, unable to create the public holiday calendar." : "An error occurred, unable to create the public holiday calendar.",
+ "An error occurred, unable to read public calendars." : "An error occurred, unable to read public calendars.",
+ "An error occurred, unable to subscribe to calendar." : "An error occurred, unable to subscribe to calendar.",
"Select date" : "Select date",
"Select slot" : "Select slot",
"No slots available" : "No slots available",
diff --git a/l10n/es.js b/l10n/es.js
index a16a588393..d5c2b8e1ad 100644
--- a/l10n/es.js
+++ b/l10n/es.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Nueva suscripción desde el enlace (sólo lectura)",
"Creating subscription …" : "Creando suscripción…",
"Add public holiday calendar" : "Añadir calendario de días feriados públicos",
+ "Add custom public calendar" : "Añadir calendario público personalizado",
"An error occurred, unable to create the calendar." : "Se ha producido un error, no fue posible crear el calendario.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Por favor escriba un enlace válido (comenzando con http://, https://, webcal://, o webcals://)",
"Copy subscription link" : "Copiar enlace de suscripción",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Escoja un archivo para adjuntar",
"Choose a file to share as a link" : "Escoge un archivo para compartir como enlace",
"Attachment {name} already exist!" : "¡El adjunto {name} ya existe!",
+ "Could not upload attachment(s)" : "No se pudo subir el/los adjunto(s)",
"_{count} attachment_::_{count} attachments_" : ["{count} adjunto","{count} adjuntos","{count} adjuntos"],
"Invitation accepted" : "Invitación aceptada",
"Available" : "Disponible",
@@ -310,7 +312,9 @@ OC.L10N.register(
"Remove group" : "Eliminar grupo",
"Remove attendee" : "Eliminar asistente",
"_%n member_::_%n members_" : ["%n miembro","%n miembros","%n miembros"],
+ "Search for emails, users, contacts or groups" : "Buscar correos electrónicos, usuarios, contactos o grupos",
"No match found" : "No se ha encontrado ningún resultado",
+ "Note that members of circles get invited but are not synced yet." : "Tenga en cuenta que los miembros de los círculos serán invitados pero aún no están sincronizados.",
"(organizer)" : "(organizador)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Para enviar invitaciones y gestionar las respuestas, [linkopen]añade tu dirección email en los ajustes personales[linkclose].",
"Remove color" : "Quitar color",
@@ -381,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Escribe para buscar la zona horaria",
"Global" : "Global",
"Public holiday calendars" : "Calendarios de días feriados públicos",
+ "Public calendars" : "Calendarios públicos",
+ "No valid public calendars configured" : "No hay calendarios públicos válidos configurados",
+ "Speak to the server administrator to resolve this issue." : "Converse con el administrador del servidor para resolver el problema",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Los calendarios de días feriados públicos son provistos por Thunderbird. Los datos del calendario serán descargados desde {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Estos calendarios públicos son sugeridos por el administrador del servidor. Los datos del calendario se descargarán desde el sitio web correspondiente.",
"By {authors}" : "Por {authors}",
"Subscribed" : "Suscrito",
"Subscribe" : "Suscribirse",
"Holidays in {region}" : "Días feriados en {region}",
- "An error occurred, unable to create the public holiday calendar." : "Ocurrió un error, no fue posible crear el calendario de días feriados públicos.",
+ "An error occurred, unable to read public calendars." : "Ocurrió un error, no se pueden leer los calendarios públicos.",
+ "An error occurred, unable to subscribe to calendar." : "Ocurrió un error, no fue posible suscribirse al calendario.",
"Select date" : "Seleccionar fecha",
"Select slot" : "Seleccionar hora",
"No slots available" : "No hay horas disponibles",
diff --git a/l10n/es.json b/l10n/es.json
index 875770138e..138989208c 100644
--- a/l10n/es.json
+++ b/l10n/es.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Nueva suscripción desde el enlace (sólo lectura)",
"Creating subscription …" : "Creando suscripción…",
"Add public holiday calendar" : "Añadir calendario de días feriados públicos",
+ "Add custom public calendar" : "Añadir calendario público personalizado",
"An error occurred, unable to create the calendar." : "Se ha producido un error, no fue posible crear el calendario.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Por favor escriba un enlace válido (comenzando con http://, https://, webcal://, o webcals://)",
"Copy subscription link" : "Copiar enlace de suscripción",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Escoja un archivo para adjuntar",
"Choose a file to share as a link" : "Escoge un archivo para compartir como enlace",
"Attachment {name} already exist!" : "¡El adjunto {name} ya existe!",
+ "Could not upload attachment(s)" : "No se pudo subir el/los adjunto(s)",
"_{count} attachment_::_{count} attachments_" : ["{count} adjunto","{count} adjuntos","{count} adjuntos"],
"Invitation accepted" : "Invitación aceptada",
"Available" : "Disponible",
@@ -308,7 +310,9 @@
"Remove group" : "Eliminar grupo",
"Remove attendee" : "Eliminar asistente",
"_%n member_::_%n members_" : ["%n miembro","%n miembros","%n miembros"],
+ "Search for emails, users, contacts or groups" : "Buscar correos electrónicos, usuarios, contactos o grupos",
"No match found" : "No se ha encontrado ningún resultado",
+ "Note that members of circles get invited but are not synced yet." : "Tenga en cuenta que los miembros de los círculos serán invitados pero aún no están sincronizados.",
"(organizer)" : "(organizador)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Para enviar invitaciones y gestionar las respuestas, [linkopen]añade tu dirección email en los ajustes personales[linkclose].",
"Remove color" : "Quitar color",
@@ -379,12 +383,17 @@
"Type to search time zone" : "Escribe para buscar la zona horaria",
"Global" : "Global",
"Public holiday calendars" : "Calendarios de días feriados públicos",
+ "Public calendars" : "Calendarios públicos",
+ "No valid public calendars configured" : "No hay calendarios públicos válidos configurados",
+ "Speak to the server administrator to resolve this issue." : "Converse con el administrador del servidor para resolver el problema",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Los calendarios de días feriados públicos son provistos por Thunderbird. Los datos del calendario serán descargados desde {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Estos calendarios públicos son sugeridos por el administrador del servidor. Los datos del calendario se descargarán desde el sitio web correspondiente.",
"By {authors}" : "Por {authors}",
"Subscribed" : "Suscrito",
"Subscribe" : "Suscribirse",
"Holidays in {region}" : "Días feriados en {region}",
- "An error occurred, unable to create the public holiday calendar." : "Ocurrió un error, no fue posible crear el calendario de días feriados públicos.",
+ "An error occurred, unable to read public calendars." : "Ocurrió un error, no se pueden leer los calendarios públicos.",
+ "An error occurred, unable to subscribe to calendar." : "Ocurrió un error, no fue posible suscribirse al calendario.",
"Select date" : "Seleccionar fecha",
"Select slot" : "Seleccionar hora",
"No slots available" : "No hay horas disponibles",
diff --git a/l10n/es_EC.js b/l10n/es_EC.js
index ef31eda215..bd1c0dd454 100644
--- a/l10n/es_EC.js
+++ b/l10n/es_EC.js
@@ -380,7 +380,6 @@ OC.L10N.register(
"Subscribed" : "Suscrito",
"Subscribe" : "Suscribir",
"Holidays in {region}" : "Vacaciones en {región}",
- "An error occurred, unable to create the public holiday calendar." : "Ocurrió un error, no se pudo crear el calendario de días festivos públicos.",
"Select date" : "Seleccionar fecha",
"Select slot" : "Seleccionar intervalo",
"No slots available" : "No hay intervalos disponibles",
diff --git a/l10n/es_EC.json b/l10n/es_EC.json
index 9b2bc1889e..7cc39c58b9 100644
--- a/l10n/es_EC.json
+++ b/l10n/es_EC.json
@@ -378,7 +378,6 @@
"Subscribed" : "Suscrito",
"Subscribe" : "Suscribir",
"Holidays in {region}" : "Vacaciones en {región}",
- "An error occurred, unable to create the public holiday calendar." : "Ocurrió un error, no se pudo crear el calendario de días festivos públicos.",
"Select date" : "Seleccionar fecha",
"Select slot" : "Seleccionar intervalo",
"No slots available" : "No hay intervalos disponibles",
diff --git a/l10n/eu.js b/l10n/eu.js
index d9a5816f75..b04a49dc77 100644
--- a/l10n/eu.js
+++ b/l10n/eu.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Harpidetza berria estekatik (irakurtzeko soilik)",
"Creating subscription …" : "Harpidetza sortzen ...",
"Add public holiday calendar" : "Gehitu opor publikoen egutegia",
+ "Add custom public calendar" : "Gehitu egutegi publiko pertsonalizatua",
"An error occurred, unable to create the calendar." : "Errore bat gertatu da, ezin da egutegia sortu.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Sartu baliozko esteka bat (hauetako batekin hasi behar du: http://, https://, webcal:// edo webcals://)",
"Copy subscription link" : "Kopiatu harpidetza esteka",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Aukeratu fitxategia eranskin gisa gehitzeko",
"Choose a file to share as a link" : "Aukeratu fitxategi bat esteka bezala partekatzeko",
"Attachment {name} already exist!" : "Dagoeneko existitzen da {name} eranskina!",
+ "Could not upload attachment(s)" : "Ezinezkoa izan da eranskina(k) igotzea",
"_{count} attachment_::_{count} attachments_" : ["Eranskin {count}","{count} eranskin"],
"Invitation accepted" : "Gonbidapena onartuta",
"Available" : "Erabilgarri",
@@ -309,7 +311,10 @@ OC.L10N.register(
"Non-participant" : "Ez da partaidea",
"Remove group" : "Ezabatu taldea",
"Remove attendee" : "Kendu partaidea",
+ "_%n member_::_%n members_" : ["kide %n","%n kide"],
+ "Search for emails, users, contacts or groups" : "Bilatu email, erabiltzaile, kontaktu edo taldeak",
"No match found" : "Ez da emaitzarik aurkitu",
+ "Note that members of circles get invited but are not synced yet." : "Kontuan izan zirkuluetako kideek gonbidapena jasotzen dutela baina ez direla oraindik sinkronizatzen.",
"(organizer)" : "(antolatzailea)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Gonbidapenak bidali eta erantzunak kudeatzeko, [linkopen] gehitu zure posta helbidea ezarpen pertsonaletan[linkclose].",
"Remove color" : "Kendu kolorea",
@@ -380,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Idatzi ordu-zona bilatzeko",
"Global" : "Orokorra",
"Public holiday calendars" : "Opor publikoen egutegiak",
+ "Public calendars" : "Egutegi publikoak",
+ "No valid public calendars configured" : "Ez dago baliozko egutegi publikorik konfiguratuta",
+ "Speak to the server administrator to resolve this issue." : "Hitz egin zerbitzariko administratzailearekin arazo hau konpontzeko.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Jaiegun egutegi publikoak Thunderbird-ek hornitzen ditu. Egutegiaren datuak {website}(e)tik deskargatuko dira.",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Egutegi publiko hauek zerbitzariko administratzaileak proposatzen ditu. Egutegien datuak dagokien webgunetik deskargatuko dira.",
"By {authors}" : "{authors} egina",
"Subscribed" : "Harpidetua",
"Subscribe" : "Harpidetu",
"Holidays in {region}" : "Oporrak {region}(e)n",
- "An error occurred, unable to create the public holiday calendar." : "Errore bat gertatu da, ezin da jaiegun egutegi publikoa sortu.",
+ "An error occurred, unable to read public calendars." : "Errorea gertatu da, ezin izan dira egutegi publikoak irakurri.",
+ "An error occurred, unable to subscribe to calendar." : "Errore bat gertatu da, ezin izan da egutegira harpidetu.",
"Select date" : "Hautatu data",
"Select slot" : "Hautatu tartea",
"No slots available" : "Ez dago tarterik eskuragarri",
diff --git a/l10n/eu.json b/l10n/eu.json
index 8ae088c916..6732e576eb 100644
--- a/l10n/eu.json
+++ b/l10n/eu.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Harpidetza berria estekatik (irakurtzeko soilik)",
"Creating subscription …" : "Harpidetza sortzen ...",
"Add public holiday calendar" : "Gehitu opor publikoen egutegia",
+ "Add custom public calendar" : "Gehitu egutegi publiko pertsonalizatua",
"An error occurred, unable to create the calendar." : "Errore bat gertatu da, ezin da egutegia sortu.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Sartu baliozko esteka bat (hauetako batekin hasi behar du: http://, https://, webcal:// edo webcals://)",
"Copy subscription link" : "Kopiatu harpidetza esteka",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Aukeratu fitxategia eranskin gisa gehitzeko",
"Choose a file to share as a link" : "Aukeratu fitxategi bat esteka bezala partekatzeko",
"Attachment {name} already exist!" : "Dagoeneko existitzen da {name} eranskina!",
+ "Could not upload attachment(s)" : "Ezinezkoa izan da eranskina(k) igotzea",
"_{count} attachment_::_{count} attachments_" : ["Eranskin {count}","{count} eranskin"],
"Invitation accepted" : "Gonbidapena onartuta",
"Available" : "Erabilgarri",
@@ -307,7 +309,10 @@
"Non-participant" : "Ez da partaidea",
"Remove group" : "Ezabatu taldea",
"Remove attendee" : "Kendu partaidea",
+ "_%n member_::_%n members_" : ["kide %n","%n kide"],
+ "Search for emails, users, contacts or groups" : "Bilatu email, erabiltzaile, kontaktu edo taldeak",
"No match found" : "Ez da emaitzarik aurkitu",
+ "Note that members of circles get invited but are not synced yet." : "Kontuan izan zirkuluetako kideek gonbidapena jasotzen dutela baina ez direla oraindik sinkronizatzen.",
"(organizer)" : "(antolatzailea)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Gonbidapenak bidali eta erantzunak kudeatzeko, [linkopen] gehitu zure posta helbidea ezarpen pertsonaletan[linkclose].",
"Remove color" : "Kendu kolorea",
@@ -378,12 +383,17 @@
"Type to search time zone" : "Idatzi ordu-zona bilatzeko",
"Global" : "Orokorra",
"Public holiday calendars" : "Opor publikoen egutegiak",
+ "Public calendars" : "Egutegi publikoak",
+ "No valid public calendars configured" : "Ez dago baliozko egutegi publikorik konfiguratuta",
+ "Speak to the server administrator to resolve this issue." : "Hitz egin zerbitzariko administratzailearekin arazo hau konpontzeko.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Jaiegun egutegi publikoak Thunderbird-ek hornitzen ditu. Egutegiaren datuak {website}(e)tik deskargatuko dira.",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Egutegi publiko hauek zerbitzariko administratzaileak proposatzen ditu. Egutegien datuak dagokien webgunetik deskargatuko dira.",
"By {authors}" : "{authors} egina",
"Subscribed" : "Harpidetua",
"Subscribe" : "Harpidetu",
"Holidays in {region}" : "Oporrak {region}(e)n",
- "An error occurred, unable to create the public holiday calendar." : "Errore bat gertatu da, ezin da jaiegun egutegi publikoa sortu.",
+ "An error occurred, unable to read public calendars." : "Errorea gertatu da, ezin izan dira egutegi publikoak irakurri.",
+ "An error occurred, unable to subscribe to calendar." : "Errore bat gertatu da, ezin izan da egutegira harpidetu.",
"Select date" : "Hautatu data",
"Select slot" : "Hautatu tartea",
"No slots available" : "Ez dago tarterik eskuragarri",
diff --git a/l10n/fa.js b/l10n/fa.js
index 8164e53150..f3bbdf2085 100644
--- a/l10n/fa.js
+++ b/l10n/fa.js
@@ -201,7 +201,7 @@ OC.L10N.register(
"Public – shown on the profile page" : "Public – shown on the profile page",
"Private – only accessible via secret link" : "Private – only accessible via secret link",
"Appointment name" : "Appointment name",
- "Location" : "محل",
+ "Location" : "مکان",
"Create a Talk room" : "ایجاد اتاق گفتگو",
"Description" : "توضیحات",
"Visibility" : "Visibility",
@@ -383,7 +383,6 @@ OC.L10N.register(
"Subscribed" : "Subscribed",
"Subscribe" : "اشتراک گذاری",
"Holidays in {region}" : "Holidays in {region}",
- "An error occurred, unable to create the public holiday calendar." : "An error occurred, unable to create the public holiday calendar.",
"Select date" : "Select date",
"Select slot" : "Select slot",
"No slots available" : "No slots available",
diff --git a/l10n/fa.json b/l10n/fa.json
index 316ea32500..774a6b20ae 100644
--- a/l10n/fa.json
+++ b/l10n/fa.json
@@ -199,7 +199,7 @@
"Public – shown on the profile page" : "Public – shown on the profile page",
"Private – only accessible via secret link" : "Private – only accessible via secret link",
"Appointment name" : "Appointment name",
- "Location" : "محل",
+ "Location" : "مکان",
"Create a Talk room" : "ایجاد اتاق گفتگو",
"Description" : "توضیحات",
"Visibility" : "Visibility",
@@ -381,7 +381,6 @@
"Subscribed" : "Subscribed",
"Subscribe" : "اشتراک گذاری",
"Holidays in {region}" : "Holidays in {region}",
- "An error occurred, unable to create the public holiday calendar." : "An error occurred, unable to create the public holiday calendar.",
"Select date" : "Select date",
"Select slot" : "Select slot",
"No slots available" : "No slots available",
diff --git a/l10n/fi.js b/l10n/fi.js
index c38aa34cee..12aa2b258c 100644
--- a/l10n/fi.js
+++ b/l10n/fi.js
@@ -380,7 +380,6 @@ OC.L10N.register(
"Subscribed" : "Tilattu",
"Subscribe" : "Tilaa",
"Holidays in {region}" : "Juhlapäivä alueella {region}",
- "An error occurred, unable to create the public holiday calendar." : "Tapahtui virhe, juhlapäiväkalenteria ei voitu luoda.",
"Select date" : "Valitse päivämäärä",
"Select slot" : "Valitse aikarako",
"No slots available" : "Aikarakoja ei ole saatavilla",
diff --git a/l10n/fi.json b/l10n/fi.json
index a3e9d861c5..a2a9e977a8 100644
--- a/l10n/fi.json
+++ b/l10n/fi.json
@@ -378,7 +378,6 @@
"Subscribed" : "Tilattu",
"Subscribe" : "Tilaa",
"Holidays in {region}" : "Juhlapäivä alueella {region}",
- "An error occurred, unable to create the public holiday calendar." : "Tapahtui virhe, juhlapäiväkalenteria ei voitu luoda.",
"Select date" : "Valitse päivämäärä",
"Select slot" : "Valitse aikarako",
"No slots available" : "Aikarakoja ei ole saatavilla",
diff --git a/l10n/fr.js b/l10n/fr.js
index 1c8aca0c66..a03a19788d 100644
--- a/l10n/fr.js
+++ b/l10n/fr.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Nouvel abonnement par lien (lecture seule)",
"Creating subscription …" : "Création de l'abonnement en cours ...",
"Add public holiday calendar" : "Ajouter un calendrier des jours fériés",
+ "Add custom public calendar" : "Ajouter un agenda public personnalisé",
"An error occurred, unable to create the calendar." : "Une erreur est survenue, impossible de créer l'agenda.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Veuillez saisir un lien valide (débutant par http://, https://, webcal:// ou webcals://)",
"Copy subscription link" : "Copier le lien d'inscription",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Choisissez un fichier à ajouter en pièce jointe",
"Choose a file to share as a link" : "Sélectionnez un fichier à partager par lien",
"Attachment {name} already exist!" : "La pièce jointe {name} existe déjà !",
+ "Could not upload attachment(s)" : "Impossible de téléverser la/les pièce(s) jointe(s)",
"_{count} attachment_::_{count} attachments_" : ["{count} pièce jointe","{count} pièces jointes","{count} pièces jointes"],
"Invitation accepted" : "Invitation acceptée",
"Available" : "Disponible",
@@ -369,8 +371,8 @@ OC.L10N.register(
"Public calendar does not exist" : "L'agenda public n'existe pas",
"Maybe the share was deleted or has expired?" : "Le partage a expiré ou a été supprimé ?",
"Please select a time zone:" : "Veuillez sélectionner un fuseau horaire : ",
- "Pick a time" : "Indiquez une heure",
- "Pick a date" : "Indiquez une date",
+ "Pick a time" : "Indiquer une heure",
+ "Pick a date" : "Indiquer une date",
"from {formattedDate}" : "du {formattedDate}",
"to {formattedDate}" : "au {formattedDate}",
"on {formattedDate}" : "le {formattedDate}",
@@ -383,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Commencer la saisie pour rechercher le fuseau horaire",
"Global" : "Général",
"Public holiday calendars" : "Calendriers des jours fériés",
+ "Public calendars" : "Agendas publics",
+ "No valid public calendars configured" : "Aucun agenda public valide configuré",
+ "Speak to the server administrator to resolve this issue." : "Discutez avec l'administrateur du serveur pour résoudre ce problème.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Les calendriers des jours fériés sont fournis par Thunderbird. Les données du calendrier seront téléchargées depuis {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Ces agendas publics sont suggérés par l'administrateur du serveur. Les données des agendas seront téléchargés depuis le site web respectif.",
"By {authors}" : "Par {authors}",
"Subscribed" : "Abonné",
"Subscribe" : "S'abonner",
"Holidays in {region}" : "Jours fériés {region}",
- "An error occurred, unable to create the public holiday calendar." : "Une erreur s'est produite, impossible de créer le calendrier des jours fériés.",
+ "An error occurred, unable to read public calendars." : "Une erreur est survenue, impossible de lire les agendas publics.",
+ "An error occurred, unable to subscribe to calendar." : "Une erreur est survenue, impossible de s'abonner à l'agenda.",
"Select date" : "Sélectionner la date",
"Select slot" : "Sélectionnez le créneau",
"No slots available" : "Aucun créneau disponible",
diff --git a/l10n/fr.json b/l10n/fr.json
index fde651fcd9..92191c9ed1 100644
--- a/l10n/fr.json
+++ b/l10n/fr.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Nouvel abonnement par lien (lecture seule)",
"Creating subscription …" : "Création de l'abonnement en cours ...",
"Add public holiday calendar" : "Ajouter un calendrier des jours fériés",
+ "Add custom public calendar" : "Ajouter un agenda public personnalisé",
"An error occurred, unable to create the calendar." : "Une erreur est survenue, impossible de créer l'agenda.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Veuillez saisir un lien valide (débutant par http://, https://, webcal:// ou webcals://)",
"Copy subscription link" : "Copier le lien d'inscription",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Choisissez un fichier à ajouter en pièce jointe",
"Choose a file to share as a link" : "Sélectionnez un fichier à partager par lien",
"Attachment {name} already exist!" : "La pièce jointe {name} existe déjà !",
+ "Could not upload attachment(s)" : "Impossible de téléverser la/les pièce(s) jointe(s)",
"_{count} attachment_::_{count} attachments_" : ["{count} pièce jointe","{count} pièces jointes","{count} pièces jointes"],
"Invitation accepted" : "Invitation acceptée",
"Available" : "Disponible",
@@ -367,8 +369,8 @@
"Public calendar does not exist" : "L'agenda public n'existe pas",
"Maybe the share was deleted or has expired?" : "Le partage a expiré ou a été supprimé ?",
"Please select a time zone:" : "Veuillez sélectionner un fuseau horaire : ",
- "Pick a time" : "Indiquez une heure",
- "Pick a date" : "Indiquez une date",
+ "Pick a time" : "Indiquer une heure",
+ "Pick a date" : "Indiquer une date",
"from {formattedDate}" : "du {formattedDate}",
"to {formattedDate}" : "au {formattedDate}",
"on {formattedDate}" : "le {formattedDate}",
@@ -381,12 +383,17 @@
"Type to search time zone" : "Commencer la saisie pour rechercher le fuseau horaire",
"Global" : "Général",
"Public holiday calendars" : "Calendriers des jours fériés",
+ "Public calendars" : "Agendas publics",
+ "No valid public calendars configured" : "Aucun agenda public valide configuré",
+ "Speak to the server administrator to resolve this issue." : "Discutez avec l'administrateur du serveur pour résoudre ce problème.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Les calendriers des jours fériés sont fournis par Thunderbird. Les données du calendrier seront téléchargées depuis {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Ces agendas publics sont suggérés par l'administrateur du serveur. Les données des agendas seront téléchargés depuis le site web respectif.",
"By {authors}" : "Par {authors}",
"Subscribed" : "Abonné",
"Subscribe" : "S'abonner",
"Holidays in {region}" : "Jours fériés {region}",
- "An error occurred, unable to create the public holiday calendar." : "Une erreur s'est produite, impossible de créer le calendrier des jours fériés.",
+ "An error occurred, unable to read public calendars." : "Une erreur est survenue, impossible de lire les agendas publics.",
+ "An error occurred, unable to subscribe to calendar." : "Une erreur est survenue, impossible de s'abonner à l'agenda.",
"Select date" : "Sélectionner la date",
"Select slot" : "Sélectionnez le créneau",
"No slots available" : "Aucun créneau disponible",
diff --git a/l10n/gl.js b/l10n/gl.js
index 2249ed5492..c3d25f6cec 100644
--- a/l10n/gl.js
+++ b/l10n/gl.js
@@ -388,7 +388,6 @@ OC.L10N.register(
"Subscribed" : "Subscrito",
"Subscribe" : "Subscribirse",
"Holidays in {region}" : "Festivos en {region}",
- "An error occurred, unable to create the public holiday calendar." : "Produciuse un erro, non é posíbel crear o calendario de festivos.",
"Select date" : "Seleccionar a data",
"Select slot" : "Seleccionar franxa horaria",
"No slots available" : "Non hai franxas horarias dispoñíbeis",
diff --git a/l10n/gl.json b/l10n/gl.json
index 39918c15f9..b512b181d0 100644
--- a/l10n/gl.json
+++ b/l10n/gl.json
@@ -386,7 +386,6 @@
"Subscribed" : "Subscrito",
"Subscribe" : "Subscribirse",
"Holidays in {region}" : "Festivos en {region}",
- "An error occurred, unable to create the public holiday calendar." : "Produciuse un erro, non é posíbel crear o calendario de festivos.",
"Select date" : "Seleccionar a data",
"Select slot" : "Seleccionar franxa horaria",
"No slots available" : "Non hai franxas horarias dispoñíbeis",
diff --git a/l10n/hu.js b/l10n/hu.js
index e2b05aeef3..2ea28250ba 100644
--- a/l10n/hu.js
+++ b/l10n/hu.js
@@ -384,7 +384,6 @@ OC.L10N.register(
"Subscribed" : "Feliratkozott",
"Subscribe" : "Feliratkozás",
"Holidays in {region}" : "Ünnepnapok itt: {region}",
- "An error occurred, unable to create the public holiday calendar." : "Hiba történt, nem hozható létre az ünnepnapok naptára.",
"Select date" : "Válasszon dátumot",
"Select slot" : "Válasszon idősávot",
"No slots available" : "Nincs elérhető idősáv",
diff --git a/l10n/hu.json b/l10n/hu.json
index 6d3c750039..b934a07a5b 100644
--- a/l10n/hu.json
+++ b/l10n/hu.json
@@ -382,7 +382,6 @@
"Subscribed" : "Feliratkozott",
"Subscribe" : "Feliratkozás",
"Holidays in {region}" : "Ünnepnapok itt: {region}",
- "An error occurred, unable to create the public holiday calendar." : "Hiba történt, nem hozható létre az ünnepnapok naptára.",
"Select date" : "Válasszon dátumot",
"Select slot" : "Válasszon idősávot",
"No slots available" : "Nincs elérhető idősáv",
diff --git a/l10n/id.js b/l10n/id.js
index 373b9a9df8..cfb9fbeeed 100644
--- a/l10n/id.js
+++ b/l10n/id.js
@@ -21,6 +21,8 @@ OC.L10N.register(
"Day" : "Hari",
"Week" : "Minggu",
"Month" : "Bulan",
+ "Year" : "Tahun",
+ "List" : "daftar",
"Preview" : "Pratinjau",
"Copy link" : "Salin tautan",
"Edit" : "Sunting",
@@ -134,6 +136,7 @@ OC.L10N.register(
"_week_::_weeks_" : ["minggu"],
"Delete file" : "Hapus berkas",
"Choose a file to add as attachment" : "Pilih berkas untuk ditambahkan sebagai lampiran",
+ "Not available" : "Tidak tersedia",
"Availability of attendees, resources and rooms" : "Ketersediaan peserta, sumber daya, dan ruangan",
"Free" : "Luang",
"Busy (tentative)" : "Sibuk (tentatif)",
@@ -255,6 +258,7 @@ OC.L10N.register(
"Chat room for event" : "Ruang obrolan untuk acara",
"An error occurred, unable to delete the calendar." : "Terjadi galat, tidak dapat menghapus kalender.",
"Talk" : "Talk",
+ "Movie" : "Film",
"Review" : "Tinjauan",
"Mail" : "Surel",
"Birthday" : "Tanggal lahir"
diff --git a/l10n/id.json b/l10n/id.json
index b5f93e7ff9..4929cf1ff3 100644
--- a/l10n/id.json
+++ b/l10n/id.json
@@ -19,6 +19,8 @@
"Day" : "Hari",
"Week" : "Minggu",
"Month" : "Bulan",
+ "Year" : "Tahun",
+ "List" : "daftar",
"Preview" : "Pratinjau",
"Copy link" : "Salin tautan",
"Edit" : "Sunting",
@@ -132,6 +134,7 @@
"_week_::_weeks_" : ["minggu"],
"Delete file" : "Hapus berkas",
"Choose a file to add as attachment" : "Pilih berkas untuk ditambahkan sebagai lampiran",
+ "Not available" : "Tidak tersedia",
"Availability of attendees, resources and rooms" : "Ketersediaan peserta, sumber daya, dan ruangan",
"Free" : "Luang",
"Busy (tentative)" : "Sibuk (tentatif)",
@@ -253,6 +256,7 @@
"Chat room for event" : "Ruang obrolan untuk acara",
"An error occurred, unable to delete the calendar." : "Terjadi galat, tidak dapat menghapus kalender.",
"Talk" : "Talk",
+ "Movie" : "Film",
"Review" : "Tinjauan",
"Mail" : "Surel",
"Birthday" : "Tanggal lahir"
diff --git a/l10n/is.js b/l10n/is.js
index cf6423761d..82ab67c5dd 100644
--- a/l10n/is.js
+++ b/l10n/is.js
@@ -386,7 +386,6 @@ OC.L10N.register(
"Subscribed" : "Í áskrift",
"Subscribe" : "Gerast áskrifandi",
"Holidays in {region}" : "Frídagar á {region}",
- "An error occurred, unable to create the public holiday calendar." : "Villa kom upp, gat ekki búið til opinbera frídagatalið.",
"Select date" : "Veldu dagsetningu",
"Select slot" : "Veldu tímahólf",
"No slots available" : "Engin tímahólf tiltæk",
diff --git a/l10n/is.json b/l10n/is.json
index f8fe51afa3..ee08fa37ce 100644
--- a/l10n/is.json
+++ b/l10n/is.json
@@ -384,7 +384,6 @@
"Subscribed" : "Í áskrift",
"Subscribe" : "Gerast áskrifandi",
"Holidays in {region}" : "Frídagar á {region}",
- "An error occurred, unable to create the public holiday calendar." : "Villa kom upp, gat ekki búið til opinbera frídagatalið.",
"Select date" : "Veldu dagsetningu",
"Select slot" : "Veldu tímahólf",
"No slots available" : "Engin tímahólf tiltæk",
diff --git a/l10n/ja.js b/l10n/ja.js
index 5714f66096..0fd78f0dda 100644
--- a/l10n/ja.js
+++ b/l10n/ja.js
@@ -115,6 +115,7 @@ OC.L10N.register(
"Unpublishing calendar failed" : "カレンダーの公開解除に失敗しました",
"can edit" : "編集を許可",
"Unshare with {displayName}" : "{displayName}との共有を解除",
+ "An error occurred while unsharing the calendar." : "カレンダーの共有解除中にエラーが発生しました",
"An error occurred, unable to change the permission of the share." : "エラーが発生したため、共有の権限を変更できませんでした。",
"Share with users or groups" : "ユーザーまたはグループと共有する",
"No users or groups" : "ユーザーまたはグループはありません",
@@ -326,7 +327,7 @@ OC.L10N.register(
"{formattedDate} at {formattedTime}" : "{formattedDate} {formattedTime}",
"Please enter a valid date" : "有効な日付を入力してください",
"Please enter a valid date and time" : "有効な日付と時刻を入力してください",
- "Type to search time zone" : "入力して時間帯を検索",
+ "Type to search time zone" : "入力してタイムゾーンを検索",
"Global" : "グローバル",
"Subscribed" : "購読",
"Subscribe" : "購読",
diff --git a/l10n/ja.json b/l10n/ja.json
index a03c457788..d4c07f2292 100644
--- a/l10n/ja.json
+++ b/l10n/ja.json
@@ -113,6 +113,7 @@
"Unpublishing calendar failed" : "カレンダーの公開解除に失敗しました",
"can edit" : "編集を許可",
"Unshare with {displayName}" : "{displayName}との共有を解除",
+ "An error occurred while unsharing the calendar." : "カレンダーの共有解除中にエラーが発生しました",
"An error occurred, unable to change the permission of the share." : "エラーが発生したため、共有の権限を変更できませんでした。",
"Share with users or groups" : "ユーザーまたはグループと共有する",
"No users or groups" : "ユーザーまたはグループはありません",
@@ -324,7 +325,7 @@
"{formattedDate} at {formattedTime}" : "{formattedDate} {formattedTime}",
"Please enter a valid date" : "有効な日付を入力してください",
"Please enter a valid date and time" : "有効な日付と時刻を入力してください",
- "Type to search time zone" : "入力して時間帯を検索",
+ "Type to search time zone" : "入力してタイムゾーンを検索",
"Global" : "グローバル",
"Subscribed" : "購読",
"Subscribe" : "購読",
diff --git a/l10n/ka.js b/l10n/ka.js
new file mode 100644
index 0000000000..292b58417b
--- /dev/null
+++ b/l10n/ka.js
@@ -0,0 +1,652 @@
+OC.L10N.register(
+ "calendar",
+ {
+ "Provided email-address is too long" : "Provided email-address is too long",
+ "User-Session unexpectedly expired" : "User-Session unexpectedly expired",
+ "Provided email-address is not valid" : "Provided email-address is not valid",
+ "%s has published the calendar »%s«" : "%s has published the calendar »%s«",
+ "Unexpected error sending email. Please contact your administrator." : "Unexpected error sending email. Please contact your administrator.",
+ "Successfully sent email to %1$s" : "Successfully sent email to %1$s",
+ "Hello," : "Hello,",
+ "We wanted to inform you that %s has published the calendar »%s«." : "We wanted to inform you that %s has published the calendar »%s«.",
+ "Open »%s«" : "Open »%s«",
+ "Cheers!" : "Cheers!",
+ "Upcoming events" : "Upcoming events",
+ "More events" : "More events",
+ "No more events today" : "No more events today",
+ "No upcoming events" : "No upcoming events",
+ "%1$s with %2$s" : "%1$s with %2$s",
+ "Calendar" : "Calendar",
+ "New booking {booking}" : "New booking {booking}",
+ "{display_name} ({email}) booked the appointment \"{config_display_name}\" on {date_time}." : "{display_name} ({email}) booked the appointment \"{config_display_name}\" on {date_time}.",
+ "Appointments" : "Appointments",
+ "Schedule appointment \"%s\"" : "Schedule appointment \"%s\"",
+ "Schedule an appointment" : "Schedule an appointment",
+ "%1$s - %2$s" : "%1$s - %2$s",
+ "Prepare for %s" : "Prepare for %s",
+ "Follow up for %s" : "Follow up for %s",
+ "Your appointment \"%s\" with %s needs confirmation" : "Your appointment \"%s\" with %s needs confirmation",
+ "Dear %s, please confirm your booking" : "Dear %s, please confirm your booking",
+ "Confirm" : "Confirm",
+ "This confirmation link expires in %s hours." : "This confirmation link expires in %s hours.",
+ "If you wish to cancel the appointment after all, please contact your organizer by replying to this email or by visiting their profile page." : "If you wish to cancel the appointment after all, please contact your organizer by replying to this email or by visiting their profile page.",
+ "Your appointment \"%s\" with %s has been accepted" : "Your appointment \"%s\" with %s has been accepted",
+ "Dear %s, your booking has been accepted." : "Dear %s, your booking has been accepted.",
+ "Appointment for:" : "Appointment for:",
+ "Date:" : "Date:",
+ "You will receive a link with the confirmation email" : "You will receive a link with the confirmation email",
+ "Where:" : "Where:",
+ "Comment:" : "Comment:",
+ "You have a new appointment booking \"%s\" from %s" : "You have a new appointment booking \"%s\" from %s",
+ "Dear %s, %s (%s) booked an appointment with you." : "Dear %s, %s (%s) booked an appointment with you.",
+ "A Calendar app for Nextcloud" : "A Calendar app for Nextcloud",
+ "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries." : "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
+ "Previous day" : "Previous day",
+ "Previous week" : "Previous week",
+ "Previous year" : "Previous year",
+ "Previous month" : "Previous month",
+ "Next day" : "Next day",
+ "Next week" : "Next week",
+ "Next year" : "Next year",
+ "Next month" : "Next month",
+ "Event" : "Event",
+ "Create new event" : "Create new event",
+ "Today" : "Today",
+ "Day" : "Day",
+ "Week" : "Week",
+ "Month" : "Month",
+ "Year" : "Year",
+ "List" : "List",
+ "Preview" : "Preview",
+ "Copy link" : "Copy link",
+ "Edit" : "Edit",
+ "Delete" : "Delete",
+ "Appointment link was copied to clipboard" : "Appointment link was copied to clipboard",
+ "Appointment link could not be copied to clipboard" : "Appointment link could not be copied to clipboard",
+ "Add new" : "Add new",
+ "Untitled calendar" : "Untitled calendar",
+ "Shared with you by" : "Shared with you by",
+ "Edit and share calendar" : "Edit and share calendar",
+ "Edit calendar" : "Edit calendar",
+ "Disable calendar \"{calendar}\"" : "Disable calendar \"{calendar}\"",
+ "Disable untitled calendar" : "Disable untitled calendar",
+ "Enable calendar \"{calendar}\"" : "Enable calendar \"{calendar}\"",
+ "Enable untitled calendar" : "Enable untitled calendar",
+ "An error occurred, unable to change visibility of the calendar." : "An error occurred, unable to change visibility of the calendar.",
+ "_Unsharing the calendar in {countdown} second_::_Unsharing the calendar in {countdown} seconds_" : ["Unsharing the calendar in {countdown} second","Unsharing the calendar in {countdown} seconds"],
+ "_Deleting the calendar in {countdown} second_::_Deleting the calendar in {countdown} seconds_" : ["Deleting the calendar in {countdown} second","Deleting the calendar in {countdown} seconds"],
+ "New calendar" : "New calendar",
+ "Name for new calendar" : "Name for new calendar",
+ "Creating calendar …" : "Creating calendar …",
+ "New calendar with task list" : "New calendar with task list",
+ "New subscription from link (read-only)" : "New subscription from link (read-only)",
+ "Creating subscription …" : "Creating subscription …",
+ "Add public holiday calendar" : "Add public holiday calendar",
+ "Add custom public calendar" : "Add custom public calendar",
+ "An error occurred, unable to create the calendar." : "An error occurred, unable to create the calendar.",
+ "Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Please enter a valid link (starting with http://, https://, webcal://, or webcals://)",
+ "Copy subscription link" : "Copy subscription link",
+ "Copying link …" : "Copying link …",
+ "Copied link" : "Copied link",
+ "Could not copy link" : "Could not copy link",
+ "Export" : "Export",
+ "Calendar link copied to clipboard." : "Calendar link copied to clipboard.",
+ "Calendar link could not be copied to clipboard." : "Calendar link could not be copied to clipboard.",
+ "Trash bin" : "Trash bin",
+ "Loading deleted items." : "Loading deleted items.",
+ "You do not have any deleted items." : "You do not have any deleted items.",
+ "Name" : "Name",
+ "Deleted" : "Deleted",
+ "Restore" : "Restore",
+ "Delete permanently" : "Delete permanently",
+ "Empty trash bin" : "Empty trash bin",
+ "Untitled item" : "Untitled item",
+ "Unknown calendar" : "Unknown calendar",
+ "Could not load deleted calendars and objects" : "Could not load deleted calendars and objects",
+ "Could not restore calendar or event" : "Could not restore calendar or event",
+ "Do you really want to empty the trash bin?" : "Do you really want to empty the trash bin?",
+ "_Items in the trash bin are deleted after {numDays} day_::_Items in the trash bin are deleted after {numDays} days_" : ["Items in the trash bin are deleted after {numDays} day","Items in the trash bin are deleted after {numDays} days"],
+ "Could not update calendar order." : "Could not update calendar order.",
+ "Internal link" : "Internal link",
+ "A private link that can be used with external clients" : "A private link that can be used with external clients",
+ "Copy internal link" : "Copy internal link",
+ "Share link" : "Share link",
+ "Copy public link" : "Copy public link",
+ "Send link to calendar via email" : "Send link to calendar via email",
+ "Enter one address" : "Enter one address",
+ "Sending email …" : "Sending email …",
+ "Copy embedding code" : "Copy embedding code",
+ "Copying code …" : "Copying code …",
+ "Copied code" : "Copied code",
+ "Could not copy code" : "Could not copy code",
+ "Delete share link" : "Delete share link",
+ "Deleting share link …" : "Deleting share link …",
+ "An error occurred, unable to publish calendar." : "An error occurred, unable to publish calendar.",
+ "An error occurred, unable to send email." : "An error occurred, unable to send email.",
+ "Embed code copied to clipboard." : "Embed code copied to clipboard.",
+ "Embed code could not be copied to clipboard." : "Embed code could not be copied to clipboard.",
+ "Unpublishing calendar failed" : "Unpublishing calendar failed",
+ "can edit" : "can edit",
+ "Unshare with {displayName}" : "Unshare with {displayName}",
+ "An error occurred while unsharing the calendar." : "An error occurred while unsharing the calendar.",
+ "An error occurred, unable to change the permission of the share." : "An error occurred, unable to change the permission of the share.",
+ "Share with users or groups" : "Share with users or groups",
+ "No users or groups" : "No users or groups",
+ "Calendar name …" : "Calendar name …",
+ "Share calendar" : "Share calendar",
+ "Unshare from me" : "Unshare from me",
+ "Save" : "Save",
+ "Failed to save calendar name and color" : "Failed to save calendar name and color",
+ "Import calendars" : "Import calendars",
+ "Please select a calendar to import into …" : "Please select a calendar to import into …",
+ "Filename" : "Filename",
+ "Calendar to import into" : "Calendar to import into",
+ "Cancel" : "Cancel",
+ "_Import calendar_::_Import calendars_" : ["Import calendar","Import calendars"],
+ "Default attachments location" : "Default attachments location",
+ "Select the default location for attachments" : "Select the default location for attachments",
+ "Invalid location selected" : "Invalid location selected",
+ "Attachments folder successfully saved." : "Attachments folder successfully saved.",
+ "Error on saving attachments folder." : "Error on saving attachments folder.",
+ "{filename} could not be parsed" : "{filename} could not be parsed",
+ "No valid files found, aborting import" : "No valid files found, aborting import",
+ "Import partially failed. Imported {accepted} out of {total}." : "Import partially failed. Imported {accepted} out of {total}.",
+ "_Successfully imported %n event_::_Successfully imported %n events_" : ["Successfully imported %n event","Successfully imported %n events"],
+ "Automatic" : "Automatic",
+ "Automatic ({detected})" : "Automatic ({detected})",
+ "New setting was not saved successfully." : "New setting was not saved successfully.",
+ "Shortcut overview" : "Shortcut overview",
+ "or" : "or",
+ "Navigation" : "Navigation",
+ "Previous period" : "Previous period",
+ "Next period" : "Next period",
+ "Views" : "Views",
+ "Day view" : "Day view",
+ "Week view" : "Week view",
+ "Month view" : "Month view",
+ "Year view" : "Year view",
+ "List view" : "List view",
+ "Actions" : "Actions",
+ "Create event" : "Create event",
+ "Show shortcuts" : "Show shortcuts",
+ "Editor" : "Editor",
+ "Close editor" : "Close editor",
+ "Save edited event" : "Save edited event",
+ "Delete edited event" : "Delete edited event",
+ "Duplicate event" : "Duplicate event",
+ "Enable birthday calendar" : "Enable birthday calendar",
+ "Show tasks in calendar" : "Show tasks in calendar",
+ "Enable simplified editor" : "Enable simplified editor",
+ "Limit the number of events displayed in the monthly view" : "Limit the number of events displayed in the monthly view",
+ "Show weekends" : "Show weekends",
+ "Show week numbers" : "Show week numbers",
+ "Time increments" : "Time increments",
+ "Default reminder" : "Default reminder",
+ "Copy primary CalDAV address" : "Copy primary CalDAV address",
+ "Copy iOS/macOS CalDAV address" : "Copy iOS/macOS CalDAV address",
+ "Personal availability settings" : "Personal availability settings",
+ "Show keyboard shortcuts" : "Show keyboard shortcuts",
+ "Calendar settings" : "Calendar settings",
+ "No reminder" : "No reminder",
+ "CalDAV link copied to clipboard." : "CalDAV link copied to clipboard.",
+ "CalDAV link could not be copied to clipboard." : "CalDAV link could not be copied to clipboard.",
+ "Appointment was created successfully" : "Appointment was created successfully",
+ "Appointment was updated successfully" : "Appointment was updated successfully",
+ "_{duration} minute_::_{duration} minutes_" : ["{duration} minute","{duration} minutes"],
+ "0 minutes" : "0 minutes",
+ "_{duration} hour_::_{duration} hours_" : ["{duration} hour","{duration} hours"],
+ "_{duration} day_::_{duration} days_" : ["{duration} day","{duration} days"],
+ "_{duration} week_::_{duration} weeks_" : ["{duration} week","{duration} weeks"],
+ "_{duration} month_::_{duration} months_" : ["{duration} month","{duration} months"],
+ "_{duration} year_::_{duration} years_" : ["{duration} year","{duration} years"],
+ "To configure appointments, add your email address in personal settings." : "To configure appointments, add your email address in personal settings.",
+ "Public – shown on the profile page" : "Public – shown on the profile page",
+ "Private – only accessible via secret link" : "Private – only accessible via secret link",
+ "Appointment name" : "Appointment name",
+ "Location" : "Location",
+ "Create a Talk room" : "Create a Talk room",
+ "A unique link will be generated for every booked appointment and sent via the confirmation email" : "A unique link will be generated for every booked appointment and sent via the confirmation email",
+ "Description" : "Description",
+ "Visibility" : "Visibility",
+ "Duration" : "Duration",
+ "Increments" : "Increments",
+ "Additional calendars to check for conflicts" : "Additional calendars to check for conflicts",
+ "Pick time ranges where appointments are allowed" : "Pick time ranges where appointments are allowed",
+ "to" : "to",
+ "Delete slot" : "Delete slot",
+ "No times set" : "No times set",
+ "Add" : "Add",
+ "Monday" : "Monday",
+ "Tuesday" : "Tuesday",
+ "Wednesday" : "Wednesday",
+ "Thursday" : "Thursday",
+ "Friday" : "Friday",
+ "Saturday" : "Saturday",
+ "Sunday" : "Sunday",
+ "Add time before and after the event" : "Add time before and after the event",
+ "Before the event" : "Before the event",
+ "After the event" : "After the event",
+ "Planning restrictions" : "Planning restrictions",
+ "Minimum time before next available slot" : "Minimum time before next available slot",
+ "Max slots per day" : "Max slots per day",
+ "Limit how far in the future appointments can be booked" : "Limit how far in the future appointments can be booked",
+ "Create appointment" : "Create appointment",
+ "Edit appointment" : "Edit appointment",
+ "Update" : "Update",
+ "Please confirm your reservation" : "Please confirm your reservation",
+ "We sent you an email with details. Please confirm your appointment using the link in the email. You can close this page now." : "We sent you an email with details. Please confirm your appointment using the link in the email. You can close this page now.",
+ "Your name" : "Your name",
+ "Your email address" : "Your email address",
+ "Please share anything that will help prepare for our meeting" : "Please share anything that will help prepare for our meeting",
+ "Could not book the appointment. Please try again later or contact the organizer." : "Could not book the appointment. Please try again later or contact the organizer.",
+ "Book the appointment" : "Book the appointment",
+ "Reminder" : "Reminder",
+ "before at" : "before at",
+ "Notification" : "Notification",
+ "Email" : "Email",
+ "Audio notification" : "Audio notification",
+ "Other notification" : "Other notification",
+ "Relative to event" : "Relative to event",
+ "On date" : "On date",
+ "Edit time" : "Edit time",
+ "Save time" : "Save time",
+ "Remove reminder" : "Remove reminder",
+ "on" : "on",
+ "at" : "at",
+ "+ Add reminder" : "+ Add reminder",
+ "Add reminder" : "Add reminder",
+ "_second_::_seconds_" : ["second","seconds"],
+ "_minute_::_minutes_" : ["minute","minutes"],
+ "_hour_::_hours_" : ["hour","hours"],
+ "_day_::_days_" : ["day","days"],
+ "_week_::_weeks_" : ["week","weeks"],
+ "No attachments" : "No attachments",
+ "Add from Files" : "Add from Files",
+ "Upload from device" : "Upload from device",
+ "Delete file" : "Delete file",
+ "Choose a file to add as attachment" : "Choose a file to add as attachment",
+ "Choose a file to share as a link" : "Choose a file to share as a link",
+ "Attachment {name} already exist!" : "Attachment {name} already exist!",
+ "Could not upload attachment(s)" : "Could not upload attachment(s)",
+ "_{count} attachment_::_{count} attachments_" : ["{count} attachment","{count} attachments"],
+ "Invitation accepted" : "Invitation accepted",
+ "Available" : "Available",
+ "Suggested" : "Suggested",
+ "Participation marked as tentative" : "Participation marked as tentative",
+ "Accepted {organizerName}'s invitation" : "Accepted {organizerName}'s invitation",
+ "Not available" : "Not available",
+ "Invitation declined" : "Invitation declined",
+ "Declined {organizerName}'s invitation" : "Declined {organizerName}'s invitation",
+ "Invitation is delegated" : "Invitation is delegated",
+ "Checking availability" : "Checking availability",
+ "Invitation sent" : "Invitation sent",
+ "Has not responded to {organizerName}'s invitation yet" : "Has not responded to {organizerName}'s invitation yet",
+ "Availability of attendees, resources and rooms" : "Availability of attendees, resources and rooms",
+ "{organizer} (organizer)" : "{organizer} (organizer)",
+ "Free" : "Free",
+ "Busy (tentative)" : "Busy (tentative)",
+ "Busy" : "Busy",
+ "Out of office" : "Out of office",
+ "Unknown" : "Unknown",
+ "Accept" : "Accept",
+ "Decline" : "Decline",
+ "Tentative" : "Tentative",
+ "The invitation has been accepted successfully." : "The invitation has been accepted successfully.",
+ "Failed to accept the invitation." : "Failed to accept the invitation.",
+ "The invitation has been declined successfully." : "The invitation has been declined successfully.",
+ "Failed to decline the invitation." : "Failed to decline the invitation.",
+ "Your participation has been marked as tentative." : "Your participation has been marked as tentative.",
+ "Failed to set the participation status to tentative." : "Failed to set the participation status to tentative.",
+ "Create Talk room for this event" : "Create Talk room for this event",
+ "Show busy times" : "Show busy times",
+ "No attendees yet" : "No attendees yet",
+ "You do not own this calendar, so you cannot add attendees to this event" : "You do not own this calendar, so you cannot add attendees to this event",
+ "Successfully appended link to talk room to location." : "Successfully appended link to talk room to location.",
+ "Successfully appended link to talk room to description." : "Successfully appended link to talk room to description.",
+ "Error creating Talk room" : "Error creating Talk room",
+ "Send email" : "Send email",
+ "Chairperson" : "Chairperson",
+ "Required participant" : "Required participant",
+ "Optional participant" : "Optional participant",
+ "Non-participant" : "Non-participant",
+ "Remove group" : "Remove group",
+ "Remove attendee" : "Remove attendee",
+ "_%n member_::_%n members_" : ["%n member","%n members"],
+ "Search for emails, users, contacts or groups" : "Search for emails, users, contacts or groups",
+ "No match found" : "No match found",
+ "Note that members of circles get invited but are not synced yet." : "Note that members of circles get invited but are not synced yet.",
+ "(organizer)" : "(organizer)",
+ "To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose].",
+ "Remove color" : "Remove color",
+ "Event title" : "Event title",
+ "All day" : "All day",
+ "Cannot modify all-day setting for events that are part of a recurrence-set." : "Cannot modify all-day setting for events that are part of a recurrence-set.",
+ "from {startDate}" : "from {startDate}",
+ "from {startDate} at {startTime}" : "from {startDate} at {startTime}",
+ "to {endDate}" : "to {endDate}",
+ "to {endDate} at {endTime}" : "to {endDate} at {endTime}",
+ "Repeat" : "Repeat",
+ "End repeat" : "End repeat",
+ "Select to end repeat" : "Select to end repeat",
+ "never" : "never",
+ "on date" : "on date",
+ "after" : "after",
+ "_time_::_times_" : ["time","times"],
+ "This event is the recurrence-exception of a recurrence-set. You cannot add a recurrence-rule to it." : "This event is the recurrence-exception of a recurrence-set. You cannot add a recurrence-rule to it.",
+ "first" : "first",
+ "third" : "third",
+ "fourth" : "fourth",
+ "fifth" : "fifth",
+ "second to last" : "second to last",
+ "last" : "last",
+ "Changes to the recurrence-rule will only apply to this and all future occurrences." : "Changes to the recurrence-rule will only apply to this and all future occurrences.",
+ "Repeat every" : "Repeat every",
+ "By day of the month" : "By day of the month",
+ "On the" : "On the",
+ "_month_::_months_" : ["month","months"],
+ "_year_::_years_" : ["year","years"],
+ "weekday" : "weekday",
+ "weekend day" : "weekend day",
+ "No recurrence" : "No recurrence",
+ "The recurrence definition of this event is not fully supported by Nextcloud. If you edit the recurrence-options, certain recurrences may be lost." : "The recurrence definition of this event is not fully supported by Nextcloud. If you edit the recurrence-options, certain recurrences may be lost.",
+ "Suggestions" : "Suggestions",
+ "No rooms or resources yet" : "No rooms or resources yet",
+ "Add resource" : "Add resource",
+ "Has a projector" : "Has a projector",
+ "Has a whiteboard" : "Has a whiteboard",
+ "Wheelchair accessible" : "Wheelchair accessible",
+ "Remove resource" : "Remove resource",
+ "_{seatingCapacity} seat_::_{seatingCapacity} seats_" : ["{seatingCapacity} seat","{seatingCapacity} seats"],
+ "Projector" : "Projector",
+ "Whiteboard" : "Whiteboard",
+ "Search for resources or rooms" : "Search for resources or rooms",
+ "available" : "available",
+ "unavailable" : "unavailable",
+ "Room type" : "Room type",
+ "Any" : "Any",
+ "Minimum seating capacity" : "Minimum seating capacity",
+ "More" : "More",
+ "Update this occurrence" : "Update this occurrence",
+ "Update this and all future" : "Update this and all future",
+ "Public calendar does not exist" : "Public calendar does not exist",
+ "Maybe the share was deleted or has expired?" : "Maybe the share was deleted or has expired?",
+ "Please select a time zone:" : "Please select a time zone:",
+ "Pick a time" : "Pick a time",
+ "Pick a date" : "Pick a date",
+ "from {formattedDate}" : "from {formattedDate}",
+ "to {formattedDate}" : "to {formattedDate}",
+ "on {formattedDate}" : "on {formattedDate}",
+ "from {formattedDate} at {formattedTime}" : "from {formattedDate} at {formattedTime}",
+ "to {formattedDate} at {formattedTime}" : "to {formattedDate} at {formattedTime}",
+ "on {formattedDate} at {formattedTime}" : "on {formattedDate} at {formattedTime}",
+ "{formattedDate} at {formattedTime}" : "{formattedDate} at {formattedTime}",
+ "Please enter a valid date" : "Please enter a valid date",
+ "Please enter a valid date and time" : "Please enter a valid date and time",
+ "Type to search time zone" : "Type to search time zone",
+ "Global" : "Global",
+ "Public holiday calendars" : "Public holiday calendars",
+ "Public calendars" : "Public calendars",
+ "No valid public calendars configured" : "No valid public calendars configured",
+ "Speak to the server administrator to resolve this issue." : "Speak to the server administrator to resolve this issue.",
+ "Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website.",
+ "By {authors}" : "By {authors}",
+ "Subscribed" : "Subscribed",
+ "Subscribe" : "Subscribe",
+ "Holidays in {region}" : "Holidays in {region}",
+ "An error occurred, unable to read public calendars." : "An error occurred, unable to read public calendars.",
+ "An error occurred, unable to subscribe to calendar." : "An error occurred, unable to subscribe to calendar.",
+ "Select date" : "Select date",
+ "Select slot" : "Select slot",
+ "No slots available" : "No slots available",
+ "Could not fetch slots" : "Could not fetch slots",
+ "The slot for your appointment has been confirmed" : "The slot for your appointment has been confirmed",
+ "Appointment Details:" : "Appointment Details:",
+ "Time:" : "Time:",
+ "Booked for:" : "Booked for:",
+ "Thank you. Your booking from {startDate} to {endDate} has been confirmed." : "Thank you. Your booking from {startDate} to {endDate} has been confirmed.",
+ "Book another appointment:" : "Book another appointment:",
+ "See all available slots" : "See all available slots",
+ "The slot for your appointment from {startDate} to {endDate} is not available any more." : "The slot for your appointment from {startDate} to {endDate} is not available any more.",
+ "Please book a different slot:" : "Please book a different slot:",
+ "Book an appointment with {name}" : "Book an appointment with {name}",
+ "No public appointments found for {name}" : "No public appointments found for {name}",
+ "Personal" : "Personal",
+ "The automatic time zone detection determined your time zone to be UTC.\nThis is most likely the result of security measures of your web browser.\nPlease set your time zone manually in the calendar settings." : "The automatic time zone detection determined your time zone to be UTC.\nThis is most likely the result of security measures of your web browser.\nPlease set your time zone manually in the calendar settings.",
+ "Your configured time zone ({timezoneId}) was not found. Falling back to UTC.\nPlease change your time zone in the settings and report this issue." : "Your configured time zone ({timezoneId}) was not found. Falling back to UTC.\nPlease change your time zone in the settings and report this issue.",
+ "Create a new event" : "Create a new event",
+ "[Today]" : "[Today]",
+ "[Tomorrow]" : "[Tomorrow]",
+ "[Yesterday]" : "[Yesterday]",
+ "[Last] dddd" : "[Last] dddd",
+ "Event does not exist" : "Event does not exist",
+ "Duplicate" : "Duplicate",
+ "Delete this occurrence" : "Delete this occurrence",
+ "Delete this and all future" : "Delete this and all future",
+ "Details" : "Details",
+ "Managing shared access" : "Managing shared access",
+ "Deny access" : "Deny access",
+ "Invite" : "Invite",
+ "Attendees" : "Attendees",
+ "Resources" : "Resources",
+ "_User requires access to your file_::_Users require access to your file_" : ["User requires access to your file","Users require access to your file"],
+ "_Attachment requires shared access_::_Attachments requiring shared access_" : ["Attachment requires shared access","Attachments requiring shared access"],
+ "Close" : "Close",
+ "Show more details" : "Show more details",
+ "Subscribe to {name}" : "Subscribe to {name}",
+ "Export {name}" : "Export {name}",
+ "Anniversary" : "Anniversary",
+ "Appointment" : "Appointment",
+ "Business" : "Business",
+ "Education" : "Education",
+ "Holiday" : "Holiday",
+ "Meeting" : "Meeting",
+ "Miscellaneous" : "Miscellaneous",
+ "Non-working hours" : "Non-working hours",
+ "Not in office" : "Not in office",
+ "Phone call" : "Phone call",
+ "Sick day" : "Sick day",
+ "Special occasion" : "Special occasion",
+ "Travel" : "Travel",
+ "Vacation" : "Vacation",
+ "Midnight on the day the event starts" : "Midnight on the day the event starts",
+ "_%n day before the event at {formattedHourMinute}_::_%n days before the event at {formattedHourMinute}_" : ["%n day before the event at {formattedHourMinute}","%n days before the event at {formattedHourMinute}"],
+ "_%n week before the event at {formattedHourMinute}_::_%n weeks before the event at {formattedHourMinute}_" : ["%n week before the event at {formattedHourMinute}","%n weeks before the event at {formattedHourMinute}"],
+ "on the day of the event at {formattedHourMinute}" : "on the day of the event at {formattedHourMinute}",
+ "at the event's start" : "at the event's start",
+ "at the event's end" : "at the event's end",
+ "{time} before the event starts" : "{time} before the event starts",
+ "{time} before the event ends" : "{time} before the event ends",
+ "{time} after the event starts" : "{time} after the event starts",
+ "{time} after the event ends" : "{time} after the event ends",
+ "on {time}" : "on {time}",
+ "on {time} ({timezoneId})" : "on {time} ({timezoneId})",
+ "Week {number} of {year}" : "Week {number} of {year}",
+ "Does not repeat" : "Does not repeat",
+ "Daily" : "Daily",
+ "Weekly" : "Weekly",
+ "Monthly" : "Monthly",
+ "Yearly" : "Yearly",
+ "_Every %n day_::_Every %n days_" : ["Every %n day","Every %n days"],
+ "_Every %n week_::_Every %n weeks_" : ["Every %n week","Every %n weeks"],
+ "_Every %n month_::_Every %n months_" : ["Every %n month","Every %n months"],
+ "_Every %n year_::_Every %n years_" : ["Every %n year","Every %n years"],
+ "_on {weekday}_::_on {weekdays}_" : ["on {weekday}","on {weekdays}"],
+ "_on day {dayOfMonthList}_::_on days {dayOfMonthList}_" : ["on day {dayOfMonthList}","on days {dayOfMonthList}"],
+ "on the {ordinalNumber} {byDaySet}" : "on the {ordinalNumber} {byDaySet}",
+ "in {monthNames}" : "in {monthNames}",
+ "in {monthNames} on the {ordinalNumber} {byDaySet}" : "in {monthNames} on the {ordinalNumber} {byDaySet}",
+ "until {untilDate}" : "until {untilDate}",
+ "_%n time_::_%n times_" : ["%n time","%n times"],
+ "Untitled event" : "Untitled event",
+ "Untitled task" : "Untitled task",
+ "Please ask your administrator to enable the Tasks App." : "Please ask your administrator to enable the Tasks App.",
+ "W" : "W",
+ "%n more" : "%n more",
+ "No events to display" : "No events to display",
+ "_+%n more_::_+%n more_" : ["+%n more","+%n more"],
+ "No events" : "No events",
+ "Create a new event or change the visible time-range" : "Create a new event or change the visible time-range",
+ "It might have been deleted, or there was a typo in a link" : "It might have been deleted, or there was a typo in a link",
+ "It might have been deleted, or there was a typo in the link" : "It might have been deleted, or there was a typo in the link",
+ "Meeting room" : "Meeting room",
+ "Lecture hall" : "Lecture hall",
+ "Seminar room" : "Seminar room",
+ "Other" : "Other",
+ "When shared show" : "When shared show",
+ "When shared show full event" : "When shared show full event",
+ "When shared show only busy" : "When shared show only busy",
+ "When shared hide this event" : "When shared hide this event",
+ "The visibility of this event in shared calendars." : "The visibility of this event in shared calendars.",
+ "Add a location" : "Add a location",
+ "Add a description" : "Add a description",
+ "Status" : "Status",
+ "Confirmed" : "Confirmed",
+ "Canceled" : "Canceled",
+ "Confirmation about the overall status of the event." : "Confirmation about the overall status of the event.",
+ "Show as" : "Show as",
+ "Take this event into account when calculating free-busy information." : "Take this event into account when calculating free-busy information.",
+ "Categories" : "Categories",
+ "Categories help you to structure and organize your events." : "Categories help you to structure and organize your events.",
+ "Search or add categories" : "Search or add categories",
+ "Add this as a new category" : "Add this as a new category",
+ "Custom color" : "Custom color",
+ "Special color of this event. Overrides the calendar-color." : "Special color of this event. Overrides the calendar-color.",
+ "Error while sharing file" : "Error while sharing file",
+ "Error while sharing file with user" : "Error while sharing file with user",
+ "Attachment {fileName} already exists!" : "Attachment {fileName} already exists!",
+ "An error occurred during getting file information" : "An error occurred during getting file information",
+ "Chat room for event" : "Chat room for event",
+ "An error occurred, unable to delete the calendar." : "An error occurred, unable to delete the calendar.",
+ "Imported {filename}" : "Imported {filename}",
+ "This is an event reminder." : "This is an event reminder.",
+ "Meditation" : "Meditation",
+ "Relaxing" : "Relaxing",
+ "Relax" : "Relax",
+ "Break" : "Break",
+ "Commute" : "Commute",
+ "Commuting" : "Commuting",
+ "Shuttle" : "Shuttle",
+ "Invoice" : "Invoice",
+ "Finance" : "Finance",
+ "Bank" : "Bank",
+ "Money" : "Money",
+ "Wedding" : "Wedding",
+ "Dog" : "Dog",
+ "Concert" : "Concert",
+ "Festival" : "Festival",
+ "Theater" : "Theater",
+ "Theatre" : "Theatre",
+ "Presentation" : "Presentation",
+ "Talk" : "Talk",
+ "Speech" : "Speech",
+ "Deadline" : "Deadline",
+ "Submission" : "Submission",
+ "Reporting" : "Reporting",
+ "Camping" : "Camping",
+ "Camp" : "Camp",
+ "Election" : "Election",
+ "Voting" : "Voting",
+ "Vote" : "Vote",
+ "Barbecue" : "Barbecue",
+ "Barbeque" : "Barbeque",
+ "Garden" : "Garden",
+ "Farm" : "Farm",
+ "Movie" : "Movie",
+ "Cinema" : "Cinema",
+ "Graduation" : "Graduation",
+ "Brainstorm" : "Brainstorm",
+ "Review" : "Review",
+ "Audit" : "Audit",
+ "Inspection" : "Inspection",
+ "Proofreading" : "Proofreading",
+ "Baseball" : "Baseball",
+ "Meet" : "Meet",
+ "Planning" : "Planning",
+ "Pointing" : "Pointing",
+ "Retrospective" : "Retrospective",
+ "Office" : "Office",
+ "Contributor week" : "Contributor week",
+ "Mail" : "Mail",
+ "Soccer" : "Soccer",
+ "Football" : "Football",
+ "Gaming" : "Gaming",
+ "Drive" : "Drive",
+ "Driving" : "Driving",
+ "Bicycle" : "Bicycle",
+ "Cycle" : "Cycle",
+ "Cycling" : "Cycling",
+ "Biking" : "Biking",
+ "Bike" : "Bike",
+ "Podcast" : "Podcast",
+ "Basketball" : "Basketball",
+ "Fishing" : "Fishing",
+ "Hiking" : "Hiking",
+ "Hike" : "Hike",
+ "Art" : "Art",
+ "Exhibition" : "Exhibition",
+ "Museum" : "Museum",
+ "Pilates" : "Pilates",
+ "Park" : "Park",
+ "Walk" : "Walk",
+ "Studying" : "Studying",
+ "Doctor" : "Doctor",
+ "Health" : "Health",
+ "Dentist" : "Dentist",
+ "Hospital" : "Hospital",
+ "Interview" : "Interview",
+ "Training" : "Training",
+ "Practice" : "Practice",
+ "Sports" : "Sports",
+ "Exercise" : "Exercise",
+ "Work out" : "Work out",
+ "Working out" : "Working out",
+ "Gym" : "Gym",
+ "Barber" : "Barber",
+ "Haircut" : "Haircut",
+ "Hairdresser" : "Hairdresser",
+ "Exam" : "Exam",
+ "Written test" : "Written test",
+ "Oral test" : "Oral test",
+ "Working" : "Working",
+ "New Years Eve" : "New Years Eve",
+ "NYE" : "NYE",
+ "Fireworks" : "Fireworks",
+ "Running" : "Running",
+ "Go for a run" : "Go for a run",
+ "Marathon" : "Marathon",
+ "Video-conference" : "Video-conference",
+ "Conference-call" : "Conference-call",
+ "Video-call" : "Video-call",
+ "Video-chat" : "Video-chat",
+ "Video-meeting" : "Video-meeting",
+ "Call" : "Call",
+ "Calling" : "Calling",
+ "Christmas" : "Christmas",
+ "Conference" : "Conference",
+ "Pizza" : "Pizza",
+ "Travelling" : "Travelling",
+ "Trip" : "Trip",
+ "Journey" : "Journey",
+ "Collaborate" : "Collaborate",
+ "Pair" : "Pair",
+ "Lecture" : "Lecture",
+ "Seminar" : "Seminar",
+ "Teaching" : "Teaching",
+ "Photograph" : "Photograph",
+ "Party" : "Party",
+ "Celebration" : "Celebration",
+ "Celebrate" : "Celebrate",
+ "Birthday" : "Birthday",
+ "Shopping" : "Shopping",
+ "Groceries" : "Groceries",
+ "Skate" : "Skate",
+ "Skateboard" : "Skateboard",
+ "Wine tasting" : "Wine tasting",
+ "Golf" : "Golf",
+ "Dinner" : "Dinner",
+ "Lunch" : "Lunch",
+ "Appointment not found" : "Appointment not found",
+ "User not found" : "User not found"
+},
+"nplurals=2; plural=(n!=1);");
diff --git a/l10n/ka.json b/l10n/ka.json
new file mode 100644
index 0000000000..3052c6e0ed
--- /dev/null
+++ b/l10n/ka.json
@@ -0,0 +1,650 @@
+{ "translations": {
+ "Provided email-address is too long" : "Provided email-address is too long",
+ "User-Session unexpectedly expired" : "User-Session unexpectedly expired",
+ "Provided email-address is not valid" : "Provided email-address is not valid",
+ "%s has published the calendar »%s«" : "%s has published the calendar »%s«",
+ "Unexpected error sending email. Please contact your administrator." : "Unexpected error sending email. Please contact your administrator.",
+ "Successfully sent email to %1$s" : "Successfully sent email to %1$s",
+ "Hello," : "Hello,",
+ "We wanted to inform you that %s has published the calendar »%s«." : "We wanted to inform you that %s has published the calendar »%s«.",
+ "Open »%s«" : "Open »%s«",
+ "Cheers!" : "Cheers!",
+ "Upcoming events" : "Upcoming events",
+ "More events" : "More events",
+ "No more events today" : "No more events today",
+ "No upcoming events" : "No upcoming events",
+ "%1$s with %2$s" : "%1$s with %2$s",
+ "Calendar" : "Calendar",
+ "New booking {booking}" : "New booking {booking}",
+ "{display_name} ({email}) booked the appointment \"{config_display_name}\" on {date_time}." : "{display_name} ({email}) booked the appointment \"{config_display_name}\" on {date_time}.",
+ "Appointments" : "Appointments",
+ "Schedule appointment \"%s\"" : "Schedule appointment \"%s\"",
+ "Schedule an appointment" : "Schedule an appointment",
+ "%1$s - %2$s" : "%1$s - %2$s",
+ "Prepare for %s" : "Prepare for %s",
+ "Follow up for %s" : "Follow up for %s",
+ "Your appointment \"%s\" with %s needs confirmation" : "Your appointment \"%s\" with %s needs confirmation",
+ "Dear %s, please confirm your booking" : "Dear %s, please confirm your booking",
+ "Confirm" : "Confirm",
+ "This confirmation link expires in %s hours." : "This confirmation link expires in %s hours.",
+ "If you wish to cancel the appointment after all, please contact your organizer by replying to this email or by visiting their profile page." : "If you wish to cancel the appointment after all, please contact your organizer by replying to this email or by visiting their profile page.",
+ "Your appointment \"%s\" with %s has been accepted" : "Your appointment \"%s\" with %s has been accepted",
+ "Dear %s, your booking has been accepted." : "Dear %s, your booking has been accepted.",
+ "Appointment for:" : "Appointment for:",
+ "Date:" : "Date:",
+ "You will receive a link with the confirmation email" : "You will receive a link with the confirmation email",
+ "Where:" : "Where:",
+ "Comment:" : "Comment:",
+ "You have a new appointment booking \"%s\" from %s" : "You have a new appointment booking \"%s\" from %s",
+ "Dear %s, %s (%s) booked an appointment with you." : "Dear %s, %s (%s) booked an appointment with you.",
+ "A Calendar app for Nextcloud" : "A Calendar app for Nextcloud",
+ "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries." : "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries.",
+ "Previous day" : "Previous day",
+ "Previous week" : "Previous week",
+ "Previous year" : "Previous year",
+ "Previous month" : "Previous month",
+ "Next day" : "Next day",
+ "Next week" : "Next week",
+ "Next year" : "Next year",
+ "Next month" : "Next month",
+ "Event" : "Event",
+ "Create new event" : "Create new event",
+ "Today" : "Today",
+ "Day" : "Day",
+ "Week" : "Week",
+ "Month" : "Month",
+ "Year" : "Year",
+ "List" : "List",
+ "Preview" : "Preview",
+ "Copy link" : "Copy link",
+ "Edit" : "Edit",
+ "Delete" : "Delete",
+ "Appointment link was copied to clipboard" : "Appointment link was copied to clipboard",
+ "Appointment link could not be copied to clipboard" : "Appointment link could not be copied to clipboard",
+ "Add new" : "Add new",
+ "Untitled calendar" : "Untitled calendar",
+ "Shared with you by" : "Shared with you by",
+ "Edit and share calendar" : "Edit and share calendar",
+ "Edit calendar" : "Edit calendar",
+ "Disable calendar \"{calendar}\"" : "Disable calendar \"{calendar}\"",
+ "Disable untitled calendar" : "Disable untitled calendar",
+ "Enable calendar \"{calendar}\"" : "Enable calendar \"{calendar}\"",
+ "Enable untitled calendar" : "Enable untitled calendar",
+ "An error occurred, unable to change visibility of the calendar." : "An error occurred, unable to change visibility of the calendar.",
+ "_Unsharing the calendar in {countdown} second_::_Unsharing the calendar in {countdown} seconds_" : ["Unsharing the calendar in {countdown} second","Unsharing the calendar in {countdown} seconds"],
+ "_Deleting the calendar in {countdown} second_::_Deleting the calendar in {countdown} seconds_" : ["Deleting the calendar in {countdown} second","Deleting the calendar in {countdown} seconds"],
+ "New calendar" : "New calendar",
+ "Name for new calendar" : "Name for new calendar",
+ "Creating calendar …" : "Creating calendar …",
+ "New calendar with task list" : "New calendar with task list",
+ "New subscription from link (read-only)" : "New subscription from link (read-only)",
+ "Creating subscription …" : "Creating subscription …",
+ "Add public holiday calendar" : "Add public holiday calendar",
+ "Add custom public calendar" : "Add custom public calendar",
+ "An error occurred, unable to create the calendar." : "An error occurred, unable to create the calendar.",
+ "Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Please enter a valid link (starting with http://, https://, webcal://, or webcals://)",
+ "Copy subscription link" : "Copy subscription link",
+ "Copying link …" : "Copying link …",
+ "Copied link" : "Copied link",
+ "Could not copy link" : "Could not copy link",
+ "Export" : "Export",
+ "Calendar link copied to clipboard." : "Calendar link copied to clipboard.",
+ "Calendar link could not be copied to clipboard." : "Calendar link could not be copied to clipboard.",
+ "Trash bin" : "Trash bin",
+ "Loading deleted items." : "Loading deleted items.",
+ "You do not have any deleted items." : "You do not have any deleted items.",
+ "Name" : "Name",
+ "Deleted" : "Deleted",
+ "Restore" : "Restore",
+ "Delete permanently" : "Delete permanently",
+ "Empty trash bin" : "Empty trash bin",
+ "Untitled item" : "Untitled item",
+ "Unknown calendar" : "Unknown calendar",
+ "Could not load deleted calendars and objects" : "Could not load deleted calendars and objects",
+ "Could not restore calendar or event" : "Could not restore calendar or event",
+ "Do you really want to empty the trash bin?" : "Do you really want to empty the trash bin?",
+ "_Items in the trash bin are deleted after {numDays} day_::_Items in the trash bin are deleted after {numDays} days_" : ["Items in the trash bin are deleted after {numDays} day","Items in the trash bin are deleted after {numDays} days"],
+ "Could not update calendar order." : "Could not update calendar order.",
+ "Internal link" : "Internal link",
+ "A private link that can be used with external clients" : "A private link that can be used with external clients",
+ "Copy internal link" : "Copy internal link",
+ "Share link" : "Share link",
+ "Copy public link" : "Copy public link",
+ "Send link to calendar via email" : "Send link to calendar via email",
+ "Enter one address" : "Enter one address",
+ "Sending email …" : "Sending email …",
+ "Copy embedding code" : "Copy embedding code",
+ "Copying code …" : "Copying code …",
+ "Copied code" : "Copied code",
+ "Could not copy code" : "Could not copy code",
+ "Delete share link" : "Delete share link",
+ "Deleting share link …" : "Deleting share link …",
+ "An error occurred, unable to publish calendar." : "An error occurred, unable to publish calendar.",
+ "An error occurred, unable to send email." : "An error occurred, unable to send email.",
+ "Embed code copied to clipboard." : "Embed code copied to clipboard.",
+ "Embed code could not be copied to clipboard." : "Embed code could not be copied to clipboard.",
+ "Unpublishing calendar failed" : "Unpublishing calendar failed",
+ "can edit" : "can edit",
+ "Unshare with {displayName}" : "Unshare with {displayName}",
+ "An error occurred while unsharing the calendar." : "An error occurred while unsharing the calendar.",
+ "An error occurred, unable to change the permission of the share." : "An error occurred, unable to change the permission of the share.",
+ "Share with users or groups" : "Share with users or groups",
+ "No users or groups" : "No users or groups",
+ "Calendar name …" : "Calendar name …",
+ "Share calendar" : "Share calendar",
+ "Unshare from me" : "Unshare from me",
+ "Save" : "Save",
+ "Failed to save calendar name and color" : "Failed to save calendar name and color",
+ "Import calendars" : "Import calendars",
+ "Please select a calendar to import into …" : "Please select a calendar to import into …",
+ "Filename" : "Filename",
+ "Calendar to import into" : "Calendar to import into",
+ "Cancel" : "Cancel",
+ "_Import calendar_::_Import calendars_" : ["Import calendar","Import calendars"],
+ "Default attachments location" : "Default attachments location",
+ "Select the default location for attachments" : "Select the default location for attachments",
+ "Invalid location selected" : "Invalid location selected",
+ "Attachments folder successfully saved." : "Attachments folder successfully saved.",
+ "Error on saving attachments folder." : "Error on saving attachments folder.",
+ "{filename} could not be parsed" : "{filename} could not be parsed",
+ "No valid files found, aborting import" : "No valid files found, aborting import",
+ "Import partially failed. Imported {accepted} out of {total}." : "Import partially failed. Imported {accepted} out of {total}.",
+ "_Successfully imported %n event_::_Successfully imported %n events_" : ["Successfully imported %n event","Successfully imported %n events"],
+ "Automatic" : "Automatic",
+ "Automatic ({detected})" : "Automatic ({detected})",
+ "New setting was not saved successfully." : "New setting was not saved successfully.",
+ "Shortcut overview" : "Shortcut overview",
+ "or" : "or",
+ "Navigation" : "Navigation",
+ "Previous period" : "Previous period",
+ "Next period" : "Next period",
+ "Views" : "Views",
+ "Day view" : "Day view",
+ "Week view" : "Week view",
+ "Month view" : "Month view",
+ "Year view" : "Year view",
+ "List view" : "List view",
+ "Actions" : "Actions",
+ "Create event" : "Create event",
+ "Show shortcuts" : "Show shortcuts",
+ "Editor" : "Editor",
+ "Close editor" : "Close editor",
+ "Save edited event" : "Save edited event",
+ "Delete edited event" : "Delete edited event",
+ "Duplicate event" : "Duplicate event",
+ "Enable birthday calendar" : "Enable birthday calendar",
+ "Show tasks in calendar" : "Show tasks in calendar",
+ "Enable simplified editor" : "Enable simplified editor",
+ "Limit the number of events displayed in the monthly view" : "Limit the number of events displayed in the monthly view",
+ "Show weekends" : "Show weekends",
+ "Show week numbers" : "Show week numbers",
+ "Time increments" : "Time increments",
+ "Default reminder" : "Default reminder",
+ "Copy primary CalDAV address" : "Copy primary CalDAV address",
+ "Copy iOS/macOS CalDAV address" : "Copy iOS/macOS CalDAV address",
+ "Personal availability settings" : "Personal availability settings",
+ "Show keyboard shortcuts" : "Show keyboard shortcuts",
+ "Calendar settings" : "Calendar settings",
+ "No reminder" : "No reminder",
+ "CalDAV link copied to clipboard." : "CalDAV link copied to clipboard.",
+ "CalDAV link could not be copied to clipboard." : "CalDAV link could not be copied to clipboard.",
+ "Appointment was created successfully" : "Appointment was created successfully",
+ "Appointment was updated successfully" : "Appointment was updated successfully",
+ "_{duration} minute_::_{duration} minutes_" : ["{duration} minute","{duration} minutes"],
+ "0 minutes" : "0 minutes",
+ "_{duration} hour_::_{duration} hours_" : ["{duration} hour","{duration} hours"],
+ "_{duration} day_::_{duration} days_" : ["{duration} day","{duration} days"],
+ "_{duration} week_::_{duration} weeks_" : ["{duration} week","{duration} weeks"],
+ "_{duration} month_::_{duration} months_" : ["{duration} month","{duration} months"],
+ "_{duration} year_::_{duration} years_" : ["{duration} year","{duration} years"],
+ "To configure appointments, add your email address in personal settings." : "To configure appointments, add your email address in personal settings.",
+ "Public – shown on the profile page" : "Public – shown on the profile page",
+ "Private – only accessible via secret link" : "Private – only accessible via secret link",
+ "Appointment name" : "Appointment name",
+ "Location" : "Location",
+ "Create a Talk room" : "Create a Talk room",
+ "A unique link will be generated for every booked appointment and sent via the confirmation email" : "A unique link will be generated for every booked appointment and sent via the confirmation email",
+ "Description" : "Description",
+ "Visibility" : "Visibility",
+ "Duration" : "Duration",
+ "Increments" : "Increments",
+ "Additional calendars to check for conflicts" : "Additional calendars to check for conflicts",
+ "Pick time ranges where appointments are allowed" : "Pick time ranges where appointments are allowed",
+ "to" : "to",
+ "Delete slot" : "Delete slot",
+ "No times set" : "No times set",
+ "Add" : "Add",
+ "Monday" : "Monday",
+ "Tuesday" : "Tuesday",
+ "Wednesday" : "Wednesday",
+ "Thursday" : "Thursday",
+ "Friday" : "Friday",
+ "Saturday" : "Saturday",
+ "Sunday" : "Sunday",
+ "Add time before and after the event" : "Add time before and after the event",
+ "Before the event" : "Before the event",
+ "After the event" : "After the event",
+ "Planning restrictions" : "Planning restrictions",
+ "Minimum time before next available slot" : "Minimum time before next available slot",
+ "Max slots per day" : "Max slots per day",
+ "Limit how far in the future appointments can be booked" : "Limit how far in the future appointments can be booked",
+ "Create appointment" : "Create appointment",
+ "Edit appointment" : "Edit appointment",
+ "Update" : "Update",
+ "Please confirm your reservation" : "Please confirm your reservation",
+ "We sent you an email with details. Please confirm your appointment using the link in the email. You can close this page now." : "We sent you an email with details. Please confirm your appointment using the link in the email. You can close this page now.",
+ "Your name" : "Your name",
+ "Your email address" : "Your email address",
+ "Please share anything that will help prepare for our meeting" : "Please share anything that will help prepare for our meeting",
+ "Could not book the appointment. Please try again later or contact the organizer." : "Could not book the appointment. Please try again later or contact the organizer.",
+ "Book the appointment" : "Book the appointment",
+ "Reminder" : "Reminder",
+ "before at" : "before at",
+ "Notification" : "Notification",
+ "Email" : "Email",
+ "Audio notification" : "Audio notification",
+ "Other notification" : "Other notification",
+ "Relative to event" : "Relative to event",
+ "On date" : "On date",
+ "Edit time" : "Edit time",
+ "Save time" : "Save time",
+ "Remove reminder" : "Remove reminder",
+ "on" : "on",
+ "at" : "at",
+ "+ Add reminder" : "+ Add reminder",
+ "Add reminder" : "Add reminder",
+ "_second_::_seconds_" : ["second","seconds"],
+ "_minute_::_minutes_" : ["minute","minutes"],
+ "_hour_::_hours_" : ["hour","hours"],
+ "_day_::_days_" : ["day","days"],
+ "_week_::_weeks_" : ["week","weeks"],
+ "No attachments" : "No attachments",
+ "Add from Files" : "Add from Files",
+ "Upload from device" : "Upload from device",
+ "Delete file" : "Delete file",
+ "Choose a file to add as attachment" : "Choose a file to add as attachment",
+ "Choose a file to share as a link" : "Choose a file to share as a link",
+ "Attachment {name} already exist!" : "Attachment {name} already exist!",
+ "Could not upload attachment(s)" : "Could not upload attachment(s)",
+ "_{count} attachment_::_{count} attachments_" : ["{count} attachment","{count} attachments"],
+ "Invitation accepted" : "Invitation accepted",
+ "Available" : "Available",
+ "Suggested" : "Suggested",
+ "Participation marked as tentative" : "Participation marked as tentative",
+ "Accepted {organizerName}'s invitation" : "Accepted {organizerName}'s invitation",
+ "Not available" : "Not available",
+ "Invitation declined" : "Invitation declined",
+ "Declined {organizerName}'s invitation" : "Declined {organizerName}'s invitation",
+ "Invitation is delegated" : "Invitation is delegated",
+ "Checking availability" : "Checking availability",
+ "Invitation sent" : "Invitation sent",
+ "Has not responded to {organizerName}'s invitation yet" : "Has not responded to {organizerName}'s invitation yet",
+ "Availability of attendees, resources and rooms" : "Availability of attendees, resources and rooms",
+ "{organizer} (organizer)" : "{organizer} (organizer)",
+ "Free" : "Free",
+ "Busy (tentative)" : "Busy (tentative)",
+ "Busy" : "Busy",
+ "Out of office" : "Out of office",
+ "Unknown" : "Unknown",
+ "Accept" : "Accept",
+ "Decline" : "Decline",
+ "Tentative" : "Tentative",
+ "The invitation has been accepted successfully." : "The invitation has been accepted successfully.",
+ "Failed to accept the invitation." : "Failed to accept the invitation.",
+ "The invitation has been declined successfully." : "The invitation has been declined successfully.",
+ "Failed to decline the invitation." : "Failed to decline the invitation.",
+ "Your participation has been marked as tentative." : "Your participation has been marked as tentative.",
+ "Failed to set the participation status to tentative." : "Failed to set the participation status to tentative.",
+ "Create Talk room for this event" : "Create Talk room for this event",
+ "Show busy times" : "Show busy times",
+ "No attendees yet" : "No attendees yet",
+ "You do not own this calendar, so you cannot add attendees to this event" : "You do not own this calendar, so you cannot add attendees to this event",
+ "Successfully appended link to talk room to location." : "Successfully appended link to talk room to location.",
+ "Successfully appended link to talk room to description." : "Successfully appended link to talk room to description.",
+ "Error creating Talk room" : "Error creating Talk room",
+ "Send email" : "Send email",
+ "Chairperson" : "Chairperson",
+ "Required participant" : "Required participant",
+ "Optional participant" : "Optional participant",
+ "Non-participant" : "Non-participant",
+ "Remove group" : "Remove group",
+ "Remove attendee" : "Remove attendee",
+ "_%n member_::_%n members_" : ["%n member","%n members"],
+ "Search for emails, users, contacts or groups" : "Search for emails, users, contacts or groups",
+ "No match found" : "No match found",
+ "Note that members of circles get invited but are not synced yet." : "Note that members of circles get invited but are not synced yet.",
+ "(organizer)" : "(organizer)",
+ "To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose].",
+ "Remove color" : "Remove color",
+ "Event title" : "Event title",
+ "All day" : "All day",
+ "Cannot modify all-day setting for events that are part of a recurrence-set." : "Cannot modify all-day setting for events that are part of a recurrence-set.",
+ "from {startDate}" : "from {startDate}",
+ "from {startDate} at {startTime}" : "from {startDate} at {startTime}",
+ "to {endDate}" : "to {endDate}",
+ "to {endDate} at {endTime}" : "to {endDate} at {endTime}",
+ "Repeat" : "Repeat",
+ "End repeat" : "End repeat",
+ "Select to end repeat" : "Select to end repeat",
+ "never" : "never",
+ "on date" : "on date",
+ "after" : "after",
+ "_time_::_times_" : ["time","times"],
+ "This event is the recurrence-exception of a recurrence-set. You cannot add a recurrence-rule to it." : "This event is the recurrence-exception of a recurrence-set. You cannot add a recurrence-rule to it.",
+ "first" : "first",
+ "third" : "third",
+ "fourth" : "fourth",
+ "fifth" : "fifth",
+ "second to last" : "second to last",
+ "last" : "last",
+ "Changes to the recurrence-rule will only apply to this and all future occurrences." : "Changes to the recurrence-rule will only apply to this and all future occurrences.",
+ "Repeat every" : "Repeat every",
+ "By day of the month" : "By day of the month",
+ "On the" : "On the",
+ "_month_::_months_" : ["month","months"],
+ "_year_::_years_" : ["year","years"],
+ "weekday" : "weekday",
+ "weekend day" : "weekend day",
+ "No recurrence" : "No recurrence",
+ "The recurrence definition of this event is not fully supported by Nextcloud. If you edit the recurrence-options, certain recurrences may be lost." : "The recurrence definition of this event is not fully supported by Nextcloud. If you edit the recurrence-options, certain recurrences may be lost.",
+ "Suggestions" : "Suggestions",
+ "No rooms or resources yet" : "No rooms or resources yet",
+ "Add resource" : "Add resource",
+ "Has a projector" : "Has a projector",
+ "Has a whiteboard" : "Has a whiteboard",
+ "Wheelchair accessible" : "Wheelchair accessible",
+ "Remove resource" : "Remove resource",
+ "_{seatingCapacity} seat_::_{seatingCapacity} seats_" : ["{seatingCapacity} seat","{seatingCapacity} seats"],
+ "Projector" : "Projector",
+ "Whiteboard" : "Whiteboard",
+ "Search for resources or rooms" : "Search for resources or rooms",
+ "available" : "available",
+ "unavailable" : "unavailable",
+ "Room type" : "Room type",
+ "Any" : "Any",
+ "Minimum seating capacity" : "Minimum seating capacity",
+ "More" : "More",
+ "Update this occurrence" : "Update this occurrence",
+ "Update this and all future" : "Update this and all future",
+ "Public calendar does not exist" : "Public calendar does not exist",
+ "Maybe the share was deleted or has expired?" : "Maybe the share was deleted or has expired?",
+ "Please select a time zone:" : "Please select a time zone:",
+ "Pick a time" : "Pick a time",
+ "Pick a date" : "Pick a date",
+ "from {formattedDate}" : "from {formattedDate}",
+ "to {formattedDate}" : "to {formattedDate}",
+ "on {formattedDate}" : "on {formattedDate}",
+ "from {formattedDate} at {formattedTime}" : "from {formattedDate} at {formattedTime}",
+ "to {formattedDate} at {formattedTime}" : "to {formattedDate} at {formattedTime}",
+ "on {formattedDate} at {formattedTime}" : "on {formattedDate} at {formattedTime}",
+ "{formattedDate} at {formattedTime}" : "{formattedDate} at {formattedTime}",
+ "Please enter a valid date" : "Please enter a valid date",
+ "Please enter a valid date and time" : "Please enter a valid date and time",
+ "Type to search time zone" : "Type to search time zone",
+ "Global" : "Global",
+ "Public holiday calendars" : "Public holiday calendars",
+ "Public calendars" : "Public calendars",
+ "No valid public calendars configured" : "No valid public calendars configured",
+ "Speak to the server administrator to resolve this issue." : "Speak to the server administrator to resolve this issue.",
+ "Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website.",
+ "By {authors}" : "By {authors}",
+ "Subscribed" : "Subscribed",
+ "Subscribe" : "Subscribe",
+ "Holidays in {region}" : "Holidays in {region}",
+ "An error occurred, unable to read public calendars." : "An error occurred, unable to read public calendars.",
+ "An error occurred, unable to subscribe to calendar." : "An error occurred, unable to subscribe to calendar.",
+ "Select date" : "Select date",
+ "Select slot" : "Select slot",
+ "No slots available" : "No slots available",
+ "Could not fetch slots" : "Could not fetch slots",
+ "The slot for your appointment has been confirmed" : "The slot for your appointment has been confirmed",
+ "Appointment Details:" : "Appointment Details:",
+ "Time:" : "Time:",
+ "Booked for:" : "Booked for:",
+ "Thank you. Your booking from {startDate} to {endDate} has been confirmed." : "Thank you. Your booking from {startDate} to {endDate} has been confirmed.",
+ "Book another appointment:" : "Book another appointment:",
+ "See all available slots" : "See all available slots",
+ "The slot for your appointment from {startDate} to {endDate} is not available any more." : "The slot for your appointment from {startDate} to {endDate} is not available any more.",
+ "Please book a different slot:" : "Please book a different slot:",
+ "Book an appointment with {name}" : "Book an appointment with {name}",
+ "No public appointments found for {name}" : "No public appointments found for {name}",
+ "Personal" : "Personal",
+ "The automatic time zone detection determined your time zone to be UTC.\nThis is most likely the result of security measures of your web browser.\nPlease set your time zone manually in the calendar settings." : "The automatic time zone detection determined your time zone to be UTC.\nThis is most likely the result of security measures of your web browser.\nPlease set your time zone manually in the calendar settings.",
+ "Your configured time zone ({timezoneId}) was not found. Falling back to UTC.\nPlease change your time zone in the settings and report this issue." : "Your configured time zone ({timezoneId}) was not found. Falling back to UTC.\nPlease change your time zone in the settings and report this issue.",
+ "Create a new event" : "Create a new event",
+ "[Today]" : "[Today]",
+ "[Tomorrow]" : "[Tomorrow]",
+ "[Yesterday]" : "[Yesterday]",
+ "[Last] dddd" : "[Last] dddd",
+ "Event does not exist" : "Event does not exist",
+ "Duplicate" : "Duplicate",
+ "Delete this occurrence" : "Delete this occurrence",
+ "Delete this and all future" : "Delete this and all future",
+ "Details" : "Details",
+ "Managing shared access" : "Managing shared access",
+ "Deny access" : "Deny access",
+ "Invite" : "Invite",
+ "Attendees" : "Attendees",
+ "Resources" : "Resources",
+ "_User requires access to your file_::_Users require access to your file_" : ["User requires access to your file","Users require access to your file"],
+ "_Attachment requires shared access_::_Attachments requiring shared access_" : ["Attachment requires shared access","Attachments requiring shared access"],
+ "Close" : "Close",
+ "Show more details" : "Show more details",
+ "Subscribe to {name}" : "Subscribe to {name}",
+ "Export {name}" : "Export {name}",
+ "Anniversary" : "Anniversary",
+ "Appointment" : "Appointment",
+ "Business" : "Business",
+ "Education" : "Education",
+ "Holiday" : "Holiday",
+ "Meeting" : "Meeting",
+ "Miscellaneous" : "Miscellaneous",
+ "Non-working hours" : "Non-working hours",
+ "Not in office" : "Not in office",
+ "Phone call" : "Phone call",
+ "Sick day" : "Sick day",
+ "Special occasion" : "Special occasion",
+ "Travel" : "Travel",
+ "Vacation" : "Vacation",
+ "Midnight on the day the event starts" : "Midnight on the day the event starts",
+ "_%n day before the event at {formattedHourMinute}_::_%n days before the event at {formattedHourMinute}_" : ["%n day before the event at {formattedHourMinute}","%n days before the event at {formattedHourMinute}"],
+ "_%n week before the event at {formattedHourMinute}_::_%n weeks before the event at {formattedHourMinute}_" : ["%n week before the event at {formattedHourMinute}","%n weeks before the event at {formattedHourMinute}"],
+ "on the day of the event at {formattedHourMinute}" : "on the day of the event at {formattedHourMinute}",
+ "at the event's start" : "at the event's start",
+ "at the event's end" : "at the event's end",
+ "{time} before the event starts" : "{time} before the event starts",
+ "{time} before the event ends" : "{time} before the event ends",
+ "{time} after the event starts" : "{time} after the event starts",
+ "{time} after the event ends" : "{time} after the event ends",
+ "on {time}" : "on {time}",
+ "on {time} ({timezoneId})" : "on {time} ({timezoneId})",
+ "Week {number} of {year}" : "Week {number} of {year}",
+ "Does not repeat" : "Does not repeat",
+ "Daily" : "Daily",
+ "Weekly" : "Weekly",
+ "Monthly" : "Monthly",
+ "Yearly" : "Yearly",
+ "_Every %n day_::_Every %n days_" : ["Every %n day","Every %n days"],
+ "_Every %n week_::_Every %n weeks_" : ["Every %n week","Every %n weeks"],
+ "_Every %n month_::_Every %n months_" : ["Every %n month","Every %n months"],
+ "_Every %n year_::_Every %n years_" : ["Every %n year","Every %n years"],
+ "_on {weekday}_::_on {weekdays}_" : ["on {weekday}","on {weekdays}"],
+ "_on day {dayOfMonthList}_::_on days {dayOfMonthList}_" : ["on day {dayOfMonthList}","on days {dayOfMonthList}"],
+ "on the {ordinalNumber} {byDaySet}" : "on the {ordinalNumber} {byDaySet}",
+ "in {monthNames}" : "in {monthNames}",
+ "in {monthNames} on the {ordinalNumber} {byDaySet}" : "in {monthNames} on the {ordinalNumber} {byDaySet}",
+ "until {untilDate}" : "until {untilDate}",
+ "_%n time_::_%n times_" : ["%n time","%n times"],
+ "Untitled event" : "Untitled event",
+ "Untitled task" : "Untitled task",
+ "Please ask your administrator to enable the Tasks App." : "Please ask your administrator to enable the Tasks App.",
+ "W" : "W",
+ "%n more" : "%n more",
+ "No events to display" : "No events to display",
+ "_+%n more_::_+%n more_" : ["+%n more","+%n more"],
+ "No events" : "No events",
+ "Create a new event or change the visible time-range" : "Create a new event or change the visible time-range",
+ "It might have been deleted, or there was a typo in a link" : "It might have been deleted, or there was a typo in a link",
+ "It might have been deleted, or there was a typo in the link" : "It might have been deleted, or there was a typo in the link",
+ "Meeting room" : "Meeting room",
+ "Lecture hall" : "Lecture hall",
+ "Seminar room" : "Seminar room",
+ "Other" : "Other",
+ "When shared show" : "When shared show",
+ "When shared show full event" : "When shared show full event",
+ "When shared show only busy" : "When shared show only busy",
+ "When shared hide this event" : "When shared hide this event",
+ "The visibility of this event in shared calendars." : "The visibility of this event in shared calendars.",
+ "Add a location" : "Add a location",
+ "Add a description" : "Add a description",
+ "Status" : "Status",
+ "Confirmed" : "Confirmed",
+ "Canceled" : "Canceled",
+ "Confirmation about the overall status of the event." : "Confirmation about the overall status of the event.",
+ "Show as" : "Show as",
+ "Take this event into account when calculating free-busy information." : "Take this event into account when calculating free-busy information.",
+ "Categories" : "Categories",
+ "Categories help you to structure and organize your events." : "Categories help you to structure and organize your events.",
+ "Search or add categories" : "Search or add categories",
+ "Add this as a new category" : "Add this as a new category",
+ "Custom color" : "Custom color",
+ "Special color of this event. Overrides the calendar-color." : "Special color of this event. Overrides the calendar-color.",
+ "Error while sharing file" : "Error while sharing file",
+ "Error while sharing file with user" : "Error while sharing file with user",
+ "Attachment {fileName} already exists!" : "Attachment {fileName} already exists!",
+ "An error occurred during getting file information" : "An error occurred during getting file information",
+ "Chat room for event" : "Chat room for event",
+ "An error occurred, unable to delete the calendar." : "An error occurred, unable to delete the calendar.",
+ "Imported {filename}" : "Imported {filename}",
+ "This is an event reminder." : "This is an event reminder.",
+ "Meditation" : "Meditation",
+ "Relaxing" : "Relaxing",
+ "Relax" : "Relax",
+ "Break" : "Break",
+ "Commute" : "Commute",
+ "Commuting" : "Commuting",
+ "Shuttle" : "Shuttle",
+ "Invoice" : "Invoice",
+ "Finance" : "Finance",
+ "Bank" : "Bank",
+ "Money" : "Money",
+ "Wedding" : "Wedding",
+ "Dog" : "Dog",
+ "Concert" : "Concert",
+ "Festival" : "Festival",
+ "Theater" : "Theater",
+ "Theatre" : "Theatre",
+ "Presentation" : "Presentation",
+ "Talk" : "Talk",
+ "Speech" : "Speech",
+ "Deadline" : "Deadline",
+ "Submission" : "Submission",
+ "Reporting" : "Reporting",
+ "Camping" : "Camping",
+ "Camp" : "Camp",
+ "Election" : "Election",
+ "Voting" : "Voting",
+ "Vote" : "Vote",
+ "Barbecue" : "Barbecue",
+ "Barbeque" : "Barbeque",
+ "Garden" : "Garden",
+ "Farm" : "Farm",
+ "Movie" : "Movie",
+ "Cinema" : "Cinema",
+ "Graduation" : "Graduation",
+ "Brainstorm" : "Brainstorm",
+ "Review" : "Review",
+ "Audit" : "Audit",
+ "Inspection" : "Inspection",
+ "Proofreading" : "Proofreading",
+ "Baseball" : "Baseball",
+ "Meet" : "Meet",
+ "Planning" : "Planning",
+ "Pointing" : "Pointing",
+ "Retrospective" : "Retrospective",
+ "Office" : "Office",
+ "Contributor week" : "Contributor week",
+ "Mail" : "Mail",
+ "Soccer" : "Soccer",
+ "Football" : "Football",
+ "Gaming" : "Gaming",
+ "Drive" : "Drive",
+ "Driving" : "Driving",
+ "Bicycle" : "Bicycle",
+ "Cycle" : "Cycle",
+ "Cycling" : "Cycling",
+ "Biking" : "Biking",
+ "Bike" : "Bike",
+ "Podcast" : "Podcast",
+ "Basketball" : "Basketball",
+ "Fishing" : "Fishing",
+ "Hiking" : "Hiking",
+ "Hike" : "Hike",
+ "Art" : "Art",
+ "Exhibition" : "Exhibition",
+ "Museum" : "Museum",
+ "Pilates" : "Pilates",
+ "Park" : "Park",
+ "Walk" : "Walk",
+ "Studying" : "Studying",
+ "Doctor" : "Doctor",
+ "Health" : "Health",
+ "Dentist" : "Dentist",
+ "Hospital" : "Hospital",
+ "Interview" : "Interview",
+ "Training" : "Training",
+ "Practice" : "Practice",
+ "Sports" : "Sports",
+ "Exercise" : "Exercise",
+ "Work out" : "Work out",
+ "Working out" : "Working out",
+ "Gym" : "Gym",
+ "Barber" : "Barber",
+ "Haircut" : "Haircut",
+ "Hairdresser" : "Hairdresser",
+ "Exam" : "Exam",
+ "Written test" : "Written test",
+ "Oral test" : "Oral test",
+ "Working" : "Working",
+ "New Years Eve" : "New Years Eve",
+ "NYE" : "NYE",
+ "Fireworks" : "Fireworks",
+ "Running" : "Running",
+ "Go for a run" : "Go for a run",
+ "Marathon" : "Marathon",
+ "Video-conference" : "Video-conference",
+ "Conference-call" : "Conference-call",
+ "Video-call" : "Video-call",
+ "Video-chat" : "Video-chat",
+ "Video-meeting" : "Video-meeting",
+ "Call" : "Call",
+ "Calling" : "Calling",
+ "Christmas" : "Christmas",
+ "Conference" : "Conference",
+ "Pizza" : "Pizza",
+ "Travelling" : "Travelling",
+ "Trip" : "Trip",
+ "Journey" : "Journey",
+ "Collaborate" : "Collaborate",
+ "Pair" : "Pair",
+ "Lecture" : "Lecture",
+ "Seminar" : "Seminar",
+ "Teaching" : "Teaching",
+ "Photograph" : "Photograph",
+ "Party" : "Party",
+ "Celebration" : "Celebration",
+ "Celebrate" : "Celebrate",
+ "Birthday" : "Birthday",
+ "Shopping" : "Shopping",
+ "Groceries" : "Groceries",
+ "Skate" : "Skate",
+ "Skateboard" : "Skateboard",
+ "Wine tasting" : "Wine tasting",
+ "Golf" : "Golf",
+ "Dinner" : "Dinner",
+ "Lunch" : "Lunch",
+ "Appointment not found" : "Appointment not found",
+ "User not found" : "User not found"
+},"pluralForm" :"nplurals=2; plural=(n!=1);"
+}
\ No newline at end of file
diff --git a/l10n/ko.js b/l10n/ko.js
index 04eb1e7e8d..db3cae58cc 100644
--- a/l10n/ko.js
+++ b/l10n/ko.js
@@ -14,6 +14,7 @@ OC.L10N.register(
"No more events today" : "오늘 더 이상 일정이 없음",
"No upcoming events" : "다가오는 일정 없음",
"Calendar" : "달력",
+ "{display_name} ({email}) booked the appointment \"{config_display_name}\" on {date_time}." : "{display_name} ({email}) 이(가) \"{config_display_name}\"을(를) {date_time}에 예약했습니다.",
"Appointments" : "일정들",
"Confirm" : "확인",
"Date:" : "날짜:",
@@ -27,6 +28,7 @@ OC.L10N.register(
"Next week" : "다음주",
"Next year" : "다음 년도",
"Next month" : "다음달",
+ "Event" : "이벤트",
"Today" : "오늘",
"Day" : "일",
"Week" : "주",
@@ -344,11 +346,16 @@ OC.L10N.register(
"Commute" : "통근",
"Commuting" : "이동 중",
"Shuttle" : "왕복",
+ "Dog" : "개",
+ "Festival" : "축제",
+ "Theater" : "극장",
"Presentation" : "프레젠테이션",
"Talk" : "토크",
"Camping" : "캠핑하기",
"Camp" : "캠핑",
"Vote" : "투표",
+ "Barbecue" : "바베큐",
+ "Farm" : "농장",
"Movie" : "영화",
"Cinema" : "영화",
"Graduation" : "졸업",
diff --git a/l10n/ko.json b/l10n/ko.json
index 34921d1c77..505521d873 100644
--- a/l10n/ko.json
+++ b/l10n/ko.json
@@ -12,6 +12,7 @@
"No more events today" : "오늘 더 이상 일정이 없음",
"No upcoming events" : "다가오는 일정 없음",
"Calendar" : "달력",
+ "{display_name} ({email}) booked the appointment \"{config_display_name}\" on {date_time}." : "{display_name} ({email}) 이(가) \"{config_display_name}\"을(를) {date_time}에 예약했습니다.",
"Appointments" : "일정들",
"Confirm" : "확인",
"Date:" : "날짜:",
@@ -25,6 +26,7 @@
"Next week" : "다음주",
"Next year" : "다음 년도",
"Next month" : "다음달",
+ "Event" : "이벤트",
"Today" : "오늘",
"Day" : "일",
"Week" : "주",
@@ -342,11 +344,16 @@
"Commute" : "통근",
"Commuting" : "이동 중",
"Shuttle" : "왕복",
+ "Dog" : "개",
+ "Festival" : "축제",
+ "Theater" : "극장",
"Presentation" : "프레젠테이션",
"Talk" : "토크",
"Camping" : "캠핑하기",
"Camp" : "캠핑",
"Vote" : "투표",
+ "Barbecue" : "바베큐",
+ "Farm" : "농장",
"Movie" : "영화",
"Cinema" : "영화",
"Graduation" : "졸업",
diff --git a/l10n/lv.js b/l10n/lv.js
index 13dc548f56..b74d4a837c 100644
--- a/l10n/lv.js
+++ b/l10n/lv.js
@@ -1,47 +1,74 @@
OC.L10N.register(
"calendar",
{
- "%s has published the calendar »%s«" : "%s dalijās ar kalendāru »%s«",
+ "%s has published the calendar »%s«" : "%s dalījās ar kalendāru »%s«",
"Hello," : "Sveicināti,",
"We wanted to inform you that %s has published the calendar »%s«." : "Mēs jūs vēlējāmies informēt, ka %s publicēja kalendāru »%s«.",
"Open »%s«" : "Atvērt »%s«",
"Cheers!" : "Priekā!",
+ "Upcoming events" : "Nākamie notikumi",
+ "More events" : "Vairāk notikumu",
+ "No more events today" : "Šodien notikumu vairāk nav",
+ "No upcoming events" : "Nav gaidāmu notikumu",
"Calendar" : "Kalendārs",
+ "Appointments" : "Plānotās tikšanās",
"Confirm" : "Apstiprināt",
+ "Where:" : "Kur:",
+ "Comment:" : "Komentārs:",
"A Calendar app for Nextcloud" : "Kalendāra lietotne priekš Nextcloud",
+ "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries." : "Kalendāra lietotne ir lietotāja saskarne Nextcloud CalDAV serverim. Vienkārši sinhronizējiet notikumus no dažādām ierīcēm ar savu Nextcloud un rediģējiet tos tiešsaistē.\n\n* 🚀 **Integrācija ar citām Nextcloud lietotnēm!** Pašlaik ir pieejams Kontaktu saraksts - vairāk nākotnē.\n* 🌐 **WebCal atbalsts!** Vai vēlaties redzēt savas mīļākās komandas spēļu dienas kalendārā? Nav problēmu!\n* 🙋 **Dalībnieki!** Ielūdziet cilvēkus uz savām notikumiem.\n* ⌚️ **Brīvas/Aizņemtas laika vietas!** Redziet, kad jūsu dalībnieki ir pieejami tikšanās.\n* ⏰ **Atgādinājumi!** Saņemiet brīdinājumus par notikumiem pārlūkprogrammā un e-pastā.\n* 🔍 Meklēšana! Atrast savus notikumus viegli.\n* ☑️ Uzdevumi! Redziet uzdevumus ar termiņu tieši kalendārā.\n* 🙈 **Mēs neizgudrojam jaunu riteni!** Balstīts uz lielisko [c-dav bibliotēku](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) un [fullcalendar](https://github.com/fullcalendar/fullcalendar) bibliotēkām.",
+ "Event" : "Notikums",
+ "Create new event" : "Izveidot jaunu notikumu",
"Today" : "Šodien",
"Day" : "Diena",
"Week" : "Nedēļa",
"Month" : "Mēnesis",
+ "Year" : "Gads",
"List" : "Saraksts",
"Preview" : "Priekšskatīt",
"Copy link" : "Kopēt saiti",
"Edit" : "Rediģēt",
"Delete" : "Dzēst",
+ "Edit calendar" : "Rediģēt kalendāru",
"New calendar" : "Jauns kalendārs",
"New calendar with task list" : "Jauns kalendārs ar uzdevumu sarakstu",
"Export" : "Eksportēt",
+ "Trash bin" : "Miskaste",
"Name" : "Vārds",
"Deleted" : "Dzēstie",
"Restore" : "Atjaunot",
"Delete permanently" : "Dzēst pavisam",
+ "Empty trash bin" : "Izdzēst miskastes saturu",
+ "Could not restore calendar or event" : "Nevarēja atjaunot kalendāru vai notikumu",
+ "Do you really want to empty the trash bin?" : "Vai esat pārliecināts, ka vēlaties neatgriezeniski dzēst miskastes saturu?",
"Share link" : "Koplietot saiti",
"Copy public link" : "Kopējiet publisko saiti",
"can edit" : "var rediģēt",
"Share with users or groups" : "Koplietot ar lietotājiem vai grupām",
"No users or groups" : "Nav lietotāji vai grupas",
+ "Share calendar" : "Koplietot kalendāru",
"Save" : "Saglabāt",
"Filename" : "Datnes nosaukums",
"Cancel" : "Atcelt",
+ "_Successfully imported %n event_::_Successfully imported %n events_" : ["Veiksmīgi importēti %n notikumi","Veiksmīgi importēts %n notikums","Veiksmīgi importēti %n notikumi"],
"Automatic" : "Automātisks",
+ "or" : "vai",
"List view" : "Saraksta izkārtojums",
"Actions" : "Darbības",
+ "Create event" : "Izveidot notikumu",
+ "Save edited event" : "Saglabāt rediģēto notikumu",
+ "Delete edited event" : "Dzēst rediģēto notikumu",
+ "Duplicate event" : "Dublēt notikumu",
"Enable birthday calendar" : "Iespējot dzimšanas dienas kalendāru",
+ "Limit the number of events displayed in the monthly view" : "Ierobežot notikumu skaitu, kas tiek parādīti mēneša skatā",
"Show week numbers" : "Rādīt nedēļu numurus",
"Personal availability settings" : "Personiskās pieejamības iestatījumi",
+ "Calendar settings" : "Kalendāra iestatījumi",
+ "Private – only accessible via secret link" : "Privāts – pieejams tikai ar slepeno saiti",
"Appointment name" : "Tikšanās nosaukums",
"Location" : "Vieta",
"Description" : "Apraksts",
+ "Visibility" : "Redzamība",
"to" : "kam",
"Add" : "Pievienot",
"Monday" : "Pirmdiena",
@@ -51,10 +78,15 @@ OC.L10N.register(
"Friday" : "Piektdiena",
"Saturday" : "Sestdiena",
"Sunday" : "Svētdiena",
+ "Add time before and after the event" : "Pievienot laiku pirms un pēc notikuma",
+ "Before the event" : "Pirms notikuma",
+ "After the event" : "Pēc notikuma",
+ "Create appointment" : "Izveidot plānotu tikšanos",
"Update" : "Atjaunināt",
"Your email address" : "Jūsu e-pasta adrese",
"Notification" : "Paziņojums",
"Email" : "E-pasts",
+ "Relative to event" : "Attiecībā uz notikumu",
"Delete file" : "Dzēst datni",
"Choose a file to add as attachment" : "Izvēlēties datni ko pievienot kā pielikumu",
"Available" : "Pieejams",
@@ -63,32 +95,60 @@ OC.L10N.register(
"Accept" : "Pieņemt",
"Decline" : "Noraidīt",
"Tentative" : "Mēģinājums",
+ "Create Talk room for this event" : "Izveidojiet sarunu telpu šim notikumam",
+ "You do not own this calendar, so you cannot add attendees to this event" : "Jums nav īpašnieka tiesības šim kalendāram, tāpēc jūs nevarat pievienot dalībniekus šim notikumam.",
"Send email" : "Sūtīt e-pastu",
+ "Event title" : "Notikuma nosaukums",
"All day" : "Visas dienas",
+ "Cannot modify all-day setting for events that are part of a recurrence-set." : "Nevar modificēt visas dienas iestatījumu notikumiem, kas ir daļa no atkārtojumu kopas.",
"Repeat" : "Atkārtot",
"never" : "nekad",
"after" : "pēc",
+ "This event is the recurrence-exception of a recurrence-set. You cannot add a recurrence-rule to it." : "Šis notikums ir atkārtojuma izņēmums no atkārtojuma kopas. Jūs tam nevarat pievienot atkārtojuma noteikumu.",
+ "The recurrence definition of this event is not fully supported by Nextcloud. If you edit the recurrence-options, certain recurrences may be lost." : "Atkārtojuma definīcija šim notikumam Nextcloud nav pilnībā atbalstīta. Ja jūs rediģēsiet atkārtojuma opcijas, daži atkārtojumi var tikt zaudēti.",
"available" : "pieejams",
"More" : "Vairāk",
"Global" : "Globāls",
"Subscribe" : "Abonēt",
"Personal" : "Personīgs",
"Create a new event" : "Izveidot jaunu notikumu",
+ "Event does not exist" : "Notikums nepastāv",
"Details" : "Detaļas",
"Attendees" : "Apmeklētāji",
"Resources" : "Resursi",
"Close" : "Aizvērt",
"Anniversary" : "Gadadiena",
+ "Midnight on the day the event starts" : "Pusnakts dienā, kad notiek notikums",
+ "_%n day before the event at {formattedHourMinute}_::_%n days before the event at {formattedHourMinute}_" : ["%n dienas pirms notikuma plkst. {formattedHourMinute}","%n diena pirms notikuma plkst. {formattedHourMinute}","%n dienas pirms notikuma plkst. {formattedHourMinute}"],
+ "_%n week before the event at {formattedHourMinute}_::_%n weeks before the event at {formattedHourMinute}_" : ["%n nedēļas pirms notikuma plkst. {formattedHourMinute}","%n nedēļa pirms notikuma plkst. {formattedHourMinute}","%n nedēļas pirms notikuma plkst. {formattedHourMinute}"],
+ "on the day of the event at {formattedHourMinute}" : "notikuma dienā plkst. {formattedHourMinute}",
+ "at the event's start" : "notikuma sākumā",
+ "at the event's end" : "notikuma beigās",
+ "{time} before the event starts" : "{time} pirms notikuma sākuma",
+ "{time} before the event ends" : "{time} pirms notikuma beigām",
+ "{time} after the event starts" : "{time} pēc notikuma sākuma",
+ "{time} after the event ends" : "{time} pēc notikuma beigām",
"Week {number} of {year}" : "{number} nedēļa no {year}",
"Daily" : "Katru dienu",
"Weekly" : "Katru nedēļu",
+ "Untitled event" : "Nenosaukts notikums",
+ "No events to display" : "Nav notikumu ko rādīt",
+ "No events" : "Nav notikumu",
+ "Create a new event or change the visible time-range" : "Izveidot jaunu notikumu vai mainīt redzamo laika diapazonu",
"Other" : "Cits",
"When shared show full event" : "Ja koplietots, tad rādīt pilnu notikumu",
"When shared show only busy" : "Ja koplietots, tad rādīt tikai aizņemts",
- "When shared hide this event" : "Ja koplietots, tad paslēpt notikumu",
+ "When shared hide this event" : "Ja koplietots, tad paslēpt šo notikumu",
+ "The visibility of this event in shared calendars." : "Šī notikuma redzamība koplietotos kalendāros.",
"Status" : "Status",
"Confirmed" : "Apstiprināts",
+ "Confirmation about the overall status of the event." : "Apstiprinājums par kopējo notikuma stāvokli.",
+ "Take this event into account when calculating free-busy information." : "Ņemiet vērā šo notikumu, aprēķinot pieejamību vai aizņemtību.",
"Categories" : "Kategorijas",
+ "Categories help you to structure and organize your events." : "Kategorijas palīdz jums strukturēt un organizēt savus notikumus.",
+ "Special color of this event. Overrides the calendar-color." : "Īpaša notikuma krāsa. Aizstāj kalendāra krāsu.",
+ "Chat room for event" : "Tērzēšanas istaba notikumam",
+ "This is an event reminder." : "Šis ir notikuma atgādinājums.",
"Presentation" : "Prezentācija",
"Talk" : "Runāt",
"Mail" : "E-pasts",
diff --git a/l10n/lv.json b/l10n/lv.json
index 9575ddf23e..721368ab0a 100644
--- a/l10n/lv.json
+++ b/l10n/lv.json
@@ -1,45 +1,72 @@
{ "translations": {
- "%s has published the calendar »%s«" : "%s dalijās ar kalendāru »%s«",
+ "%s has published the calendar »%s«" : "%s dalījās ar kalendāru »%s«",
"Hello," : "Sveicināti,",
"We wanted to inform you that %s has published the calendar »%s«." : "Mēs jūs vēlējāmies informēt, ka %s publicēja kalendāru »%s«.",
"Open »%s«" : "Atvērt »%s«",
"Cheers!" : "Priekā!",
+ "Upcoming events" : "Nākamie notikumi",
+ "More events" : "Vairāk notikumu",
+ "No more events today" : "Šodien notikumu vairāk nav",
+ "No upcoming events" : "Nav gaidāmu notikumu",
"Calendar" : "Kalendārs",
+ "Appointments" : "Plānotās tikšanās",
"Confirm" : "Apstiprināt",
+ "Where:" : "Kur:",
+ "Comment:" : "Komentārs:",
"A Calendar app for Nextcloud" : "Kalendāra lietotne priekš Nextcloud",
+ "The Calendar app is a user interface for Nextcloud's CalDAV server. Easily sync events from various devices with your Nextcloud and edit them online.\n\n* 🚀 **Integration with other Nextcloud apps!** Currently Contacts - more to come.\n* 🌐 **WebCal Support!** Want to see your favorite team’s matchdays in your calendar? No problem!\n* 🙋 **Attendees!** Invite people to your events\n* ⌚️ **Free/Busy!** See when your attendees are available to meet\n* ⏰ **Reminders!** Get alarms for events inside your browser and via email\n* 🔍 Search! Find your events at ease\n* ☑️ Tasks! See tasks with a due date directly in the calendar\n* 🙈 **We’re not reinventing the wheel!** Based on the great [c-dav library](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) and [fullcalendar](https://github.com/fullcalendar/fullcalendar) libraries." : "Kalendāra lietotne ir lietotāja saskarne Nextcloud CalDAV serverim. Vienkārši sinhronizējiet notikumus no dažādām ierīcēm ar savu Nextcloud un rediģējiet tos tiešsaistē.\n\n* 🚀 **Integrācija ar citām Nextcloud lietotnēm!** Pašlaik ir pieejams Kontaktu saraksts - vairāk nākotnē.\n* 🌐 **WebCal atbalsts!** Vai vēlaties redzēt savas mīļākās komandas spēļu dienas kalendārā? Nav problēmu!\n* 🙋 **Dalībnieki!** Ielūdziet cilvēkus uz savām notikumiem.\n* ⌚️ **Brīvas/Aizņemtas laika vietas!** Redziet, kad jūsu dalībnieki ir pieejami tikšanās.\n* ⏰ **Atgādinājumi!** Saņemiet brīdinājumus par notikumiem pārlūkprogrammā un e-pastā.\n* 🔍 Meklēšana! Atrast savus notikumus viegli.\n* ☑️ Uzdevumi! Redziet uzdevumus ar termiņu tieši kalendārā.\n* 🙈 **Mēs neizgudrojam jaunu riteni!** Balstīts uz lielisko [c-dav bibliotēku](https://github.com/nextcloud/cdav-library), [ical.js](https://github.com/mozilla-comm/ical.js) un [fullcalendar](https://github.com/fullcalendar/fullcalendar) bibliotēkām.",
+ "Event" : "Notikums",
+ "Create new event" : "Izveidot jaunu notikumu",
"Today" : "Šodien",
"Day" : "Diena",
"Week" : "Nedēļa",
"Month" : "Mēnesis",
+ "Year" : "Gads",
"List" : "Saraksts",
"Preview" : "Priekšskatīt",
"Copy link" : "Kopēt saiti",
"Edit" : "Rediģēt",
"Delete" : "Dzēst",
+ "Edit calendar" : "Rediģēt kalendāru",
"New calendar" : "Jauns kalendārs",
"New calendar with task list" : "Jauns kalendārs ar uzdevumu sarakstu",
"Export" : "Eksportēt",
+ "Trash bin" : "Miskaste",
"Name" : "Vārds",
"Deleted" : "Dzēstie",
"Restore" : "Atjaunot",
"Delete permanently" : "Dzēst pavisam",
+ "Empty trash bin" : "Izdzēst miskastes saturu",
+ "Could not restore calendar or event" : "Nevarēja atjaunot kalendāru vai notikumu",
+ "Do you really want to empty the trash bin?" : "Vai esat pārliecināts, ka vēlaties neatgriezeniski dzēst miskastes saturu?",
"Share link" : "Koplietot saiti",
"Copy public link" : "Kopējiet publisko saiti",
"can edit" : "var rediģēt",
"Share with users or groups" : "Koplietot ar lietotājiem vai grupām",
"No users or groups" : "Nav lietotāji vai grupas",
+ "Share calendar" : "Koplietot kalendāru",
"Save" : "Saglabāt",
"Filename" : "Datnes nosaukums",
"Cancel" : "Atcelt",
+ "_Successfully imported %n event_::_Successfully imported %n events_" : ["Veiksmīgi importēti %n notikumi","Veiksmīgi importēts %n notikums","Veiksmīgi importēti %n notikumi"],
"Automatic" : "Automātisks",
+ "or" : "vai",
"List view" : "Saraksta izkārtojums",
"Actions" : "Darbības",
+ "Create event" : "Izveidot notikumu",
+ "Save edited event" : "Saglabāt rediģēto notikumu",
+ "Delete edited event" : "Dzēst rediģēto notikumu",
+ "Duplicate event" : "Dublēt notikumu",
"Enable birthday calendar" : "Iespējot dzimšanas dienas kalendāru",
+ "Limit the number of events displayed in the monthly view" : "Ierobežot notikumu skaitu, kas tiek parādīti mēneša skatā",
"Show week numbers" : "Rādīt nedēļu numurus",
"Personal availability settings" : "Personiskās pieejamības iestatījumi",
+ "Calendar settings" : "Kalendāra iestatījumi",
+ "Private – only accessible via secret link" : "Privāts – pieejams tikai ar slepeno saiti",
"Appointment name" : "Tikšanās nosaukums",
"Location" : "Vieta",
"Description" : "Apraksts",
+ "Visibility" : "Redzamība",
"to" : "kam",
"Add" : "Pievienot",
"Monday" : "Pirmdiena",
@@ -49,10 +76,15 @@
"Friday" : "Piektdiena",
"Saturday" : "Sestdiena",
"Sunday" : "Svētdiena",
+ "Add time before and after the event" : "Pievienot laiku pirms un pēc notikuma",
+ "Before the event" : "Pirms notikuma",
+ "After the event" : "Pēc notikuma",
+ "Create appointment" : "Izveidot plānotu tikšanos",
"Update" : "Atjaunināt",
"Your email address" : "Jūsu e-pasta adrese",
"Notification" : "Paziņojums",
"Email" : "E-pasts",
+ "Relative to event" : "Attiecībā uz notikumu",
"Delete file" : "Dzēst datni",
"Choose a file to add as attachment" : "Izvēlēties datni ko pievienot kā pielikumu",
"Available" : "Pieejams",
@@ -61,32 +93,60 @@
"Accept" : "Pieņemt",
"Decline" : "Noraidīt",
"Tentative" : "Mēģinājums",
+ "Create Talk room for this event" : "Izveidojiet sarunu telpu šim notikumam",
+ "You do not own this calendar, so you cannot add attendees to this event" : "Jums nav īpašnieka tiesības šim kalendāram, tāpēc jūs nevarat pievienot dalībniekus šim notikumam.",
"Send email" : "Sūtīt e-pastu",
+ "Event title" : "Notikuma nosaukums",
"All day" : "Visas dienas",
+ "Cannot modify all-day setting for events that are part of a recurrence-set." : "Nevar modificēt visas dienas iestatījumu notikumiem, kas ir daļa no atkārtojumu kopas.",
"Repeat" : "Atkārtot",
"never" : "nekad",
"after" : "pēc",
+ "This event is the recurrence-exception of a recurrence-set. You cannot add a recurrence-rule to it." : "Šis notikums ir atkārtojuma izņēmums no atkārtojuma kopas. Jūs tam nevarat pievienot atkārtojuma noteikumu.",
+ "The recurrence definition of this event is not fully supported by Nextcloud. If you edit the recurrence-options, certain recurrences may be lost." : "Atkārtojuma definīcija šim notikumam Nextcloud nav pilnībā atbalstīta. Ja jūs rediģēsiet atkārtojuma opcijas, daži atkārtojumi var tikt zaudēti.",
"available" : "pieejams",
"More" : "Vairāk",
"Global" : "Globāls",
"Subscribe" : "Abonēt",
"Personal" : "Personīgs",
"Create a new event" : "Izveidot jaunu notikumu",
+ "Event does not exist" : "Notikums nepastāv",
"Details" : "Detaļas",
"Attendees" : "Apmeklētāji",
"Resources" : "Resursi",
"Close" : "Aizvērt",
"Anniversary" : "Gadadiena",
+ "Midnight on the day the event starts" : "Pusnakts dienā, kad notiek notikums",
+ "_%n day before the event at {formattedHourMinute}_::_%n days before the event at {formattedHourMinute}_" : ["%n dienas pirms notikuma plkst. {formattedHourMinute}","%n diena pirms notikuma plkst. {formattedHourMinute}","%n dienas pirms notikuma plkst. {formattedHourMinute}"],
+ "_%n week before the event at {formattedHourMinute}_::_%n weeks before the event at {formattedHourMinute}_" : ["%n nedēļas pirms notikuma plkst. {formattedHourMinute}","%n nedēļa pirms notikuma plkst. {formattedHourMinute}","%n nedēļas pirms notikuma plkst. {formattedHourMinute}"],
+ "on the day of the event at {formattedHourMinute}" : "notikuma dienā plkst. {formattedHourMinute}",
+ "at the event's start" : "notikuma sākumā",
+ "at the event's end" : "notikuma beigās",
+ "{time} before the event starts" : "{time} pirms notikuma sākuma",
+ "{time} before the event ends" : "{time} pirms notikuma beigām",
+ "{time} after the event starts" : "{time} pēc notikuma sākuma",
+ "{time} after the event ends" : "{time} pēc notikuma beigām",
"Week {number} of {year}" : "{number} nedēļa no {year}",
"Daily" : "Katru dienu",
"Weekly" : "Katru nedēļu",
+ "Untitled event" : "Nenosaukts notikums",
+ "No events to display" : "Nav notikumu ko rādīt",
+ "No events" : "Nav notikumu",
+ "Create a new event or change the visible time-range" : "Izveidot jaunu notikumu vai mainīt redzamo laika diapazonu",
"Other" : "Cits",
"When shared show full event" : "Ja koplietots, tad rādīt pilnu notikumu",
"When shared show only busy" : "Ja koplietots, tad rādīt tikai aizņemts",
- "When shared hide this event" : "Ja koplietots, tad paslēpt notikumu",
+ "When shared hide this event" : "Ja koplietots, tad paslēpt šo notikumu",
+ "The visibility of this event in shared calendars." : "Šī notikuma redzamība koplietotos kalendāros.",
"Status" : "Status",
"Confirmed" : "Apstiprināts",
+ "Confirmation about the overall status of the event." : "Apstiprinājums par kopējo notikuma stāvokli.",
+ "Take this event into account when calculating free-busy information." : "Ņemiet vērā šo notikumu, aprēķinot pieejamību vai aizņemtību.",
"Categories" : "Kategorijas",
+ "Categories help you to structure and organize your events." : "Kategorijas palīdz jums strukturēt un organizēt savus notikumus.",
+ "Special color of this event. Overrides the calendar-color." : "Īpaša notikuma krāsa. Aizstāj kalendāra krāsu.",
+ "Chat room for event" : "Tērzēšanas istaba notikumam",
+ "This is an event reminder." : "Šis ir notikuma atgādinājums.",
"Presentation" : "Prezentācija",
"Talk" : "Runāt",
"Mail" : "E-pasts",
diff --git a/l10n/mk.js b/l10n/mk.js
index b0428982d4..8bfc11eafc 100644
--- a/l10n/mk.js
+++ b/l10n/mk.js
@@ -196,7 +196,7 @@ OC.L10N.register(
"_{duration} hour_::_{duration} hours_" : ["1 час","{duration} часа"],
"_{duration} day_::_{duration} days_" : ["1 ден","{duration} дена"],
"_{duration} week_::_{duration} weeks_" : ["1 недела","{duration} недели"],
- "_{duration} month_::_{duration} months_" : ["1 месец","{duration} месеци"],
+ "_{duration} month_::_{duration} months_" : ["{duration} месец","{duration} месеци"],
"_{duration} year_::_{duration} years_" : ["1 година","{duration} години"],
"To configure appointments, add your email address in personal settings." : "За да ги конфигурирате состаноците, додајте ја вашата адреса за е-пошта во личните поставки.",
"Public – shown on the profile page" : "Јавен - Прикажи на профилната страница",
@@ -384,7 +384,6 @@ OC.L10N.register(
"Subscribed" : "Претплатени",
"Subscribe" : "Претплата",
"Holidays in {region}" : "Празници во {region}",
- "An error occurred, unable to create the public holiday calendar." : "Настана грешка, неможе да се креира календар за државни празници.",
"Select date" : "Избери датум",
"Select slot" : "Избери термин",
"No slots available" : "Нема достапни термини",
@@ -457,7 +456,7 @@ OC.L10N.register(
"Yearly" : "Годишно",
"_Every %n day_::_Every %n days_" : ["Секој ден","Секој %n дена"],
"_Every %n week_::_Every %n weeks_" : ["Секоја недела","Секој %n недели"],
- "_Every %n month_::_Every %n months_" : ["Секој месец","Секој %n месеци"],
+ "_Every %n month_::_Every %n months_" : ["Секој %n месец","Секој %n месеци"],
"_Every %n year_::_Every %n years_" : ["Секоја година","Секој %n години"],
"_on {weekday}_::_on {weekdays}_" : ["во {weekday}","во {weekdays}"],
"_on day {dayOfMonthList}_::_on days {dayOfMonthList}_" : ["на ден {dayOfMonthList}","на денови {dayOfMonthList}"],
diff --git a/l10n/mk.json b/l10n/mk.json
index 8f67582046..3eb87c5951 100644
--- a/l10n/mk.json
+++ b/l10n/mk.json
@@ -194,7 +194,7 @@
"_{duration} hour_::_{duration} hours_" : ["1 час","{duration} часа"],
"_{duration} day_::_{duration} days_" : ["1 ден","{duration} дена"],
"_{duration} week_::_{duration} weeks_" : ["1 недела","{duration} недели"],
- "_{duration} month_::_{duration} months_" : ["1 месец","{duration} месеци"],
+ "_{duration} month_::_{duration} months_" : ["{duration} месец","{duration} месеци"],
"_{duration} year_::_{duration} years_" : ["1 година","{duration} години"],
"To configure appointments, add your email address in personal settings." : "За да ги конфигурирате состаноците, додајте ја вашата адреса за е-пошта во личните поставки.",
"Public – shown on the profile page" : "Јавен - Прикажи на профилната страница",
@@ -382,7 +382,6 @@
"Subscribed" : "Претплатени",
"Subscribe" : "Претплата",
"Holidays in {region}" : "Празници во {region}",
- "An error occurred, unable to create the public holiday calendar." : "Настана грешка, неможе да се креира календар за државни празници.",
"Select date" : "Избери датум",
"Select slot" : "Избери термин",
"No slots available" : "Нема достапни термини",
@@ -455,7 +454,7 @@
"Yearly" : "Годишно",
"_Every %n day_::_Every %n days_" : ["Секој ден","Секој %n дена"],
"_Every %n week_::_Every %n weeks_" : ["Секоја недела","Секој %n недели"],
- "_Every %n month_::_Every %n months_" : ["Секој месец","Секој %n месеци"],
+ "_Every %n month_::_Every %n months_" : ["Секој %n месец","Секој %n месеци"],
"_Every %n year_::_Every %n years_" : ["Секоја година","Секој %n години"],
"_on {weekday}_::_on {weekdays}_" : ["во {weekday}","во {weekdays}"],
"_on day {dayOfMonthList}_::_on days {dayOfMonthList}_" : ["на ден {dayOfMonthList}","на денови {dayOfMonthList}"],
diff --git a/l10n/nl.js b/l10n/nl.js
index fa938bce24..11ec87734e 100644
--- a/l10n/nl.js
+++ b/l10n/nl.js
@@ -386,7 +386,6 @@ OC.L10N.register(
"Subscribed" : "Geabonneerd",
"Subscribe" : "Abonneren",
"Holidays in {region}" : "Vakanties in {regio}",
- "An error occurred, unable to create the public holiday calendar." : "Er is een fout opgetreden, het is niet mogelijk om de feestdagenkalender te maken.",
"Select date" : "Selecteer datum",
"Select slot" : "Selecteer tijdslot",
"No slots available" : "Geen tijdsloten beschikbaar",
diff --git a/l10n/nl.json b/l10n/nl.json
index d8df44881f..ad37c24d51 100644
--- a/l10n/nl.json
+++ b/l10n/nl.json
@@ -384,7 +384,6 @@
"Subscribed" : "Geabonneerd",
"Subscribe" : "Abonneren",
"Holidays in {region}" : "Vakanties in {regio}",
- "An error occurred, unable to create the public holiday calendar." : "Er is een fout opgetreden, het is niet mogelijk om de feestdagenkalender te maken.",
"Select date" : "Selecteer datum",
"Select slot" : "Selecteer tijdslot",
"No slots available" : "Geen tijdsloten beschikbaar",
diff --git a/l10n/pl.js b/l10n/pl.js
index 5ab2a55443..3c5a37caa8 100644
--- a/l10n/pl.js
+++ b/l10n/pl.js
@@ -386,7 +386,6 @@ OC.L10N.register(
"Subscribed" : "Zasubskrybowano",
"Subscribe" : "Subskrybuj",
"Holidays in {region}" : "Święta w {region}",
- "An error occurred, unable to create the public holiday calendar." : "Wystąpił błąd. Nie można utworzyć kalendarza świąt państwowych.",
"Select date" : "Wybierz datę",
"Select slot" : "Wybierz przedział czasowy",
"No slots available" : "Brak dostępnych terminów",
diff --git a/l10n/pl.json b/l10n/pl.json
index 2e401d986e..76e122caf7 100644
--- a/l10n/pl.json
+++ b/l10n/pl.json
@@ -384,7 +384,6 @@
"Subscribed" : "Zasubskrybowano",
"Subscribe" : "Subskrybuj",
"Holidays in {region}" : "Święta w {region}",
- "An error occurred, unable to create the public holiday calendar." : "Wystąpił błąd. Nie można utworzyć kalendarza świąt państwowych.",
"Select date" : "Wybierz datę",
"Select slot" : "Wybierz przedział czasowy",
"No slots available" : "Brak dostępnych terminów",
diff --git a/l10n/pt_BR.js b/l10n/pt_BR.js
index 4d5f00af1f..a8d89b4991 100644
--- a/l10n/pt_BR.js
+++ b/l10n/pt_BR.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Nova subscrição do link (somente leitura)",
"Creating subscription …" : "Criando assinatura...",
"Add public holiday calendar" : "Adicionar calendário de feriados",
+ "Add custom public calendar" : "Adicione um calendário público personalizado",
"An error occurred, unable to create the calendar." : "Erro ao criar o calendário.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Digite um link válido (começando com http://, https://, webcal://, ou webcals://)",
"Copy subscription link" : "Copiar link de inscrição",
@@ -309,7 +310,10 @@ OC.L10N.register(
"Non-participant" : "Não participante",
"Remove group" : "Excluir grupo",
"Remove attendee" : "Remover participante",
+ "_%n member_::_%n members_" : ["%n membros","%n membros","%n membros"],
+ "Search for emails, users, contacts or groups" : "Pesquise e-mails, usuários, contatos ou grupos",
"No match found" : "Nenhuma correspondência encontrada",
+ "Note that members of circles get invited but are not synced yet." : "Observe que os membros dos círculos são convidados, mas ainda não estão sincronizados.",
"(organizer)" : "(organizador)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Para enviar convites e gerenciar respostas, [linkopen]adicione seu endereço de e-mail nas configurações pessoais[linkclose].",
"Remove color" : "Remover cor",
@@ -380,12 +384,17 @@ OC.L10N.register(
"Type to search time zone" : "Digite para pesquisar o fuso horário",
"Global" : "Global",
"Public holiday calendars" : "Calendários de feriados",
+ "Public calendars" : "Adicione um calendário público personalizado",
+ "No valid public calendars configured" : "Nenhum calendário público válido configurado",
+ "Speak to the server administrator to resolve this issue." : "Fale com o administrador do servidor para resolver esse problema.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Os calendários de feriados públicos são fornecidos pelo Thunderbird. Os dados do calendário serão baixados de {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Esses calendários públicos são sugeridos pelo administrador do servidor. Os dados do calendário serão baixados do respectivo site.",
"By {authors}" : "Por {authors}",
"Subscribed" : "Inscrita",
"Subscribe" : "Se inscrever",
"Holidays in {region}" : "Feriados em {region}",
- "An error occurred, unable to create the public holiday calendar." : "Ocorreu um erro, não foi possível criar o calendário de feriados.",
+ "An error occurred, unable to read public calendars." : "Ocorreu um erro: não foi possível ler calendários públicos.",
+ "An error occurred, unable to subscribe to calendar." : "Ocorreu um erro, não foi possível assinar o calendário.",
"Select date" : "Selecionar data",
"Select slot" : "Selecionar vaga",
"No slots available" : "Nenhuma vaga disponível",
diff --git a/l10n/pt_BR.json b/l10n/pt_BR.json
index d0fdb89c1c..9708f0569e 100644
--- a/l10n/pt_BR.json
+++ b/l10n/pt_BR.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Nova subscrição do link (somente leitura)",
"Creating subscription …" : "Criando assinatura...",
"Add public holiday calendar" : "Adicionar calendário de feriados",
+ "Add custom public calendar" : "Adicione um calendário público personalizado",
"An error occurred, unable to create the calendar." : "Erro ao criar o calendário.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Digite um link válido (começando com http://, https://, webcal://, ou webcals://)",
"Copy subscription link" : "Copiar link de inscrição",
@@ -307,7 +308,10 @@
"Non-participant" : "Não participante",
"Remove group" : "Excluir grupo",
"Remove attendee" : "Remover participante",
+ "_%n member_::_%n members_" : ["%n membros","%n membros","%n membros"],
+ "Search for emails, users, contacts or groups" : "Pesquise e-mails, usuários, contatos ou grupos",
"No match found" : "Nenhuma correspondência encontrada",
+ "Note that members of circles get invited but are not synced yet." : "Observe que os membros dos círculos são convidados, mas ainda não estão sincronizados.",
"(organizer)" : "(organizador)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Para enviar convites e gerenciar respostas, [linkopen]adicione seu endereço de e-mail nas configurações pessoais[linkclose].",
"Remove color" : "Remover cor",
@@ -378,12 +382,17 @@
"Type to search time zone" : "Digite para pesquisar o fuso horário",
"Global" : "Global",
"Public holiday calendars" : "Calendários de feriados",
+ "Public calendars" : "Adicione um calendário público personalizado",
+ "No valid public calendars configured" : "Nenhum calendário público válido configurado",
+ "Speak to the server administrator to resolve this issue." : "Fale com o administrador do servidor para resolver esse problema.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Os calendários de feriados públicos são fornecidos pelo Thunderbird. Os dados do calendário serão baixados de {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Esses calendários públicos são sugeridos pelo administrador do servidor. Os dados do calendário serão baixados do respectivo site.",
"By {authors}" : "Por {authors}",
"Subscribed" : "Inscrita",
"Subscribe" : "Se inscrever",
"Holidays in {region}" : "Feriados em {region}",
- "An error occurred, unable to create the public holiday calendar." : "Ocorreu um erro, não foi possível criar o calendário de feriados.",
+ "An error occurred, unable to read public calendars." : "Ocorreu um erro: não foi possível ler calendários públicos.",
+ "An error occurred, unable to subscribe to calendar." : "Ocorreu um erro, não foi possível assinar o calendário.",
"Select date" : "Selecionar data",
"Select slot" : "Selecionar vaga",
"No slots available" : "Nenhuma vaga disponível",
diff --git a/l10n/ro.js b/l10n/ro.js
index f67203dddc..a31d8851d1 100644
--- a/l10n/ro.js
+++ b/l10n/ro.js
@@ -383,7 +383,6 @@ OC.L10N.register(
"Subscribed" : "Subscris",
"Subscribe" : "Abonare",
"Holidays in {region}" : "Sărbători în {region}",
- "An error occurred, unable to create the public holiday calendar." : "A apărut o eroare la crearea calendarului de sărbători legale.",
"Select date" : "Selectați data",
"Select slot" : "Selectați intervalul",
"No slots available" : "Nu sunt intervale disponibile",
diff --git a/l10n/ro.json b/l10n/ro.json
index 4d8b6f37ca..fe6463ad62 100644
--- a/l10n/ro.json
+++ b/l10n/ro.json
@@ -381,7 +381,6 @@
"Subscribed" : "Subscris",
"Subscribe" : "Abonare",
"Holidays in {region}" : "Sărbători în {region}",
- "An error occurred, unable to create the public holiday calendar." : "A apărut o eroare la crearea calendarului de sărbători legale.",
"Select date" : "Selectați data",
"Select slot" : "Selectați intervalul",
"No slots available" : "Nu sunt intervale disponibile",
diff --git a/l10n/ru.js b/l10n/ru.js
index 201423bf87..a86f0fda43 100644
--- a/l10n/ru.js
+++ b/l10n/ru.js
@@ -384,7 +384,6 @@ OC.L10N.register(
"Subscribed" : "Подписано",
"Subscribe" : "Подписаться",
"Holidays in {region}" : "Праздники в {region}",
- "An error occurred, unable to create the public holiday calendar." : "Произошла ошибка, не удалось создать общий календарь праздников.",
"Select date" : "Выбрать дату",
"Select slot" : "Выбрать слот",
"No slots available" : "Нет свободных мест",
diff --git a/l10n/ru.json b/l10n/ru.json
index 2fd6a00102..702066ba7f 100644
--- a/l10n/ru.json
+++ b/l10n/ru.json
@@ -382,7 +382,6 @@
"Subscribed" : "Подписано",
"Subscribe" : "Подписаться",
"Holidays in {region}" : "Праздники в {region}",
- "An error occurred, unable to create the public holiday calendar." : "Произошла ошибка, не удалось создать общий календарь праздников.",
"Select date" : "Выбрать дату",
"Select slot" : "Выбрать слот",
"No slots available" : "Нет свободных мест",
diff --git a/l10n/sl.js b/l10n/sl.js
index 6ed19b1d4e..fa07a10cb7 100644
--- a/l10n/sl.js
+++ b/l10n/sl.js
@@ -382,7 +382,6 @@ OC.L10N.register(
"Subscribed" : "Naročeno",
"Subscribe" : "Naročilo",
"Holidays in {region}" : "Prazniki v regiji {region}",
- "An error occurred, unable to create the public holiday calendar." : "Prišlo je do napake zato koledarja javnih praznikov ni mogoče ustvariti.",
"Select date" : "Izbor datuma",
"Select slot" : "Izbor časovnega termina",
"No slots available" : "Ni razpoložljivih časovnih terminov",
diff --git a/l10n/sl.json b/l10n/sl.json
index 980bde442e..bd76594f6c 100644
--- a/l10n/sl.json
+++ b/l10n/sl.json
@@ -380,7 +380,6 @@
"Subscribed" : "Naročeno",
"Subscribe" : "Naročilo",
"Holidays in {region}" : "Prazniki v regiji {region}",
- "An error occurred, unable to create the public holiday calendar." : "Prišlo je do napake zato koledarja javnih praznikov ni mogoče ustvariti.",
"Select date" : "Izbor datuma",
"Select slot" : "Izbor časovnega termina",
"No slots available" : "Ni razpoložljivih časovnih terminov",
diff --git a/l10n/sr.js b/l10n/sr.js
index 9b825f8421..e855771064 100644
--- a/l10n/sr.js
+++ b/l10n/sr.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Нова претплата преко линка (само-за-читање)",
"Creating subscription …" : "Претплата се креира …",
"Add public holiday calendar" : "Додај календар државних празника",
+ "Add custom public calendar" : "Додај прилагођени јавни календар",
"An error occurred, unable to create the calendar." : "Дошло је до грешке, календар не може да се креира.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Молимо вас да унесете исправан линк (који полиње са http://, https://, webcal://, или webcals://)",
"Copy subscription link" : "Копирај линк за претплату",
@@ -383,12 +384,17 @@ OC.L10N.register(
"Type to search time zone" : "Куцајте да потражите временску зону",
"Global" : "Цео свет",
"Public holiday calendars" : "Календари државних празника",
+ "Public calendars" : "Јавни календари",
+ "No valid public calendars configured" : "Није подешен ниједан исправан јавни календар",
+ "Speak to the server administrator to resolve this issue." : "Да бисте решили овај проблем, разговарајте са администратором сервера.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Календаре државних празника обезбеђује Thunderbird. Подаци за календар ће да се преузму са {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Администратор сервера предлаже ове јавне календаре. Подаци за календар ће се преузети са одговарајућег веб сајта.",
"By {authors}" : "Урадили {authors}",
"Subscribed" : "Претплаћен",
"Subscribe" : "Претплати се",
"Holidays in {region}" : "Празници у {region}",
- "An error occurred, unable to create the public holiday calendar." : "Дошло је до грешке, календар државних празника не може да се креира.",
+ "An error occurred, unable to read public calendars." : "Дошло је до грешке, не могу да се прочитају јавни календари.",
+ "An error occurred, unable to subscribe to calendar." : "Дошло је до грешке, не може да се претплати на календар.",
"Select date" : "Изаберите датум",
"Select slot" : "Изаберите термин",
"No slots available" : "Нема доступних термина",
diff --git a/l10n/sr.json b/l10n/sr.json
index 48ddaf492a..11f4afb8aa 100644
--- a/l10n/sr.json
+++ b/l10n/sr.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Нова претплата преко линка (само-за-читање)",
"Creating subscription …" : "Претплата се креира …",
"Add public holiday calendar" : "Додај календар државних празника",
+ "Add custom public calendar" : "Додај прилагођени јавни календар",
"An error occurred, unable to create the calendar." : "Дошло је до грешке, календар не може да се креира.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Молимо вас да унесете исправан линк (који полиње са http://, https://, webcal://, или webcals://)",
"Copy subscription link" : "Копирај линк за претплату",
@@ -381,12 +382,17 @@
"Type to search time zone" : "Куцајте да потражите временску зону",
"Global" : "Цео свет",
"Public holiday calendars" : "Календари државних празника",
+ "Public calendars" : "Јавни календари",
+ "No valid public calendars configured" : "Није подешен ниједан исправан јавни календар",
+ "Speak to the server administrator to resolve this issue." : "Да бисте решили овај проблем, разговарајте са администратором сервера.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Календаре државних празника обезбеђује Thunderbird. Подаци за календар ће да се преузму са {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Администратор сервера предлаже ове јавне календаре. Подаци за календар ће се преузети са одговарајућег веб сајта.",
"By {authors}" : "Урадили {authors}",
"Subscribed" : "Претплаћен",
"Subscribe" : "Претплати се",
"Holidays in {region}" : "Празници у {region}",
- "An error occurred, unable to create the public holiday calendar." : "Дошло је до грешке, календар државних празника не може да се креира.",
+ "An error occurred, unable to read public calendars." : "Дошло је до грешке, не могу да се прочитају јавни календари.",
+ "An error occurred, unable to subscribe to calendar." : "Дошло је до грешке, не може да се претплати на календар.",
"Select date" : "Изаберите датум",
"Select slot" : "Изаберите термин",
"No slots available" : "Нема доступних термина",
diff --git a/l10n/sv.js b/l10n/sv.js
index 4909c4ed94..de065c5aff 100644
--- a/l10n/sv.js
+++ b/l10n/sv.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Ny prenumeration från länk (skrivskyddad)",
"Creating subscription …" : "Skapar prenumeration …",
"Add public holiday calendar" : "Lägg till helgdagskalender",
+ "Add custom public calendar" : "Lägg till anpassad publik kalender",
"An error occurred, unable to create the calendar." : "Ett fel inträffade, kunde inte skapa kalender.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Ange en giltig länk (startar med http://, https://, webcal://, eller webcals://)",
"Copy subscription link" : "Kopiera prenumerationslänk",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Välj en fil att lägga som bilaga",
"Choose a file to share as a link" : "Välj en fil att dela som länk",
"Attachment {name} already exist!" : "Bilagan {name} finns redan!",
+ "Could not upload attachment(s)" : "Det gick inte att ladda upp bilagor",
"_{count} attachment_::_{count} attachments_" : ["{count} bilaga","{count} bilagor"],
"Invitation accepted" : "Inbjudan accepterad",
"Available" : "Tillgänglig",
@@ -383,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Skriv för att söka tidszon",
"Global" : "Global",
"Public holiday calendars" : "Helgdagskalendrar",
+ "Public calendars" : "Publika kalendrar",
+ "No valid public calendars configured" : "Inga giltiga publika kalendrar konfigurerade",
+ "Speak to the server administrator to resolve this issue." : "Kontakta serveradministratören för att lösa detta problem.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Helgdagskalendrar tillhandahålls av Thunderbird. Kalenderdata kommer att laddas ner från {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Dessa publika kalendrar föreslås av serveradministratören. Kalenderdata kommer att hämtas från respektive webbplats.",
"By {authors}" : "Av {authors}",
"Subscribed" : "Prenumeration aktiverad",
"Subscribe" : "Prenumerera",
"Holidays in {region}" : "Helgdagar i {region}",
- "An error occurred, unable to create the public holiday calendar." : "Ett fel uppstod, det gick inte att skapa helgdagskalendern.",
+ "An error occurred, unable to read public calendars." : "Ett fel inträffade, kan inte läsa publika kalendrar.",
+ "An error occurred, unable to subscribe to calendar." : "Ett fel inträffade, det går inte att prenumerera på kalendern.",
"Select date" : "Välj datum",
"Select slot" : "Välj tid",
"No slots available" : "Inga tider tillgängliga",
diff --git a/l10n/sv.json b/l10n/sv.json
index dd690f53cf..ac32b7f356 100644
--- a/l10n/sv.json
+++ b/l10n/sv.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Ny prenumeration från länk (skrivskyddad)",
"Creating subscription …" : "Skapar prenumeration …",
"Add public holiday calendar" : "Lägg till helgdagskalender",
+ "Add custom public calendar" : "Lägg till anpassad publik kalender",
"An error occurred, unable to create the calendar." : "Ett fel inträffade, kunde inte skapa kalender.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Ange en giltig länk (startar med http://, https://, webcal://, eller webcals://)",
"Copy subscription link" : "Kopiera prenumerationslänk",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Välj en fil att lägga som bilaga",
"Choose a file to share as a link" : "Välj en fil att dela som länk",
"Attachment {name} already exist!" : "Bilagan {name} finns redan!",
+ "Could not upload attachment(s)" : "Det gick inte att ladda upp bilagor",
"_{count} attachment_::_{count} attachments_" : ["{count} bilaga","{count} bilagor"],
"Invitation accepted" : "Inbjudan accepterad",
"Available" : "Tillgänglig",
@@ -381,12 +383,17 @@
"Type to search time zone" : "Skriv för att söka tidszon",
"Global" : "Global",
"Public holiday calendars" : "Helgdagskalendrar",
+ "Public calendars" : "Publika kalendrar",
+ "No valid public calendars configured" : "Inga giltiga publika kalendrar konfigurerade",
+ "Speak to the server administrator to resolve this issue." : "Kontakta serveradministratören för att lösa detta problem.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Helgdagskalendrar tillhandahålls av Thunderbird. Kalenderdata kommer att laddas ner från {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Dessa publika kalendrar föreslås av serveradministratören. Kalenderdata kommer att hämtas från respektive webbplats.",
"By {authors}" : "Av {authors}",
"Subscribed" : "Prenumeration aktiverad",
"Subscribe" : "Prenumerera",
"Holidays in {region}" : "Helgdagar i {region}",
- "An error occurred, unable to create the public holiday calendar." : "Ett fel uppstod, det gick inte att skapa helgdagskalendern.",
+ "An error occurred, unable to read public calendars." : "Ett fel inträffade, kan inte läsa publika kalendrar.",
+ "An error occurred, unable to subscribe to calendar." : "Ett fel inträffade, det går inte att prenumerera på kalendern.",
"Select date" : "Välj datum",
"Select slot" : "Välj tid",
"No slots available" : "Inga tider tillgängliga",
diff --git a/l10n/tr.js b/l10n/tr.js
index a9b1c3cb1b..66d1a9d5ae 100644
--- a/l10n/tr.js
+++ b/l10n/tr.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Bağlantıdan yeni abonelik (salt okunur)",
"Creating subscription …" : "Abonelik oluşturuluyor …",
"Add public holiday calendar" : "Resmi tatil takvimi ekle",
+ "Add custom public calendar" : "Özel herkese açık takvim ekle",
"An error occurred, unable to create the calendar." : "Bir sorun çıktı. Takvim eklenemedi.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Lütfen geçerli bir bağlantı yazın (http://, https://, webcal:// ya da webcals:// ile başlayan)",
"Copy subscription link" : "Abonelik bağlantısını kopyala",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "Ek dosya olarak eklenecek dosyayı seçin",
"Choose a file to share as a link" : "Bağlantı olarak paylaşılacak bir dosya seçin",
"Attachment {name} already exist!" : "{name} ek dosyası zaten var!",
+ "Could not upload attachment(s)" : "Ek dosyalar yüklenemedi",
"_{count} attachment_::_{count} attachments_" : ["{count} ek dosya","{count} ek dosya"],
"Invitation accepted" : "Çağrı onaylandı",
"Available" : "Uygun",
@@ -310,7 +312,9 @@ OC.L10N.register(
"Remove group" : "Grubu sil",
"Remove attendee" : "Katılımcıyı çıkar",
"_%n member_::_%n members_" : ["%n üye","%n üye"],
+ "Search for emails, users, contacts or groups" : "E-posta, kullanıcı, kişi ya da grup arayın",
"No match found" : "Herhangi bir sonuç bulunamadı",
+ "Note that members of circles get invited but are not synced yet." : "Çevre üyelerinin çağrıldığını ancak henüz eşitlenmediğini unutmayın.",
"(organizer)" : "(düzenleyen)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Çağrı göndermek ve yanıtları işlemek için, [linkopen]kişisel ayarlar bölümünden e-posta adresinizi ekleyin[linkclose].",
"Remove color" : "Rengi kaldır",
@@ -381,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "Saat dilimi aramak için yazmaya başlayın",
"Global" : "Genel",
"Public holiday calendars" : "Resmi tatil takvimleri",
+ "Public calendars" : "Herkese açık takvimler",
+ "No valid public calendars configured" : "Yapılandırılmış geçerli bir herkese açık takvim yok",
+ "Speak to the server administrator to resolve this issue." : "Lütfen bu sorunu çözmesi için sunucu yöneticinizle görüşün.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Resmi tatil takvimleri Thunderbird tarafından sağlanır. Takvim verileri {website} üzerinden indirilir",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Sunucu yöneticisi şu herkese açık takvimleri öneriyor. Takvim verileri ilgili siteden indirilir.",
"By {authors}" : "{authors} tarafından",
"Subscribed" : "Abone olundu",
"Subscribe" : "Abone ol",
"Holidays in {region}" : "{region} tatilleri",
- "An error occurred, unable to create the public holiday calendar." : "Bir sorun çıktı. Resmi tatil takvimi eklenemedi.",
+ "An error occurred, unable to read public calendars." : "Bir sorun çıktı. Herkese açık takvimler okunamadı.",
+ "An error occurred, unable to subscribe to calendar." : "Bir sorun çıktı. Takvime abone olunamadı.",
"Select date" : "Tarih seçin",
"Select slot" : "Aralık seçin",
"No slots available" : "Seçilebilecek bir aralık yok",
diff --git a/l10n/tr.json b/l10n/tr.json
index 30529e4935..dd0e1d1eeb 100644
--- a/l10n/tr.json
+++ b/l10n/tr.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Bağlantıdan yeni abonelik (salt okunur)",
"Creating subscription …" : "Abonelik oluşturuluyor …",
"Add public holiday calendar" : "Resmi tatil takvimi ekle",
+ "Add custom public calendar" : "Özel herkese açık takvim ekle",
"An error occurred, unable to create the calendar." : "Bir sorun çıktı. Takvim eklenemedi.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Lütfen geçerli bir bağlantı yazın (http://, https://, webcal:// ya da webcals:// ile başlayan)",
"Copy subscription link" : "Abonelik bağlantısını kopyala",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "Ek dosya olarak eklenecek dosyayı seçin",
"Choose a file to share as a link" : "Bağlantı olarak paylaşılacak bir dosya seçin",
"Attachment {name} already exist!" : "{name} ek dosyası zaten var!",
+ "Could not upload attachment(s)" : "Ek dosyalar yüklenemedi",
"_{count} attachment_::_{count} attachments_" : ["{count} ek dosya","{count} ek dosya"],
"Invitation accepted" : "Çağrı onaylandı",
"Available" : "Uygun",
@@ -308,7 +310,9 @@
"Remove group" : "Grubu sil",
"Remove attendee" : "Katılımcıyı çıkar",
"_%n member_::_%n members_" : ["%n üye","%n üye"],
+ "Search for emails, users, contacts or groups" : "E-posta, kullanıcı, kişi ya da grup arayın",
"No match found" : "Herhangi bir sonuç bulunamadı",
+ "Note that members of circles get invited but are not synced yet." : "Çevre üyelerinin çağrıldığını ancak henüz eşitlenmediğini unutmayın.",
"(organizer)" : "(düzenleyen)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Çağrı göndermek ve yanıtları işlemek için, [linkopen]kişisel ayarlar bölümünden e-posta adresinizi ekleyin[linkclose].",
"Remove color" : "Rengi kaldır",
@@ -379,12 +383,17 @@
"Type to search time zone" : "Saat dilimi aramak için yazmaya başlayın",
"Global" : "Genel",
"Public holiday calendars" : "Resmi tatil takvimleri",
+ "Public calendars" : "Herkese açık takvimler",
+ "No valid public calendars configured" : "Yapılandırılmış geçerli bir herkese açık takvim yok",
+ "Speak to the server administrator to resolve this issue." : "Lütfen bu sorunu çözmesi için sunucu yöneticinizle görüşün.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Resmi tatil takvimleri Thunderbird tarafından sağlanır. Takvim verileri {website} üzerinden indirilir",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Sunucu yöneticisi şu herkese açık takvimleri öneriyor. Takvim verileri ilgili siteden indirilir.",
"By {authors}" : "{authors} tarafından",
"Subscribed" : "Abone olundu",
"Subscribe" : "Abone ol",
"Holidays in {region}" : "{region} tatilleri",
- "An error occurred, unable to create the public holiday calendar." : "Bir sorun çıktı. Resmi tatil takvimi eklenemedi.",
+ "An error occurred, unable to read public calendars." : "Bir sorun çıktı. Herkese açık takvimler okunamadı.",
+ "An error occurred, unable to subscribe to calendar." : "Bir sorun çıktı. Takvime abone olunamadı.",
"Select date" : "Tarih seçin",
"Select slot" : "Aralık seçin",
"No slots available" : "Seçilebilecek bir aralık yok",
diff --git a/l10n/uk.js b/l10n/uk.js
index 4d71fbff37..4869799214 100644
--- a/l10n/uk.js
+++ b/l10n/uk.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "Підписатися на календар (лише для читання)",
"Creating subscription …" : "Створення підписки...",
"Add public holiday calendar" : "Додати календар публічних свят",
+ "Add custom public calendar" : "Додати власний публічний календар",
"An error occurred, unable to create the calendar." : "Помилка: неможливо створити календар.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Будь ласка, зазначте правильне посилання (має починатися з http://, https://, webcal:// або webcals://)",
"Copy subscription link" : "Копіювати посилання на підписку",
@@ -310,7 +311,9 @@ OC.L10N.register(
"Remove group" : "Вилучити групу",
"Remove attendee" : "Вилучити учасника",
"_%n member_::_%n members_" : ["%n учасник","%n учасника","%n учасників","%n учасників"],
+ "Search for emails, users, contacts or groups" : "Пошук імейлів, користувачів, контактів або груп",
"No match found" : "Збігів не знайдено",
+ "Note that members of circles get invited but are not synced yet." : "Зверніть увагу, що учасники кіл отримують запрошення, але поки ще не синхронізовані.",
"(organizer)" : "(організатор)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Для надсилання запрошень та отримання відповіді, [linkopen]додайте ел.адресу в особистих налаштуваннях[linkclose].",
"Remove color" : "Вилучити колір",
@@ -380,13 +383,18 @@ OC.L10N.register(
"Please enter a valid date and time" : "Будь ласка, зазначте правильну дату та час",
"Type to search time zone" : "Зазначте часову зону для пошуку",
"Global" : "Загальний",
- "Public holiday calendars" : "Календарі публічних свят",
+ "Public holiday calendars" : "Публічні календарі свят",
+ "Public calendars" : "Публічні календарі",
+ "No valid public calendars configured" : "Не налаштовано жодного дійсного публічного календаря",
+ "Speak to the server administrator to resolve this issue." : "Зверніться до адміністратора сервера, щоб вирішити цю проблему.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Календарі публічних свят надаються Thunderbird. Календарні дані буде отримано з {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Ці публічні календарі були запропоновані адміністратором сервера. Дані для календаря будуть завантажені з відповідного сайту.",
"By {authors}" : "Автор: {authors}",
"Subscribed" : "Підписано",
"Subscribe" : "Підписатися",
"Holidays in {region}" : "Свята в {region}",
- "An error occurred, unable to create the public holiday calendar." : "Помилка: неможливо створити календар публічних свят.",
+ "An error occurred, unable to read public calendars." : "Помилка: не вдалося прочитати публічні календарі.",
+ "An error occurred, unable to subscribe to calendar." : "Помилка: не вдалося підписатися на календар.",
"Select date" : "Виберіть дату",
"Select slot" : "Виберіть часовий проміжок",
"No slots available" : "Відсутні доступні часові проміжки",
diff --git a/l10n/uk.json b/l10n/uk.json
index aad4d2e211..08f4e9dfa2 100644
--- a/l10n/uk.json
+++ b/l10n/uk.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "Підписатися на календар (лише для читання)",
"Creating subscription …" : "Створення підписки...",
"Add public holiday calendar" : "Додати календар публічних свят",
+ "Add custom public calendar" : "Додати власний публічний календар",
"An error occurred, unable to create the calendar." : "Помилка: неможливо створити календар.",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "Будь ласка, зазначте правильне посилання (має починатися з http://, https://, webcal:// або webcals://)",
"Copy subscription link" : "Копіювати посилання на підписку",
@@ -308,7 +309,9 @@
"Remove group" : "Вилучити групу",
"Remove attendee" : "Вилучити учасника",
"_%n member_::_%n members_" : ["%n учасник","%n учасника","%n учасників","%n учасників"],
+ "Search for emails, users, contacts or groups" : "Пошук імейлів, користувачів, контактів або груп",
"No match found" : "Збігів не знайдено",
+ "Note that members of circles get invited but are not synced yet." : "Зверніть увагу, що учасники кіл отримують запрошення, але поки ще не синхронізовані.",
"(organizer)" : "(організатор)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "Для надсилання запрошень та отримання відповіді, [linkopen]додайте ел.адресу в особистих налаштуваннях[linkclose].",
"Remove color" : "Вилучити колір",
@@ -378,13 +381,18 @@
"Please enter a valid date and time" : "Будь ласка, зазначте правильну дату та час",
"Type to search time zone" : "Зазначте часову зону для пошуку",
"Global" : "Загальний",
- "Public holiday calendars" : "Календарі публічних свят",
+ "Public holiday calendars" : "Публічні календарі свят",
+ "Public calendars" : "Публічні календарі",
+ "No valid public calendars configured" : "Не налаштовано жодного дійсного публічного календаря",
+ "Speak to the server administrator to resolve this issue." : "Зверніться до адміністратора сервера, щоб вирішити цю проблему.",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "Календарі публічних свят надаються Thunderbird. Календарні дані буде отримано з {website}",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "Ці публічні календарі були запропоновані адміністратором сервера. Дані для календаря будуть завантажені з відповідного сайту.",
"By {authors}" : "Автор: {authors}",
"Subscribed" : "Підписано",
"Subscribe" : "Підписатися",
"Holidays in {region}" : "Свята в {region}",
- "An error occurred, unable to create the public holiday calendar." : "Помилка: неможливо створити календар публічних свят.",
+ "An error occurred, unable to read public calendars." : "Помилка: не вдалося прочитати публічні календарі.",
+ "An error occurred, unable to subscribe to calendar." : "Помилка: не вдалося підписатися на календар.",
"Select date" : "Виберіть дату",
"Select slot" : "Виберіть часовий проміжок",
"No slots available" : "Відсутні доступні часові проміжки",
diff --git a/l10n/zh_CN.js b/l10n/zh_CN.js
index 96243ecdda..f4695de941 100644
--- a/l10n/zh_CN.js
+++ b/l10n/zh_CN.js
@@ -385,7 +385,6 @@ OC.L10N.register(
"Subscribed" : "已订阅",
"Subscribe" : "订阅",
"Holidays in {region}" : "{region}的节假日",
- "An error occurred, unable to create the public holiday calendar." : "发生错误,无法创建公众节假日日历。",
"Select date" : "选择日期",
"Select slot" : "选择时段",
"No slots available" : "无可用时段",
diff --git a/l10n/zh_CN.json b/l10n/zh_CN.json
index 4772205036..e5f4a1a2bf 100644
--- a/l10n/zh_CN.json
+++ b/l10n/zh_CN.json
@@ -383,7 +383,6 @@
"Subscribed" : "已订阅",
"Subscribe" : "订阅",
"Holidays in {region}" : "{region}的节假日",
- "An error occurred, unable to create the public holiday calendar." : "发生错误,无法创建公众节假日日历。",
"Select date" : "选择日期",
"Select slot" : "选择时段",
"No slots available" : "无可用时段",
diff --git a/l10n/zh_HK.js b/l10n/zh_HK.js
index 95ec30e5f8..9ba80cb103 100644
--- a/l10n/zh_HK.js
+++ b/l10n/zh_HK.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "自連結建立新訂閱(唯讀)",
"Creating subscription …" : "正在建立新訂閱…",
"Add public holiday calendar" : "添加公眾假期日曆",
+ "Add custom public calendar" : "新增自訂公共日曆",
"An error occurred, unable to create the calendar." : "發生錯誤,無法建立日曆",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "請輸入有效的連結(以 http://,https://,webcal://,或 webcals:// 開頭)",
"Copy subscription link" : "複製訂閱的連結",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "選擇要作為附件的檔案",
"Choose a file to share as a link" : "選擇要作為連結分享的檔案",
"Attachment {name} already exist!" : "附件 {name} 已存在!",
+ "Could not upload attachment(s)" : "無法上傳附件",
"_{count} attachment_::_{count} attachments_" : ["{count} 個附件"],
"Invitation accepted" : "已接受邀請",
"Available" : "可用",
@@ -310,7 +312,9 @@ OC.L10N.register(
"Remove group" : "移除群組",
"Remove attendee" : "移除參與者",
"_%n member_::_%n members_" : ["%n 個成員"],
+ "Search for emails, users, contacts or groups" : "搜尋電子郵件、用戶、聯絡人或群組",
"No match found" : "找不到符合的項目",
+ "Note that members of circles get invited but are not synced yet." : "請注意,社交圈子成員已收到邀請,但尚未同步。",
"(organizer)" : "(主辦人)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "若要送出邀請函並處理回覆,[linkopen] 請到個人設定頁加入您的電郵地址 [linkclose]",
"Remove color" : "移除顏色",
@@ -381,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "輸入以搜尋時區",
"Global" : "全球",
"Public holiday calendars" : "公眾假期日曆",
+ "Public calendars" : "公共日曆",
+ "No valid public calendars configured" : "未設定有效的公共日曆",
+ "Speak to the server administrator to resolve this issue." : "請與伺服器管理員聯絡以解決此問題。",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "公眾假期日曆由 Thunderbird 提供。將從 {website} 下載日曆數據",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "這些公開日曆是伺服器管理員建議的。日曆資料將從對應的網站下載。",
"By {authors}" : "作者 {authors}",
"Subscribed" : "已訂閱",
"Subscribe" : "訂閱",
"Holidays in {region}" : "{region} 的假期",
- "An error occurred, unable to create the public holiday calendar." : "發生錯誤,無法創建公眾假期日曆。",
+ "An error occurred, unable to read public calendars." : "發生錯誤,無法讀取公共日曆。",
+ "An error occurred, unable to subscribe to calendar." : "發生錯誤,無法訂閱日曆。",
"Select date" : "選擇日期",
"Select slot" : "選擇時段",
"No slots available" : "沒有可用的時段",
diff --git a/l10n/zh_HK.json b/l10n/zh_HK.json
index 0312bae695..2c03a0e647 100644
--- a/l10n/zh_HK.json
+++ b/l10n/zh_HK.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "自連結建立新訂閱(唯讀)",
"Creating subscription …" : "正在建立新訂閱…",
"Add public holiday calendar" : "添加公眾假期日曆",
+ "Add custom public calendar" : "新增自訂公共日曆",
"An error occurred, unable to create the calendar." : "發生錯誤,無法建立日曆",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "請輸入有效的連結(以 http://,https://,webcal://,或 webcals:// 開頭)",
"Copy subscription link" : "複製訂閱的連結",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "選擇要作為附件的檔案",
"Choose a file to share as a link" : "選擇要作為連結分享的檔案",
"Attachment {name} already exist!" : "附件 {name} 已存在!",
+ "Could not upload attachment(s)" : "無法上傳附件",
"_{count} attachment_::_{count} attachments_" : ["{count} 個附件"],
"Invitation accepted" : "已接受邀請",
"Available" : "可用",
@@ -308,7 +310,9 @@
"Remove group" : "移除群組",
"Remove attendee" : "移除參與者",
"_%n member_::_%n members_" : ["%n 個成員"],
+ "Search for emails, users, contacts or groups" : "搜尋電子郵件、用戶、聯絡人或群組",
"No match found" : "找不到符合的項目",
+ "Note that members of circles get invited but are not synced yet." : "請注意,社交圈子成員已收到邀請,但尚未同步。",
"(organizer)" : "(主辦人)",
"To send out invitations and handle responses, [linkopen]add your email address in personal settings[linkclose]." : "若要送出邀請函並處理回覆,[linkopen] 請到個人設定頁加入您的電郵地址 [linkclose]",
"Remove color" : "移除顏色",
@@ -379,12 +383,17 @@
"Type to search time zone" : "輸入以搜尋時區",
"Global" : "全球",
"Public holiday calendars" : "公眾假期日曆",
+ "Public calendars" : "公共日曆",
+ "No valid public calendars configured" : "未設定有效的公共日曆",
+ "Speak to the server administrator to resolve this issue." : "請與伺服器管理員聯絡以解決此問題。",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "公眾假期日曆由 Thunderbird 提供。將從 {website} 下載日曆數據",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "這些公開日曆是伺服器管理員建議的。日曆資料將從對應的網站下載。",
"By {authors}" : "作者 {authors}",
"Subscribed" : "已訂閱",
"Subscribe" : "訂閱",
"Holidays in {region}" : "{region} 的假期",
- "An error occurred, unable to create the public holiday calendar." : "發生錯誤,無法創建公眾假期日曆。",
+ "An error occurred, unable to read public calendars." : "發生錯誤,無法讀取公共日曆。",
+ "An error occurred, unable to subscribe to calendar." : "發生錯誤,無法訂閱日曆。",
"Select date" : "選擇日期",
"Select slot" : "選擇時段",
"No slots available" : "沒有可用的時段",
diff --git a/l10n/zh_TW.js b/l10n/zh_TW.js
index c7ff228d04..ae7f49e0c6 100644
--- a/l10n/zh_TW.js
+++ b/l10n/zh_TW.js
@@ -82,6 +82,7 @@ OC.L10N.register(
"New subscription from link (read-only)" : "自連結建立新訂閱(唯讀)",
"Creating subscription …" : "正在建立新訂閱…",
"Add public holiday calendar" : "新增公眾節日行事曆",
+ "Add custom public calendar" : "新增自訂公開日曆",
"An error occurred, unable to create the calendar." : "發生錯誤,無法建立日曆",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "請輸入有效的連結(以 http:// , https:// , webcal:// , 或 webcals:// 開頭)",
"Copy subscription link" : "複製訂閱的連結",
@@ -266,6 +267,7 @@ OC.L10N.register(
"Choose a file to add as attachment" : "選擇要作為附件的檔案",
"Choose a file to share as a link" : "選擇要作為連結分享的檔案",
"Attachment {name} already exist!" : "附件 {name} 已存在!",
+ "Could not upload attachment(s)" : "無法上傳附件",
"_{count} attachment_::_{count} attachments_" : ["{count} 個附件"],
"Invitation accepted" : "已接受邀請",
"Available" : "可用",
@@ -383,12 +385,17 @@ OC.L10N.register(
"Type to search time zone" : "輸入以搜尋時區",
"Global" : "全球",
"Public holiday calendars" : "公眾節日行事曆",
+ "Public calendars" : "公開日曆",
+ "No valid public calendars configured" : "未設定有效的公開日曆",
+ "Speak to the server administrator to resolve this issue." : "請與伺服器管理員聯絡以解決此問題。",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "公眾節日行事曆由 Thunderbird 提供。將會從 {website} 下載行事曆資料",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "這些公開日曆是伺服器管理員建議的。日曆資料將從對應的網站下載。",
"By {authors}" : "作者為 {authors}",
"Subscribed" : "已訂閱",
"Subscribe" : "訂閱",
"Holidays in {region}" : "{region} 的節日",
- "An error occurred, unable to create the public holiday calendar." : "發生錯誤,無法建立公眾節日行事曆。",
+ "An error occurred, unable to read public calendars." : "發生錯誤,無法讀取公開日曆。",
+ "An error occurred, unable to subscribe to calendar." : "發生錯誤,無法訂閱日曆。",
"Select date" : "選取日期",
"Select slot" : "選取時段",
"No slots available" : "無可用時段",
diff --git a/l10n/zh_TW.json b/l10n/zh_TW.json
index 7cc2e4bfb9..c3cb2d5572 100644
--- a/l10n/zh_TW.json
+++ b/l10n/zh_TW.json
@@ -80,6 +80,7 @@
"New subscription from link (read-only)" : "自連結建立新訂閱(唯讀)",
"Creating subscription …" : "正在建立新訂閱…",
"Add public holiday calendar" : "新增公眾節日行事曆",
+ "Add custom public calendar" : "新增自訂公開日曆",
"An error occurred, unable to create the calendar." : "發生錯誤,無法建立日曆",
"Please enter a valid link (starting with http://, https://, webcal://, or webcals://)" : "請輸入有效的連結(以 http:// , https:// , webcal:// , 或 webcals:// 開頭)",
"Copy subscription link" : "複製訂閱的連結",
@@ -264,6 +265,7 @@
"Choose a file to add as attachment" : "選擇要作為附件的檔案",
"Choose a file to share as a link" : "選擇要作為連結分享的檔案",
"Attachment {name} already exist!" : "附件 {name} 已存在!",
+ "Could not upload attachment(s)" : "無法上傳附件",
"_{count} attachment_::_{count} attachments_" : ["{count} 個附件"],
"Invitation accepted" : "已接受邀請",
"Available" : "可用",
@@ -381,12 +383,17 @@
"Type to search time zone" : "輸入以搜尋時區",
"Global" : "全球",
"Public holiday calendars" : "公眾節日行事曆",
+ "Public calendars" : "公開日曆",
+ "No valid public calendars configured" : "未設定有效的公開日曆",
+ "Speak to the server administrator to resolve this issue." : "請與伺服器管理員聯絡以解決此問題。",
"Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}" : "公眾節日行事曆由 Thunderbird 提供。將會從 {website} 下載行事曆資料",
+ "These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website." : "這些公開日曆是伺服器管理員建議的。日曆資料將從對應的網站下載。",
"By {authors}" : "作者為 {authors}",
"Subscribed" : "已訂閱",
"Subscribe" : "訂閱",
"Holidays in {region}" : "{region} 的節日",
- "An error occurred, unable to create the public holiday calendar." : "發生錯誤,無法建立公眾節日行事曆。",
+ "An error occurred, unable to read public calendars." : "發生錯誤,無法讀取公開日曆。",
+ "An error occurred, unable to subscribe to calendar." : "發生錯誤,無法訂閱日曆。",
"Select date" : "選取日期",
"Select slot" : "選取時段",
"No slots available" : "無可用時段",
diff --git a/lib/Controller/AppointmentConfigController.php b/lib/Controller/AppointmentConfigController.php
index 84260799a5..a2603958b1 100644
--- a/lib/Controller/AppointmentConfigController.php
+++ b/lib/Controller/AppointmentConfigController.php
@@ -35,6 +35,7 @@
use OCA\Calendar\Service\Appointments\AppointmentConfigService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\UserRateLimit;
use OCP\IRequest;
use Psr\Log\LoggerInterface;
use function array_keys;
@@ -147,7 +148,9 @@ private function validateAvailability(array $availability): void {
* @param int|null $end
* @param int|null $futureLimit
* @return JsonResponse
+ * @UserRateThrottle(limit=10, period=1200)
*/
+ #[UserRateLimit(limit: 10, period: 1200)]
public function create(
string $name,
string $description,
diff --git a/lib/Controller/BookingController.php b/lib/Controller/BookingController.php
index 7697fd26e3..c51895b445 100644
--- a/lib/Controller/BookingController.php
+++ b/lib/Controller/BookingController.php
@@ -37,6 +37,8 @@
use OCA\Calendar\Service\Appointments\BookingService;
use OCP\AppFramework\Controller;
use OCP\AppFramework\Http;
+use OCP\AppFramework\Http\Attribute\AnonRateLimit;
+use OCP\AppFramework\Http\Attribute\UserRateLimit;
use OCP\AppFramework\Http\TemplateResponse;
use OCP\AppFramework\Services\IInitialState;
use OCP\AppFramework\Utility\ITimeFactory;
@@ -162,7 +164,12 @@ public function getBookableSlots(int $appointmentConfigId,
* @param string $description
* @param string $timeZone
* @return JsonResponse
+ *
+ * @AnonRateThrottle(limit=10, period=1200)
+ * @UserRateThrottle(limit=10, period=300)
*/
+ #[AnonRateLimit(limit: 10, period: 1200)]
+ #[UserRateLimit(limit: 10, period: 300)]
public function bookSlot(int $appointmentConfigId,
int $start,
int $end,
diff --git a/lib/Controller/ViewController.php b/lib/Controller/ViewController.php
index afc14aba29..e22bf89754 100644
--- a/lib/Controller/ViewController.php
+++ b/lib/Controller/ViewController.php
@@ -120,6 +120,7 @@ public function index():TemplateResponse {
}
$canSubscribeLink = $this->config->getAppValue('dav', 'allow_calendar_link_subscriptions', 'yes') === 'yes';
$showResources = $this->config->getAppValue($this->appName, 'showResources', 'yes') === 'yes';
+ $publicCalendars = $this->config->getAppValue($this->appName, 'publicCalendars', '');
$talkEnabled = $this->appManager->isEnabledForUser('spreed');
$talkApiVersion = version_compare($this->appManager->getAppVersion('spreed'), '12.0.0', '>=') ? 'v4' : 'v1';
@@ -152,6 +153,7 @@ public function index():TemplateResponse {
$this->initialStateService->provideInitialState('can_subscribe_link', $canSubscribeLink);
$this->initialStateService->provideInitialState('show_resources', $showResources);
$this->initialStateService->provideInitialState('isCirclesEnabled', $isCirclesEnabled && $isCircleVersionCompatible);
+ $this->initialStateService->provideInitialState('publicCalendars', $publicCalendars);
return new TemplateResponse($this->appName, 'main');
}
diff --git a/package-lock.json b/package-lock.json
index 98bd4853a6..30fe9fd493 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -35,7 +35,7 @@
"autosize": "^6.0.1",
"color-convert": "^2.0.1",
"color-string": "^1.9.1",
- "core-js": "^3.33.3",
+ "core-js": "^3.35.0",
"css-color-names": "^1.0.1",
"debounce": "^1.2.1",
"jstz": "^2.1.1",
@@ -44,7 +44,7 @@
"md5": "^2.3.0",
"p-limit": "^5.0.0",
"v-tooltip": "^2.1.3",
- "vue": "^2.7.15",
+ "vue": "^2.7.16",
"vue-click-outside": "^1.1.0",
"vue-material-design-icons": "^5.2.0",
"vue-router": "^3.6.5",
@@ -52,7 +52,7 @@
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0",
- "webdav": "^5.3.0"
+ "webdav": "^5.3.1"
},
"devDependencies": {
"@babel/core": "^7.23.2",
@@ -71,7 +71,7 @@
"jest-environment-jsdom": "^29.5.0",
"jest-serializer-vue": "^3.1.0",
"resolve-url-loader": "^5.0.0",
- "vue-template-compiler": "^2.7.15"
+ "vue-template-compiler": "^2.7.16"
},
"engines": {
"node": "^20.0.0",
@@ -549,9 +549,9 @@
}
},
"node_modules/@babel/parser": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
- "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw==",
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+ "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==",
"bin": {
"parser": "bin/babel-parser.js"
},
@@ -5401,13 +5401,16 @@
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
"node_modules/@vue/compiler-sfc": {
- "version": "2.7.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz",
- "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+ "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
"dependencies": {
- "@babel/parser": "^7.18.4",
+ "@babel/parser": "^7.23.5",
"postcss": "^8.4.14",
"source-map": "^0.6.1"
+ },
+ "optionalDependencies": {
+ "prettier": "^1.18.2 || ^2.0.0"
}
},
"node_modules/@vue/component-compiler-utils": {
@@ -7363,9 +7366,9 @@
"peer": true
},
"node_modules/core-js": {
- "version": "3.33.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz",
- "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==",
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.0.tgz",
+ "integrity": "sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg==",
"hasInstallScript": true,
"funding": {
"type": "opencollective",
@@ -9749,9 +9752,9 @@
}
},
"node_modules/follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
+ "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw==",
"funding": [
{
"type": "individual",
@@ -14978,7 +14981,6 @@
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
- "dev": true,
"optional": true,
"bin": {
"prettier": "bin-prettier.js"
@@ -18325,11 +18327,11 @@
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
},
"node_modules/vue": {
- "version": "2.7.15",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz",
- "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz",
+ "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
"dependencies": {
- "@vue/compiler-sfc": "2.7.15",
+ "@vue/compiler-sfc": "2.7.16",
"csstype": "^3.1.0"
}
},
@@ -18603,9 +18605,9 @@
}
},
"node_modules/vue-template-compiler": {
- "version": "2.7.15",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz",
- "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
"dev": true,
"dependencies": {
"de-indent": "^1.0.2",
@@ -18743,9 +18745,9 @@
}
},
"node_modules/webdav": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.3.0.tgz",
- "integrity": "sha512-xRu/URZGCxDPXmT+9Gu6tNGvlETBwjcuz69lx/6Qlq/0q3Gu2GSVyRt+mP0vTlLFfaY3xZ5O/SPTQ578tC/45Q==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.3.1.tgz",
+ "integrity": "sha512-wzZdTHtMuSIXqHGBznc8FM2L94Mc/17Tbn9ppoMybRO0bjWOSIeScdVXWX5qqHsg00EjfiOcwMqGFx6ghIhccQ==",
"dependencies": {
"@buttercup/fetch": "^0.1.1",
"base-64": "^1.0.0",
@@ -19686,9 +19688,9 @@
}
},
"@babel/parser": {
- "version": "7.23.0",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.0.tgz",
- "integrity": "sha512-vvPKKdMemU85V9WE/l5wZEmImpCtLqbnTvqDS2U1fJ96KrxoW7KrXhNsNCblQlg8Ck4b85yxdTyelsMUgFUXiw=="
+ "version": "7.23.6",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.6.tgz",
+ "integrity": "sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ=="
},
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": {
"version": "7.22.15",
@@ -23194,12 +23196,13 @@
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ=="
},
"@vue/compiler-sfc": {
- "version": "2.7.15",
- "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.15.tgz",
- "integrity": "sha512-FCvIEevPmgCgqFBH7wD+3B97y7u7oj/Wr69zADBf403Tui377bThTjBvekaZvlRr4IwUAu3M6hYZeULZFJbdYg==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-2.7.16.tgz",
+ "integrity": "sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==",
"requires": {
- "@babel/parser": "^7.18.4",
+ "@babel/parser": "^7.23.5",
"postcss": "^8.4.14",
+ "prettier": "^1.18.2 || ^2.0.0",
"source-map": "^0.6.1"
}
},
@@ -24704,9 +24707,9 @@
"peer": true
},
"core-js": {
- "version": "3.33.3",
- "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz",
- "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw=="
+ "version": "3.35.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.35.0.tgz",
+ "integrity": "sha512-ntakECeqg81KqMueeGJ79Q5ZgQNR+6eaE8sxGCx62zMbAIj65q+uYvatToew3m6eAGdU4gNZwpZ34NMe4GYswg=="
},
"core-js-compat": {
"version": "3.33.0",
@@ -26514,9 +26517,9 @@
}
},
"follow-redirects": {
- "version": "1.15.2",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
- "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA=="
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.4.tgz",
+ "integrity": "sha512-Cr4D/5wlrb0z9dgERpUL3LrmPKVDsETIJhaCMeDfuFYcqa5bldGV6wBsAN6X/vxlXQtFBMrXdXxdL8CbDTGniw=="
},
"for-each": {
"version": "0.3.3",
@@ -30239,7 +30242,6 @@
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.7.1.tgz",
"integrity": "sha512-ujppO+MkdPqoVINuDFDRLClm7D78qbDt0/NR+wp5FqEZOoTNAjPHWj17QRhu7geIHJfcNhRk1XVQmF8Bp3ye+g==",
- "dev": true,
"optional": true
},
"pretty": {
@@ -32782,11 +32784,11 @@
"integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ=="
},
"vue": {
- "version": "2.7.15",
- "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.15.tgz",
- "integrity": "sha512-a29fsXd2G0KMRqIFTpRgpSbWaNBK3lpCTOLuGLEDnlHWdjB8fwl6zyYZ8xCrqkJdatwZb4mGHiEfJjnw0Q6AwQ==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue/-/vue-2.7.16.tgz",
+ "integrity": "sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==",
"requires": {
- "@vue/compiler-sfc": "2.7.15",
+ "@vue/compiler-sfc": "2.7.16",
"csstype": "^3.1.0"
}
},
@@ -33000,9 +33002,9 @@
}
},
"vue-template-compiler": {
- "version": "2.7.15",
- "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.15.tgz",
- "integrity": "sha512-yQxjxMptBL7UAog00O8sANud99C6wJF+7kgbcwqkvA38vCGF7HWE66w0ZFnS/kX5gSoJr/PQ4/oS3Ne2pW37Og==",
+ "version": "2.7.16",
+ "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.7.16.tgz",
+ "integrity": "sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==",
"dev": true,
"requires": {
"de-indent": "^1.0.2",
@@ -33116,9 +33118,9 @@
"optional": true
},
"webdav": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.3.0.tgz",
- "integrity": "sha512-xRu/URZGCxDPXmT+9Gu6tNGvlETBwjcuz69lx/6Qlq/0q3Gu2GSVyRt+mP0vTlLFfaY3xZ5O/SPTQ578tC/45Q==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/webdav/-/webdav-5.3.1.tgz",
+ "integrity": "sha512-wzZdTHtMuSIXqHGBznc8FM2L94Mc/17Tbn9ppoMybRO0bjWOSIeScdVXWX5qqHsg00EjfiOcwMqGFx6ghIhccQ==",
"requires": {
"@buttercup/fetch": "^0.1.1",
"base-64": "^1.0.0",
diff --git a/package.json b/package.json
index 731104613f..d7d90d28a2 100644
--- a/package.json
+++ b/package.json
@@ -62,7 +62,7 @@
"autosize": "^6.0.1",
"color-convert": "^2.0.1",
"color-string": "^1.9.1",
- "core-js": "^3.33.3",
+ "core-js": "^3.35.0",
"css-color-names": "^1.0.1",
"debounce": "^1.2.1",
"jstz": "^2.1.1",
@@ -71,7 +71,7 @@
"md5": "^2.3.0",
"p-limit": "^5.0.0",
"v-tooltip": "^2.1.3",
- "vue": "^2.7.15",
+ "vue": "^2.7.16",
"vue-click-outside": "^1.1.0",
"vue-material-design-icons": "^5.2.0",
"vue-router": "^3.6.5",
@@ -79,7 +79,7 @@
"vuedraggable": "^2.24.3",
"vuex": "^3.6.2",
"vuex-router-sync": "^5.0.0",
- "webdav": "^5.3.0"
+ "webdav": "^5.3.1"
},
"browserslist": [
"extends @nextcloud/browserslist-config"
@@ -105,7 +105,7 @@
"jest-environment-jsdom": "^29.5.0",
"jest-serializer-vue": "^3.1.0",
"resolve-url-loader": "^5.0.0",
- "vue-template-compiler": "^2.7.15"
+ "vue-template-compiler": "^2.7.16"
},
"optionalDependencies": {
"fsevents": "^2.3.3"
@@ -140,7 +140,7 @@
"clover"
],
"transformIgnorePatterns": [
- "/node_modules/(?!(@fullcalendar|uuid)).+\\.js$"
+ "/node_modules/(?!(@fullcalendar|uuid|webdav)).+\\.js$"
],
"setupFilesAfterEnv": [
"./tests/javascript/jest.setup.js",
diff --git a/src/components/AppNavigation/CalendarList/CalendarListNew.vue b/src/components/AppNavigation/CalendarList/CalendarListNew.vue
index d98a135871..f82306c73c 100644
--- a/src/components/AppNavigation/CalendarList/CalendarListNew.vue
+++ b/src/components/AppNavigation/CalendarList/CalendarListNew.vue
@@ -98,9 +98,19 @@
+
+ {{ t('calendar', 'Add custom public calendar') }}
+
+
+
+
-
+
+
@@ -136,7 +146,7 @@ export default {
AppNavigationItem,
CalendarBlank,
CalendarCheck,
- HolidaySubscriptionPicker: () => import(/* webpackChunkName: "holiday-subscription-picker" */ '../../Subscription/HolidaySubscriptionPicker.vue'),
+ PublicCalendarSubscriptionPicker: () => import(/* webpackChunkName: "public-calendar-subscription-picker" */ '../../Subscription/PublicCalendarSubscriptionPicker.vue'),
LinkVariant,
Plus,
Web,
@@ -158,11 +168,13 @@ export default {
showCreateSubscriptionInput: false,
showCreateSubscriptionSaving: false,
showHolidaySubscriptionPicker: false,
+ showPublicCalendarSubscriptionPicker: false,
}
},
computed: {
...mapState({
canSubscribeLink: state => state.settings.canSubscribeLink,
+ hasPublicCalendars: state => Boolean(state.settings.publicCalendars),
}),
},
watch: {
diff --git a/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue b/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue
index b0e7ce5101..1f1738e0be 100644
--- a/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue
+++ b/src/components/AppNavigation/EditCalendarModal/SharingSearch.vue
@@ -34,6 +34,7 @@
:class="{ 'showContent': inputGiven, 'icon-loading': isLoading }"
:user-select="true"
:clearable="false"
+ :filter-by="filterResults"
open-direction="above"
track-by="user"
label="displayName"
diff --git a/src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue b/src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue
index e442528794..de3d249d22 100644
--- a/src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue
+++ b/src/components/AppNavigation/Settings/SettingsAttachmentsFolder.vue
@@ -30,7 +30,6 @@
@input="debounceSaveAttachmentsFolder(attachmentsFolder)"
@change="debounceSaveAttachmentsFolder(attachmentsFolder)"
@click="selectCalendarFolder"
- @focus.once="selectCalendarFolder"
@keyboard.enter="selectCalendarFolder" />
diff --git a/src/components/AppointmentConfigModal.vue b/src/components/AppointmentConfigModal.vue
index 2d35cd0f88..27a655034a 100644
--- a/src/components/AppointmentConfigModal.vue
+++ b/src/components/AppointmentConfigModal.vue
@@ -134,6 +134,10 @@
+
+ {{ t('calendar', 'It seems a rate limit has been reached. Please try again later.') }}
+
import { CalendarAvailability } from '@nextcloud/calendar-availability-vue'
-import { NcModal as Modal, NcButton, NcCheckboxRadioSwitch } from '@nextcloud/vue'
+import { NcModal as Modal, NcButton, NcCheckboxRadioSwitch, NcNoteCard } from '@nextcloud/vue'
import TextInput from './AppointmentConfigModal/TextInput.vue'
import TextArea from './AppointmentConfigModal/TextArea.vue'
import AppointmentConfig from '../models/appointmentConfig.js'
@@ -177,6 +181,7 @@ export default {
Confirmation,
NcButton,
NcCheckboxRadioSwitch,
+ NcNoteCard,
},
props: {
config: {
@@ -194,6 +199,7 @@ export default {
enablePreparationDuration: false,
enableFollowupDuration: false,
enableFutureLimit: false,
+ rateLimitingReached: false,
showConfirmation: false,
}
},
@@ -282,6 +288,8 @@ export default {
this.editing.calendarFreeBusyUris = this.editing.calendarFreeBusyUris.filter(uri => uri !== this.calendarUrlToUri(calendar.url))
},
async save() {
+ this.rateLimitingReached = false
+
if (!this.enablePreparationDuration) {
this.editing.preparationDuration = this.defaultConfig.preparationDuration
}
@@ -307,6 +315,9 @@ export default {
}
this.showConfirmation = true
} catch (error) {
+ if (error?.response?.status === 429) {
+ this.rateLimitingReached = true
+ }
logger.error('Failed to save config', { error, config, isNew: this.isNew })
}
},
diff --git a/src/components/AppointmentConfigModal/Confirmation.vue b/src/components/AppointmentConfigModal/Confirmation.vue
index 3d2ac4c5fc..0d77b6b93f 100644
--- a/src/components/AppointmentConfigModal/Confirmation.vue
+++ b/src/components/AppointmentConfigModal/Confirmation.vue
@@ -28,12 +28,11 @@
-
+
+ {{ $t('calendar', 'It seems a rate limit has been reached. Please try again later.') }}
+
+
{{ $t('calendar', 'Could not book the appointment. Please try again later or contact the organizer.') }}
-
+
@@ -73,6 +77,7 @@ import {
NcButton,
NcLoadingIcon,
NcModal as Modal,
+ NcNoteCard,
} from '@nextcloud/vue'
import autosize from '../../directives/autosize.js'
@@ -85,6 +90,7 @@ export default {
NcButton,
NcLoadingIcon,
Modal,
+ NcNoteCard,
},
directives: {
autosize,
@@ -110,6 +116,10 @@ export default {
required: true,
type: String,
},
+ showRateLimitingWarning: {
+ required: true,
+ type: Boolean,
+ },
showError: {
required: true,
type: Boolean,
diff --git a/src/components/Editor/Alarm/AlarmListItem.vue b/src/components/Editor/Alarm/AlarmListItem.vue
index ce6cbee595..2f8193d23c 100644
--- a/src/components/Editor/Alarm/AlarmListItem.vue
+++ b/src/components/Editor/Alarm/AlarmListItem.vue
@@ -82,7 +82,8 @@
-
+ showMenu = open">
state.settings.attachmentsFolder,
- }),
},
methods: {
addAttachmentWithProperty(calendarObjectInstance, sharedData) {
@@ -142,7 +134,7 @@ export default {
const filename = await picker.pick(t('calendar', 'Choose a file to share as a link'))
if (!this.isDuplicateAttachment(filename)) {
// TODO do not share Move this to PHP
- const data = await getFileInfo(filename, this.currentUser.dav)
+ const data = await getFileInfo(filename, this.currentUser.dav.userId)
const davRes = await parseXML(data)
const davRespObj = davRes?.multistatus?.response[0]?.propstat?.prop
davRespObj.fileName = filename
@@ -168,24 +160,25 @@ export default {
this.$refs.localAttachments.click()
},
async onLocalAttachmentSelected(e) {
- if (!this.folderCreated) {
- await createFolder(this.attachmentsFolder, this.currentUser.userId)
- this.folderCreated = true
- }
- const attachments = await uploadLocalAttachment(this.attachmentsFolder, e, this.currentUser.dav, this.attachments)
- // TODO do not share file, move to PHP
- attachments.map(async attachment => {
- const data = await getFileInfo(`${this.attachmentsFolder}/${attachment.path}`, this.currentUser.dav)
- const davRes = await parseXML(data)
- const davRespObj = davRes?.multistatus?.response[0]?.propstat?.prop
- davRespObj.fileName = attachment.path
- davRespObj.url = generateUrl(`/f/${davRespObj.fileid}`)
- davRespObj.value = davRespObj.url
- this.addAttachmentWithProperty(this.calendarObjectInstance, davRespObj)
- })
-
- e.target.value = ''
+ try {
+ const attachmentsFolder = await this.$store.dispatch('createAttachmentsFolder')
+ const attachments = await uploadLocalAttachment(attachmentsFolder, Array.from(e.target.files), this.currentUser.dav, this.attachments)
+ // TODO do not share file, move to PHP
+ attachments.map(async attachment => {
+ const data = await getFileInfo(`${attachmentsFolder}/${attachment.path}`, this.currentUser.dav.userId)
+ const davRes = await parseXML(data)
+ const davRespObj = davRes?.multistatus?.response[0]?.propstat?.prop
+ davRespObj.fileName = attachment.path
+ davRespObj.url = generateUrl(`/f/${davRespObj.fileid}`)
+ davRespObj.value = davRespObj.url
+ this.addAttachmentWithProperty(this.calendarObjectInstance, davRespObj)
+ })
+ e.target.value = ''
+ } catch (error) {
+ logger.error('Could not upload attachment(s)', { error })
+ showError(t('calendar', 'Could not upload attachment(s)'))
+ }
},
getIcon(mime) {
return OC.MimeType.getIconUrl(mime)
diff --git a/src/components/Subscription/HolidaySubscriptionPicker.vue b/src/components/Subscription/HolidaySubscriptionPicker.vue
deleted file mode 100644
index eca757a722..0000000000
--- a/src/components/Subscription/HolidaySubscriptionPicker.vue
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
-
-
-
-
{{ t('calendar', 'Public holiday calendars') }}
-
- {{ t('calendar', 'Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}', { website: 'thunderbird.net' }) }}
-
-
-
-
{{ calendar.country }}
-
- {{ calendar.datespan }}
-
-
- {{ t('calendar', 'By {authors}', { authors: calendar.authors }) }}
-
-
-
-
- {{ subscribed[calendar.source] ? t('calendar', 'Subscribed') : t('calendar', 'Subscribe') }}
-
-
-
-
-
-
-
-
-
-
diff --git a/src/components/Subscription/PublicCalendarSubscriptionPicker.vue b/src/components/Subscription/PublicCalendarSubscriptionPicker.vue
new file mode 100644
index 0000000000..913620e7d8
--- /dev/null
+++ b/src/components/Subscription/PublicCalendarSubscriptionPicker.vue
@@ -0,0 +1,206 @@
+
+
+
+
+
+
+ {{ t('calendar', 'Public holiday calendars') }}
+
+
+ {{ t('calendar', 'Public calendars') }}
+
+
+
+
+
+
+
+ {{ t('calendar',
+ 'Public holiday calendars are provided by Thunderbird. Calendar data will be downloaded from {website}',
+ { website: 'thunderbird.net' }) }}
+
+
+ {{ t('calendar', 'These public calendars are suggested by the sever administrator. Calendar data will be downloaded from the respective website.') }}
+
+
+
+
{{ calendar.name }}
+
+ {{ calendar.description }}
+
+
+ {{ t('calendar', 'By {authors}', { authors: calendar.authors }) }}
+
+
+
+
+ {{ subscribed[calendar.source] ? t('calendar', 'Subscribed') : t('calendar', 'Subscribe') }}
+
+
+
+
+
+
+
+
+
+
diff --git a/src/fullcalendar/localization/localeProvider.js b/src/fullcalendar/localization/localeProvider.js
index 2c0097863f..fe210fa699 100644
--- a/src/fullcalendar/localization/localeProvider.js
+++ b/src/fullcalendar/localization/localeProvider.js
@@ -19,7 +19,7 @@
* along with this program. If not, see .
*
*/
-import { translate as t } from '@nextcloud/l10n'
+import { translate as t, getLanguage } from '@nextcloud/l10n'
import {
getFirstDayOfWeekFromMomentLocale,
} from '../../utils/moment.js'
@@ -33,6 +33,7 @@ import {
const getFullCalendarLocale = () => {
return {
firstDay: getFirstDayOfWeekFromMomentLocale(),
+ locale: getLanguage(),
// TRANSLATORS W is an abbreviation for Week
weekText: t('calendar', 'W'),
allDayText: t('calendar', 'All day'),
diff --git a/src/services/attachmentService.js b/src/services/attachmentService.js
index 8868cc678a..c63dcd8783 100644
--- a/src/services/attachmentService.js
+++ b/src/services/attachmentService.js
@@ -2,6 +2,7 @@
* @copyright 2022 Mikhail Sazanov
*
* @author 2022 Mikhail Sazanov
+ * @author Richard Steinmetz
*
* @license AGPL-3.0-or-later
*
@@ -24,6 +25,7 @@ import axios from '@nextcloud/axios'
import { generateOcsUrl, generateRemoteUrl } from '@nextcloud/router'
import { showError, showSuccess } from '@nextcloud/dialogs'
import { translate as t } from '@nextcloud/l10n'
+import { parseXML } from 'webdav'
/**
* Makes a share link for a given file or directory.
@@ -85,20 +87,47 @@ const shareFileWith = async function(path, sharedWith, permissions = 17) {
const createFolder = async function(folderName, userId) {
const url = generateRemoteUrl(`dav/files/${userId}/${folderName}`)
- await axios({
- method: 'MKCOL',
- url,
- }).catch(e => {
- if (e.response.status !== 405) {
+ try {
+ await axios({
+ method: 'MKCOL',
+ url,
+ })
+ } catch (e) {
+ if (e?.response?.status !== 405) {
showError(t('calendar', 'Error creating a folder {folder}', {
folder: folderName,
}))
+ // Maybe the actual upload succeeds -> keep going
+ return folderName
}
- })
+
+ // Folder already exists
+ if (folderName !== '/') {
+ folderName = await findFirstOwnedFolder(folderName, userId)
+ }
+ }
+
+ return folderName
+}
+
+const findFirstOwnedFolder = async function(path, userId) {
+ const infoXml = await getFileInfo(path, userId)
+ const info = await parseXML(infoXml)
+ const mountType = info?.multistatus?.response[0]?.propstat?.prop?.['mount-type']
+ if (mountType !== 'shared') {
+ return path
+ }
+
+ const hierarchy = path.split('/')
+ hierarchy.pop()
+ if (hierarchy.length === 1) {
+ return '/'
+ }
+
+ return findFirstOwnedFolder(hierarchy.join('/'), userId)
}
-const uploadLocalAttachment = async function(folder, event, dav, componentAttachments) {
- const files = event.target.files
+const uploadLocalAttachment = async function(folder, files, dav, componentAttachments) {
const attachments = []
const promises = []
@@ -140,8 +169,8 @@ const uploadLocalAttachment = async function(folder, event, dav, componentAttach
}
// TODO is shared or not @share-types@
-const getFileInfo = async function(path, dav) {
- const url = generateRemoteUrl(`dav/files/${dav.userId}/${path}`)
+const getFileInfo = async function(path, userId) {
+ const url = generateRemoteUrl(`dav/files/${userId}/${path}`)
const res = await axios({
method: 'PROPFIND',
url,
@@ -156,6 +185,7 @@ const getFileInfo = async function(path, dav) {
+
`,
}).catch(() => {
diff --git a/src/store/settings.js b/src/store/settings.js
index e020cced1f..21181166d5 100644
--- a/src/store/settings.js
+++ b/src/store/settings.js
@@ -3,6 +3,7 @@
* @copyright Copyright (c) 2022 Informatyka Boguslawski sp. z o.o. sp.k., http://www.ib.pl/
*
* @author Georg Ehrke
+ * @author Richard Steinmetz
*
* @license AGPL-3.0-or-later
*
@@ -27,6 +28,7 @@ import { setConfig as setCalendarJsConfig } from '@nextcloud/calendar-js'
import { setConfig } from '../services/settings.js'
import { logInfo } from '../utils/logger.js'
import getTimezoneManager from '../services/timezoneDataProviderService.js'
+import * as AttachmentService from '../services/attachmentService.js'
const state = {
// env
@@ -34,6 +36,7 @@ const state = {
firstRun: null,
talkEnabled: false,
disableAppointments: false,
+ publicCalendars: null,
// user-defined calendar settings
eventLimit: null,
showTasks: null,
@@ -51,6 +54,7 @@ const state = {
// user-defined Nextcloud settings
momentLocale: 'en',
attachmentsFolder: '/Calendar',
+ attachmentsFolderCreated: false,
}
const mutations = {
@@ -142,6 +146,18 @@ const mutations = {
*/
setAttachmentsFolder(state, { attachmentsFolder }) {
state.attachmentsFolder = attachmentsFolder
+ state.attachmentsFolderCreated = false
+ },
+
+ /**
+ * Update wheter the user's attachments folder has been created
+ *
+ * @param {object} state The Vuex state
+ * @param {object} data The destructuring object
+ * @param {boolean} data.attachmentsFolderCreated True if the folder has been created
+ */
+ setAttachmentsFolderCreated(state, { attachmentsFolderCreated }) {
+ state.attachmentsFolderCreated = attachmentsFolderCreated
},
/**
@@ -167,8 +183,9 @@ const mutations = {
* @param {boolean} data.canSubscribeLink
* @param {string} data.attachmentsFolder Default user's attachments folder
* @param {boolean} data.showResources Show or hide the resources tab
+ * @param {string} data.publicCalendars
*/
- loadSettingsFromServer(state, { appVersion, eventLimit, firstRun, showWeekNumbers, showTasks, showWeekends, skipPopover, slotDuration, defaultReminder, talkEnabled, tasksEnabled, timezone, hideEventExport, forceEventAlarmType, disableAppointments, canSubscribeLink, attachmentsFolder, showResources }) {
+ loadSettingsFromServer(state, { appVersion, eventLimit, firstRun, showWeekNumbers, showTasks, showWeekends, skipPopover, slotDuration, defaultReminder, talkEnabled, tasksEnabled, timezone, hideEventExport, forceEventAlarmType, disableAppointments, canSubscribeLink, attachmentsFolder, showResources, publicCalendars }) {
logInfo(`
Initial settings:
- AppVersion: ${appVersion}
@@ -189,6 +206,7 @@ Initial settings:
- CanSubscribeLink: ${canSubscribeLink}
- attachmentsFolder: ${attachmentsFolder}
- ShowResources: ${showResources}
+ - PublicCalendars: ${publicCalendars}
`)
state.appVersion = appVersion
@@ -209,6 +227,7 @@ Initial settings:
state.canSubscribeLink = canSubscribeLink
state.attachmentsFolder = attachmentsFolder
state.showResources = showResources
+ state.publicCalendars = publicCalendars
},
/**
@@ -450,6 +469,30 @@ const actions = {
commit('setAttachmentsFolder', { attachmentsFolder })
},
+ /**
+ * Create the user's attachment folder if it doesn't exist and return its path
+ *
+ * @param {object} vuex The Vuex destructuring object
+ * @param {object} vuex.state The Vuex state
+ * @param {Function} vuex.commit The Vuex commit Function
+ * @param {Function} vuex.dispatch The Vuex commit function
+ * @param {object} vuex.getters The Vuex getters object
+ * @return {Promise} The path of the user's attachments folder
+ */
+ async createAttachmentsFolder({ state, commit, dispatch, getters }) {
+ if (state.attachmentsFolderCreated) {
+ return state.attachmentsFolder
+ }
+
+ const userId = getters.getCurrentUserPrincipal.dav.userId
+ const path = await AttachmentService.createFolder(state.attachmentsFolder, userId)
+ if (path !== state.attachmentsFolder) {
+ await dispatch('setAttachmentsFolder', { attachmentsFolder: path })
+ }
+ commit('setAttachmentsFolderCreated', { attachmentsFolderCreated: true })
+ return path
+ },
+
/**
* Initializes the calendar-js configuration
*
diff --git a/src/views/Appointments/Booking.vue b/src/views/Appointments/Booking.vue
index c466ec08ea..22cf784308 100644
--- a/src/views/Appointments/Booking.vue
+++ b/src/views/Appointments/Booking.vue
@@ -76,6 +76,7 @@
:visitor-info="visitorInfo"
:time-zone-id="timeZone"
:show-error="bookingError"
+ :show-rate-limiting-warning="bookingRateLimit"
:is-loading="bookingLoading"
@save="onSave"
@close="selectedSlot = undefined" />
@@ -172,6 +173,7 @@ export default {
bookingConfirmed: false,
bookingError: false,
bookingLoading: false,
+ bookingRateLimit: false,
}
},
watch: {
@@ -229,6 +231,7 @@ export default {
})
this.bookingError = false
+ this.bookingRateLimit = false
try {
await bookSlot(this.config, slot, displayName, email, description, timeZone)
@@ -238,7 +241,11 @@ export default {
this.bookingConfirmed = true
} catch (e) {
console.error('could not book appointment', e)
- this.bookingError = true
+ if (e?.response?.status === 429) {
+ this.bookingRateLimit = true
+ } else {
+ this.bookingError = true
+ }
} finally {
this.bookingLoading = false
}
diff --git a/src/views/Calendar.vue b/src/views/Calendar.vue
index 1c79b365f2..ee203b9239 100644
--- a/src/views/Calendar.vue
+++ b/src/views/Calendar.vue
@@ -225,6 +225,7 @@ export default {
canSubscribeLink: loadState('calendar', 'can_subscribe_link', false),
attachmentsFolder: loadState('calendar', 'attachments_folder', false),
showResources: loadState('calendar', 'show_resources', true),
+ publicCalendars: loadState('calendar', 'publicCalendars'),
})
this.$store.dispatch('initializeCalendarJsConfig')
diff --git a/tests/javascript/jest.setup.js b/tests/javascript/jest.setup.js
index 1ee20d055f..141acc3857 100644
--- a/tests/javascript/jest.setup.js
+++ b/tests/javascript/jest.setup.js
@@ -2,3 +2,6 @@ import 'core-js/stable';
import 'regenerator-runtime/runtime';
document.title = 'Standard Nextcloud title'
+
+// The webdav client requires a public fetch function
+window.fetch = () => {}
diff --git a/tests/javascript/unit/store/settings.test.js b/tests/javascript/unit/store/settings.test.js
index 0a462e12cb..961c9cab79 100644
--- a/tests/javascript/unit/store/settings.test.js
+++ b/tests/javascript/unit/store/settings.test.js
@@ -66,7 +66,9 @@ describe('store/settings test suite', () => {
disableAppointments: false,
canSubscribeLink: true,
attachmentsFolder: '/Calendar',
+ attachmentsFolderCreated: false,
showResources: true,
+ publicCalendars: null,
})
})
@@ -179,6 +181,7 @@ describe('store/settings test suite', () => {
canSubscribeLink: true,
attachmentsFolder: '/Calendar',
showResources: true,
+ publicCalendars: null,
}
const settings = {
@@ -201,6 +204,7 @@ describe('store/settings test suite', () => {
canSubscribeLink: true,
attachmentsFolder: '/Attachments',
showResources: true,
+ publicCalendars: null,
}
settingsStore.mutations.loadSettingsFromServer(state, settings)
@@ -226,6 +230,7 @@ Initial settings:
- CanSubscribeLink: true
- attachmentsFolder: /Attachments
- ShowResources: true
+ - PublicCalendars: null
`)
expect(state).toEqual({
appVersion: '2.1.0',
@@ -248,6 +253,7 @@ Initial settings:
canSubscribeLink: true,
attachmentsFolder: '/Attachments',
showResources: true,
+ publicCalendars: null,
})
})
diff --git a/tests/php/unit/Controller/ViewControllerTest.php b/tests/php/unit/Controller/ViewControllerTest.php
index fdc8a4f62f..6fa830e4ad 100755
--- a/tests/php/unit/Controller/ViewControllerTest.php
+++ b/tests/php/unit/Controller/ViewControllerTest.php
@@ -94,7 +94,7 @@ protected function setUp(): void {
}
public function testIndex(): void {
- $this->config->expects(self::exactly(15))
+ $this->config->expects(self::exactly(16))
->method('getAppValue')
->willReturnMap([
['calendar', 'eventLimit', 'yes', 'defaultEventLimit'],
@@ -112,6 +112,7 @@ public function testIndex(): void {
['calendar', 'forceEventAlarmType', '', 'forceEventAlarmType'],
['dav', 'allow_calendar_link_subscriptions', 'yes', 'no'],
['calendar', 'showResources', 'yes', 'yes'],
+ ['calendar', 'publicCalendars', ''],
]);
$this->config->expects(self::exactly(11))
->method('getUserValue')
@@ -145,7 +146,7 @@ public function testIndex(): void {
->method('getAllAppointmentConfigurations')
->with($this->userId)
->willReturn([new AppointmentConfig()]);
- $this->initialStateService->expects(self::exactly(22))
+ $this->initialStateService->expects(self::exactly(23))
->method('provideInitialState')
->withConsecutive(
['app_version', '1.0.0'],
@@ -170,6 +171,7 @@ public function testIndex(): void {
['can_subscribe_link', false],
['show_resources', true],
['isCirclesEnabled', false],
+ ['publicCalendars', null],
);
$response = $this->controller->index();
@@ -187,7 +189,7 @@ public function testIndex(): void {
* @param string $expectedView
*/
public function testIndexViewFix(string $savedView, string $expectedView): void {
- $this->config->expects(self::exactly(15))
+ $this->config->expects(self::exactly(16))
->method('getAppValue')
->willReturnMap([
['calendar', 'eventLimit', 'yes', 'defaultEventLimit'],
@@ -205,6 +207,7 @@ public function testIndexViewFix(string $savedView, string $expectedView): void
['calendar', 'forceEventAlarmType', '', 'forceEventAlarmType'],
['dav', 'allow_calendar_link_subscriptions', 'yes', 'no'],
['calendar', 'showResources', 'yes', 'yes'],
+ ['calendar', 'publicCalendars', ''],
]);
$this->config->expects(self::exactly(11))
->method('getUserValue')
@@ -238,7 +241,7 @@ public function testIndexViewFix(string $savedView, string $expectedView): void
->method('getAllAppointmentConfigurations')
->with($this->userId)
->willReturn([new AppointmentConfig()]);
- $this->initialStateService->expects(self::exactly(22))
+ $this->initialStateService->expects(self::exactly(23))
->method('provideInitialState')
->withConsecutive(
['app_version', '1.0.0'],
@@ -263,6 +266,7 @@ public function testIndexViewFix(string $savedView, string $expectedView): void
['can_subscribe_link', false],
['show_resources', true],
['isCirclesEnabled', false],
+ ['publicCalendars', null],
);
$response = $this->controller->index();
diff --git a/tests/psalm-baseline.xml b/tests/psalm-baseline.xml
index 7655a6ae66..337c6cd8ab 100644
--- a/tests/psalm-baseline.xml
+++ b/tests/psalm-baseline.xml
@@ -1,5 +1,5 @@
-
+
CalendarWidgetV2
@@ -13,6 +13,15 @@
$expectedDayKeys !== $actualDayKeys
+
+ UserRateLimit
+
+
+
+
+ AnonRateLimit
+ UserRateLimit
+
diff --git a/vendor-bin/psalm/composer.json b/vendor-bin/psalm/composer.json
index 3937217b5d..e627996b2f 100644
--- a/vendor-bin/psalm/composer.json
+++ b/vendor-bin/psalm/composer.json
@@ -5,6 +5,6 @@
}
},
"require-dev": {
- "vimeo/psalm": "^5.15.0"
+ "vimeo/psalm": "^5.19.0"
}
}
diff --git a/vendor-bin/psalm/composer.lock b/vendor-bin/psalm/composer.lock
index 78707d917c..8d251da669 100644
--- a/vendor-bin/psalm/composer.lock
+++ b/vendor-bin/psalm/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "dfd230b66ebba99a661679f1758a1dc9",
+ "content-hash": "fb1e6c7ba524aa5596654525f8ee6713",
"packages": [],
"packages-dev": [
{
@@ -175,16 +175,16 @@
},
{
"name": "composer/pcre",
- "version": "3.1.0",
+ "version": "3.1.1",
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2"
+ "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
- "reference": "4bff79ddd77851fe3cdd11616ed3f92841ba5bd2",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/00104306927c7a0919b4ced2aaa6782c1e61a3c9",
+ "reference": "00104306927c7a0919b4ced2aaa6782c1e61a3c9",
"shasum": ""
},
"require": {
@@ -226,7 +226,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.1.0"
+ "source": "https://github.com/composer/pcre/tree/3.1.1"
},
"funding": [
{
@@ -242,20 +242,20 @@
"type": "tidelift"
}
],
- "time": "2022-11-17T09:50:14+00:00"
+ "time": "2023-10-11T07:11:09+00:00"
},
{
"name": "composer/semver",
- "version": "3.3.2",
+ "version": "3.4.0",
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9"
+ "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9",
- "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9",
+ "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32",
+ "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32",
"shasum": ""
},
"require": {
@@ -305,9 +305,9 @@
"versioning"
],
"support": {
- "irc": "irc://irc.freenode.org/composer",
+ "irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.3.2"
+ "source": "https://github.com/composer/semver/tree/3.4.0"
},
"funding": [
{
@@ -323,7 +323,7 @@
"type": "tidelift"
}
],
- "time": "2022-04-01T19:23:25+00:00"
+ "time": "2023-08-31T09:50:34+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -430,16 +430,16 @@
},
{
"name": "doctrine/deprecations",
- "version": "v1.1.1",
+ "version": "1.1.2",
"source": {
"type": "git",
"url": "https://github.com/doctrine/deprecations.git",
- "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3"
+ "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
- "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
+ "reference": "4f2d4f2836e7ec4e7a8625e75c6aa916004db931",
"shasum": ""
},
"require": {
@@ -471,9 +471,9 @@
"homepage": "https://www.doctrine-project.org/",
"support": {
"issues": "https://github.com/doctrine/deprecations/issues",
- "source": "https://github.com/doctrine/deprecations/tree/v1.1.1"
+ "source": "https://github.com/doctrine/deprecations/tree/1.1.2"
},
- "time": "2023-06-03T09:27:29+00:00"
+ "time": "2023-09-27T20:04:15+00:00"
},
{
"name": "felixfbecker/advanced-json-rpc",
@@ -578,16 +578,16 @@
},
{
"name": "fidry/cpu-core-counter",
- "version": "0.5.1",
+ "version": "1.0.0",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623"
+ "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
- "reference": "b58e5a3933e541dc286cc91fc4f3898bbc6f1623",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/85193c0b0cb5c47894b5eaec906e946f054e7077",
+ "reference": "85193c0b0cb5c47894b5eaec906e946f054e7077",
"shasum": ""
},
"require": {
@@ -595,13 +595,13 @@
},
"require-dev": {
"fidry/makefile": "^0.2.0",
+ "fidry/php-cs-fixer-config": "^1.1.2",
"phpstan/extension-installer": "^1.2.0",
"phpstan/phpstan": "^1.9.2",
"phpstan/phpstan-deprecation-rules": "^1.0.0",
"phpstan/phpstan-phpunit": "^1.2.2",
"phpstan/phpstan-strict-rules": "^1.4.4",
- "phpunit/phpunit": "^9.5.26 || ^8.5.31",
- "theofidry/php-cs-fixer-config": "^1.0",
+ "phpunit/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts/strict-phpunit": "^7.5"
},
"type": "library",
@@ -627,7 +627,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/0.5.1"
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.0.0"
},
"funding": [
{
@@ -635,7 +635,7 @@
"type": "github"
}
],
- "time": "2022-12-24T12:35:10+00:00"
+ "time": "2023-09-17T21:38:23+00:00"
},
{
"name": "netresearch/jsonmapper",
@@ -690,16 +690,16 @@
},
{
"name": "nikic/php-parser",
- "version": "v4.17.1",
+ "version": "v4.18.0",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d"
+ "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
- "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/1bcbb2179f97633e98bbbc87044ee2611c7d7999",
+ "reference": "1bcbb2179f97633e98bbbc87044ee2611c7d7999",
"shasum": ""
},
"require": {
@@ -740,9 +740,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1"
+ "source": "https://github.com/nikic/PHP-Parser/tree/v4.18.0"
},
- "time": "2023-08-13T19:53:39+00:00"
+ "time": "2023-12-10T21:03:43+00:00"
},
{
"name": "phpdocumentor/reflection-common",
@@ -914,16 +914,16 @@
},
{
"name": "phpstan/phpdoc-parser",
- "version": "1.23.1",
+ "version": "1.25.0",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26"
+ "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26",
- "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240",
+ "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240",
"shasum": ""
},
"require": {
@@ -955,9 +955,9 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/1.25.0"
},
- "time": "2023-08-03T16:32:59+00:00"
+ "time": "2024-01-04T17:06:16+00:00"
},
{
"name": "psr/container",
@@ -1009,30 +1009,30 @@
},
{
"name": "psr/log",
- "version": "1.1.4",
+ "version": "2.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/ef29f6d262798707a9edd554e2b82517ef3a9376",
+ "reference": "ef29f6d262798707a9edd554e2b82517ef3a9376",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "2.0.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1053,9 +1053,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.4"
+ "source": "https://github.com/php-fig/log/tree/2.0.0"
},
- "time": "2021-05-03T11:20:27+00:00"
+ "time": "2021-07-14T16:41:46+00:00"
},
{
"name": "sebastian/diff",
@@ -1125,26 +1125,25 @@
},
{
"name": "spatie/array-to-xml",
- "version": "2.17.1",
+ "version": "3.2.2",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
- "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46"
+ "reference": "96be97e664c87613121d073ea39af4c74e57a7f8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/5cbec9c6ab17e320c58a259f0cebe88bde4a7c46",
- "reference": "5cbec9c6ab17e320c58a259f0cebe88bde4a7c46",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/96be97e664c87613121d073ea39af4c74e57a7f8",
+ "reference": "96be97e664c87613121d073ea39af4c74e57a7f8",
"shasum": ""
},
"require": {
"ext-dom": "*",
- "php": "^7.4|^8.0"
+ "php": "^8.0"
},
"require-dev": {
"mockery/mockery": "^1.2",
"pestphp/pest": "^1.21",
- "phpunit/phpunit": "^9.0",
"spatie/pest-plugin-snapshots": "^1.1"
},
"type": "library",
@@ -1173,7 +1172,7 @@
"xml"
],
"support": {
- "source": "https://github.com/spatie/array-to-xml/tree/2.17.1"
+ "source": "https://github.com/spatie/array-to-xml/tree/3.2.2"
},
"funding": [
{
@@ -1185,20 +1184,20 @@
"type": "github"
}
],
- "time": "2022-12-26T08:22:07+00:00"
+ "time": "2023-11-14T14:08:51+00:00"
},
{
"name": "symfony/console",
- "version": "v5.4.28",
+ "version": "v5.4.34",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "f4f71842f24c2023b91237c72a365306f3c58827"
+ "reference": "4b4d8cd118484aa604ec519062113dd87abde18c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/f4f71842f24c2023b91237c72a365306f3c58827",
- "reference": "f4f71842f24c2023b91237c72a365306f3c58827",
+ "url": "https://api.github.com/repos/symfony/console/zipball/4b4d8cd118484aa604ec519062113dd87abde18c",
+ "reference": "4b4d8cd118484aa604ec519062113dd87abde18c",
"shasum": ""
},
"require": {
@@ -1268,7 +1267,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/v5.4.28"
+ "source": "https://github.com/symfony/console/tree/v5.4.34"
},
"funding": [
{
@@ -1284,7 +1283,7 @@
"type": "tidelift"
}
],
- "time": "2023-08-07T06:12:30+00:00"
+ "time": "2023-12-08T13:33:03+00:00"
},
{
"name": "symfony/deprecation-contracts",
@@ -1994,16 +1993,16 @@
},
{
"name": "symfony/string",
- "version": "v5.4.26",
+ "version": "v5.4.34",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "1181fe9270e373537475e826873b5867b863883c"
+ "reference": "e3f98bfc7885c957488f443df82d97814a3ce061"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c",
- "reference": "1181fe9270e373537475e826873b5867b863883c",
+ "url": "https://api.github.com/repos/symfony/string/zipball/e3f98bfc7885c957488f443df82d97814a3ce061",
+ "reference": "e3f98bfc7885c957488f443df82d97814a3ce061",
"shasum": ""
},
"require": {
@@ -2060,7 +2059,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/v5.4.26"
+ "source": "https://github.com/symfony/string/tree/v5.4.34"
},
"funding": [
{
@@ -2076,20 +2075,20 @@
"type": "tidelift"
}
],
- "time": "2023-06-28T12:46:07+00:00"
+ "time": "2023-12-09T13:20:28+00:00"
},
{
"name": "vimeo/psalm",
- "version": "5.15.0",
+ "version": "5.19.0",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352"
+ "reference": "06b71be009a6bd6d81b9811855d6629b9fe90e1b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/5c774aca4746caf3d239d9c8cadb9f882ca29352",
- "reference": "5c774aca4746caf3d239d9c8cadb9f882ca29352",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/06b71be009a6bd6d81b9811855d6629b9fe90e1b",
+ "reference": "06b71be009a6bd6d81b9811855d6629b9fe90e1b",
"shasum": ""
},
"require": {
@@ -2108,14 +2107,14 @@
"ext-tokenizer": "*",
"felixfbecker/advanced-json-rpc": "^3.1",
"felixfbecker/language-server-protocol": "^1.5.2",
- "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1",
+ "fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
"netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
"nikic/php-parser": "^4.16",
"php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
"sebastian/diff": "^4.0 || ^5.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0",
- "symfony/console": "^4.1.6 || ^5.0 || ^6.0",
- "symfony/filesystem": "^5.4 || ^6.0"
+ "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
+ "symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
},
"conflict": {
"nikic/php-parser": "4.17.0"
@@ -2137,7 +2136,7 @@
"psalm/plugin-phpunit": "^0.18",
"slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.6",
- "symfony/process": "^4.4 || ^5.0 || ^6.0"
+ "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
},
"suggest": {
"ext-curl": "In order to send data to shepherd",
@@ -2150,7 +2149,7 @@
"psalm-refactor",
"psalter"
],
- "type": "library",
+ "type": "project",
"extra": {
"branch-alias": {
"dev-master": "5.x-dev",
@@ -2182,10 +2181,11 @@
"static analysis"
],
"support": {
+ "docs": "https://psalm.dev/docs",
"issues": "https://github.com/vimeo/psalm/issues",
- "source": "https://github.com/vimeo/psalm/tree/5.15.0"
+ "source": "https://github.com/vimeo/psalm"
},
- "time": "2023-08-20T23:07:30+00:00"
+ "time": "2024-01-09T21:02:43+00:00"
},
{
"name": "webmozart/assert",
@@ -2254,7 +2254,7 @@
"platform": [],
"platform-dev": [],
"platform-overrides": {
- "php": "7.4"
+ "php": "8.0"
},
- "plugin-api-version": "2.3.0"
+ "plugin-api-version": "2.6.0"
}