diff options
173 files changed, 989 insertions, 493 deletions
diff --git a/apps/cloud_federation_api/l10n/ca.js b/apps/cloud_federation_api/l10n/ca.js index 389da07af89..80abccba99e 100644 --- a/apps/cloud_federation_api/l10n/ca.js +++ b/apps/cloud_federation_api/l10n/ca.js @@ -1,8 +1,8 @@ OC.L10N.register( "cloud_federation_api", { - "Cloud Federation API" : "API de la Federació cloud", - "Enable clouds to communicate with each other and exchange data" : "Permetre que els núvols es comuniquin entre si i intercanviar dades", - "The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de la Federació cloud permet que diverses instàncies Nextcloud es comuniquin entre si i intercanviin dades." + "Cloud Federation API" : "API de federació de núvols", + "Enable clouds to communicate with each other and exchange data" : "Permeteu que els núvols es comuniquin entre si i intercanviïn dades", + "The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de federació de núvols permet que diverses instàncies del Nextcloud es comuniquin entre si i intercanviïn dades." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/cloud_federation_api/l10n/ca.json b/apps/cloud_federation_api/l10n/ca.json index fa2cad5e80f..fae66aea62a 100644 --- a/apps/cloud_federation_api/l10n/ca.json +++ b/apps/cloud_federation_api/l10n/ca.json @@ -1,6 +1,6 @@ { "translations": { - "Cloud Federation API" : "API de la Federació cloud", - "Enable clouds to communicate with each other and exchange data" : "Permetre que els núvols es comuniquin entre si i intercanviar dades", - "The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de la Federació cloud permet que diverses instàncies Nextcloud es comuniquin entre si i intercanviin dades." + "Cloud Federation API" : "API de federació de núvols", + "Enable clouds to communicate with each other and exchange data" : "Permeteu que els núvols es comuniquin entre si i intercanviïn dades", + "The Cloud Federation API enables various Nextcloud instances to communicate with each other and to exchange data." : "L'API de federació de núvols permet que diverses instàncies del Nextcloud es comuniquin entre si i intercanviïn dades." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/comments/l10n/cs.js b/apps/comments/l10n/cs.js index 34410e94adb..a0eceea58fd 100644 --- a/apps/comments/l10n/cs.js +++ b/apps/comments/l10n/cs.js @@ -3,14 +3,14 @@ OC.L10N.register( { "Comments" : "Komentáře", "You commented" : "Okomentovali jste", - "%1$s commented" : "%1$s okomentován", + "%1$s commented" : "%1$s okomentováno", "{author} commented" : "{author} okomentoval(a)", "You commented on %1$s" : "Okomentovali jste %1$s", "You commented on {file}" : "Okomentovali jste {file}", "%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s", "{author} commented on {file}" : "{author} okomentoval(a) {file}", "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán", + "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán", "{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“", "Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům", "Edit comment" : "Upravit komentář", @@ -28,7 +28,7 @@ OC.L10N.register( "Comment deleted" : "Komentář smazán", "An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře", "An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán", + "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán", "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“" }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/comments/l10n/cs.json b/apps/comments/l10n/cs.json index f89994cf2dd..ea8ca31df6d 100644 --- a/apps/comments/l10n/cs.json +++ b/apps/comments/l10n/cs.json @@ -1,14 +1,14 @@ { "translations": { "Comments" : "Komentáře", "You commented" : "Okomentovali jste", - "%1$s commented" : "%1$s okomentován", + "%1$s commented" : "%1$s okomentováno", "{author} commented" : "{author} okomentoval(a)", "You commented on %1$s" : "Okomentovali jste %1$s", "You commented on {file}" : "Okomentovali jste {file}", "%1$s commented on %2$s" : "%1$s okomentoval(a) %2$s", "{author} commented on {file}" : "{author} okomentoval(a) {file}", "<strong>Comments</strong> for files" : "<strong>Komentáře</strong> k souborům", - "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán", + "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán", "{user} mentioned you in a comment on \"{file}\"" : "{user} vás zmínil(a) v komentáři u „{file}“", "Files app plugin to add comments to files" : "Zásuvný modul do aplikace Soubory pro přidávání komentářů k souborům", "Edit comment" : "Upravit komentář", @@ -26,7 +26,7 @@ "Comment deleted" : "Komentář smazán", "An error occurred while trying to delete the comment" : "Došlo k chybě při pokusu o smazání komentáře", "An error occurred while trying to create the comment" : "Došlo k chybě při pokusu o vytvoření komentáře", - "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni v souboru „{file}“, v komentáři od uživatele, který byl později smazán", + "You were mentioned on “{file}”, in a comment by a user that has since been deleted" : "Byli jste zmíněni u souboru „{file}“, v komentáři od uživatele, který byl později smazán", "{user} mentioned you in a comment on “{file}”" : "{user} vás zmínil(a) v komentáři u „{file}“" },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/comments/l10n/uk.js b/apps/comments/l10n/uk.js index d294560a8b9..42a7aaa41d0 100644 --- a/apps/comments/l10n/uk.js +++ b/apps/comments/l10n/uk.js @@ -12,7 +12,7 @@ OC.L10N.register( "<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів", "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{file}\" у коментарі користувача, який згодом було видалено", "{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"", - "Files app plugin to add comments to files" : "Додаток до застосунку Файли (Files) для коментування файлів", + "Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів", "Edit comment" : "Редагувати коментар", "Delete comment" : "Вилучити коментар", "Cancel edit" : "Скасувати редагування", diff --git a/apps/comments/l10n/uk.json b/apps/comments/l10n/uk.json index dc961e457eb..7b7055d4367 100644 --- a/apps/comments/l10n/uk.json +++ b/apps/comments/l10n/uk.json @@ -10,7 +10,7 @@ "<strong>Comments</strong> for files" : "<strong>Коментів</strong> для файлів", "You were mentioned on \"{file}\", in a comment by a user that has since been deleted" : "Вас згадали в \"{file}\" у коментарі користувача, який згодом було видалено", "{user} mentioned you in a comment on \"{file}\"" : "{user} згадав вас у коментарі до \"{file}\"", - "Files app plugin to add comments to files" : "Додаток до застосунку Файли (Files) для коментування файлів", + "Files app plugin to add comments to files" : "Плаґін до застосунку и\"Файли\" для додавання коментарів до файлів", "Edit comment" : "Редагувати коментар", "Delete comment" : "Вилучити коментар", "Cancel edit" : "Скасувати редагування", diff --git a/apps/dashboard/l10n/ca.js b/apps/dashboard/l10n/ca.js index 2cfdd61b144..2607b684ce8 100644 --- a/apps/dashboard/l10n/ca.js +++ b/apps/dashboard/l10n/ca.js @@ -16,7 +16,7 @@ OC.L10N.register( "Status" : "Estat", "Good morning" : "Bon dia", "Good morning, {name}" : "Bon dia, {name}", - "Good afternoon" : "Salutació", + "Good afternoon" : "Bona tarda", "Good afternoon, {name}" : "Bona tarda, {name}", "Good evening" : "Bona tarda", "Good evening, {name}" : "Bona nit, {name}", diff --git a/apps/dashboard/l10n/ca.json b/apps/dashboard/l10n/ca.json index 2f7d8585f19..3e9bbaa3b89 100644 --- a/apps/dashboard/l10n/ca.json +++ b/apps/dashboard/l10n/ca.json @@ -14,7 +14,7 @@ "Status" : "Estat", "Good morning" : "Bon dia", "Good morning, {name}" : "Bon dia, {name}", - "Good afternoon" : "Salutació", + "Good afternoon" : "Bona tarda", "Good afternoon, {name}" : "Bona tarda, {name}", "Good evening" : "Bona tarda", "Good evening, {name}" : "Bona nit, {name}", diff --git a/apps/dashboard/l10n/uk.js b/apps/dashboard/l10n/uk.js index 74ead31128a..8ffbf263232 100644 --- a/apps/dashboard/l10n/uk.js +++ b/apps/dashboard/l10n/uk.js @@ -2,11 +2,11 @@ OC.L10N.register( "dashboard", { "Dashboard" : "Майстерня", - "Dashboard app" : "Додаток приладової панелі", + "Dashboard app" : "Застосунок з панеллю віджетів ", "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Почніть свій день інформовано \nІнформаційна панель Nextcloud — це ваша початкова точка дня, яка дає вам змогу огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень чату, вхідні квитки, останні твіти та багато іншого! Користувачі можуть додавати віджети вони люблять і змінюють фон на свій смак.", "Customize" : "Редагувати", "Edit widgets" : "Редагувати віджети", - "Get more widgets from the App Store" : "Більше віджетів у магазині додатків", + "Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків", "Weather service" : "Погода", "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Для забезпечення вашої конфіденційності дані про погоду запитуються вашим сервером Nextcloud від вашого імені, тому служба погоди не отримує особисту інформацію.", "Weather data from Met.no" : "Дані про погоду з Met.no", diff --git a/apps/dashboard/l10n/uk.json b/apps/dashboard/l10n/uk.json index 9f424eb5830..280e3129de0 100644 --- a/apps/dashboard/l10n/uk.json +++ b/apps/dashboard/l10n/uk.json @@ -1,10 +1,10 @@ { "translations": { "Dashboard" : "Майстерня", - "Dashboard app" : "Додаток приладової панелі", + "Dashboard app" : "Застосунок з панеллю віджетів ", "Start your day informed\n\nThe Nextcloud Dashboard is your starting point of the day, giving you an\noverview of your upcoming appointments, urgent emails, chat messages,\nincoming tickets, latest tweets and much more! Users can add the widgets\nthey like and change the background to their liking." : "Почніть свій день інформовано \nІнформаційна панель Nextcloud — це ваша початкова точка дня, яка дає вам змогу огляд ваших майбутніх зустрічей, термінових електронних листів, повідомлень чату, вхідні квитки, останні твіти та багато іншого! Користувачі можуть додавати віджети вони люблять і змінюють фон на свій смак.", "Customize" : "Редагувати", "Edit widgets" : "Редагувати віджети", - "Get more widgets from the App Store" : "Більше віджетів у магазині додатків", + "Get more widgets from the App Store" : "Більше віджетів у каталозі застосунків", "Weather service" : "Погода", "For your privacy, the weather data is requested by your Nextcloud server on your behalf so the weather service receives no personal information." : "Для забезпечення вашої конфіденційності дані про погоду запитуються вашим сервером Nextcloud від вашого імені, тому служба погоди не отримує особисту інформацію.", "Weather data from Met.no" : "Дані про погоду з Met.no", diff --git a/apps/dav/l10n/fr.js b/apps/dav/l10n/fr.js index fb7c243c55c..e5ced44f791 100644 --- a/apps/dav/l10n/fr.js +++ b/apps/dav/l10n/fr.js @@ -2,6 +2,7 @@ OC.L10N.register( "dav", { "Calendar" : "Agenda", + "To-dos" : "Pense-bêtes", "Personal" : "Personnel", "{actor} created calendar {calendar}" : "{actor} a créé l'agenda {calendar}", "You created calendar {calendar}" : "Vous avez créé l'agenda {calendar}", @@ -31,12 +32,27 @@ OC.L10N.register( "You deleted event {event} from calendar {calendar}" : "Vous avez supprimé l'évènement {event} de l'agenda {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} a mis à jour l'évènement {event} dans l'agenda {calendar}", "You updated event {event} in calendar {calendar}" : "Vous avez mis à jour l'évènement {event} dans l'agenda {calendar}", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} a déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Vous avez déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} a restauré l'événement {event} dans l'agenda {calendar}", "You restored event {event} of calendar {calendar}" : "Vous avez restauré l'événement {event} dans l'agenda {calendar}", "Busy" : "Occupé", + "{actor} created to-do {todo} in list {calendar}" : "{actor} a créé le pense-bête {todo} dans la liste {calendar}", + "You created to-do {todo} in list {calendar}" : "Vous avez créé un pense-bête {todo} dans la liste {calendar}", + "{actor} deleted to-do {todo} from list {calendar}" : "{actor} a supprimé un pense-bête {todo} de la liste {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Vous avez supprimé le pense-bête {todo} de la liste {calendar}", + "{actor} updated to-do {todo} in list {calendar}" : "{actor} a mis à jour le pense-bête {todo} dans la liste {calendar}", + "You updated to-do {todo} in list {calendar}" : "Vous avez mis à jour le pense-bête {todo} dans la liste {calendar}", + "{actor} solved to-do {todo} in list {calendar}" : "{actor} a résolu le pense-bête {todo} dans la liste {calendar}", + "You solved to-do {todo} in list {calendar}" : "Vous avez résolu le pense-bête {todo} dans la liste {calendar}", + "{actor} reopened to-do {todo} in list {calendar}" : "{actor} a réouvert le pense-bête {todo} dans la liste {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Vous avez réouvert le pense-bête {todo} dans la liste {calendar}", + "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} a déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Vous avez déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}", "Calendar, contacts and tasks" : "Agenda, contacts et tâches", "A <strong>calendar</strong> was modified" : "Un <strong>agenda</strong> a été modifié", "A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié", + "A calendar <strong>to-do</strong> was modified" : "Un calendrier <strong>pense-bête</strong> a été modifié", "Contact birthdays" : "Anniversaires des contacts", "Death of %s" : "Mort de %s", "Calendar:" : "Agenda:", @@ -143,7 +159,11 @@ OC.L10N.register( "Friday" : "Vendredi", "Saturday" : "Samedi", "Sunday" : "Dimanche", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Définir automatiquement le statut \"Ne pas déranger\" en dehors des heures de disponibilité pour désactiver toutes les notifications.", "Save" : "Enregistrer", + "Failed to load availability" : "Impossible de charger la disponibilité", + "Saved availability" : "Disponibilité sauvegardée", + "Failed to save availability" : "Impossible de sauvegarder la disponibilité", "Calendar server" : "Serveur de calendrier", "Send invitations to attendees" : "Envoyer des invitations aux participants", "Automatically generate a birthday calendar" : "Générer automatiquement un agenda d'anniversaire", diff --git a/apps/dav/l10n/fr.json b/apps/dav/l10n/fr.json index ac38d04617a..7b2a703ff91 100644 --- a/apps/dav/l10n/fr.json +++ b/apps/dav/l10n/fr.json @@ -1,5 +1,6 @@ { "translations": { "Calendar" : "Agenda", + "To-dos" : "Pense-bêtes", "Personal" : "Personnel", "{actor} created calendar {calendar}" : "{actor} a créé l'agenda {calendar}", "You created calendar {calendar}" : "Vous avez créé l'agenda {calendar}", @@ -29,12 +30,27 @@ "You deleted event {event} from calendar {calendar}" : "Vous avez supprimé l'évènement {event} de l'agenda {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} a mis à jour l'évènement {event} dans l'agenda {calendar}", "You updated event {event} in calendar {calendar}" : "Vous avez mis à jour l'évènement {event} dans l'agenda {calendar}", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} a déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Vous avez déplacé l'événement {event} du calendrier {sourceCalendar} au calendrier {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} a restauré l'événement {event} dans l'agenda {calendar}", "You restored event {event} of calendar {calendar}" : "Vous avez restauré l'événement {event} dans l'agenda {calendar}", "Busy" : "Occupé", + "{actor} created to-do {todo} in list {calendar}" : "{actor} a créé le pense-bête {todo} dans la liste {calendar}", + "You created to-do {todo} in list {calendar}" : "Vous avez créé un pense-bête {todo} dans la liste {calendar}", + "{actor} deleted to-do {todo} from list {calendar}" : "{actor} a supprimé un pense-bête {todo} de la liste {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Vous avez supprimé le pense-bête {todo} de la liste {calendar}", + "{actor} updated to-do {todo} in list {calendar}" : "{actor} a mis à jour le pense-bête {todo} dans la liste {calendar}", + "You updated to-do {todo} in list {calendar}" : "Vous avez mis à jour le pense-bête {todo} dans la liste {calendar}", + "{actor} solved to-do {todo} in list {calendar}" : "{actor} a résolu le pense-bête {todo} dans la liste {calendar}", + "You solved to-do {todo} in list {calendar}" : "Vous avez résolu le pense-bête {todo} dans la liste {calendar}", + "{actor} reopened to-do {todo} in list {calendar}" : "{actor} a réouvert le pense-bête {todo} dans la liste {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Vous avez réouvert le pense-bête {todo} dans la liste {calendar}", + "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} a déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Vous avez déplacé le pense-bête {todo} de la liste {sourceCalendar} à la liste {targetCalendar}", "Calendar, contacts and tasks" : "Agenda, contacts et tâches", "A <strong>calendar</strong> was modified" : "Un <strong>agenda</strong> a été modifié", "A calendar <strong>event</strong> was modified" : "Un <strong>événement</strong> de l'agenda a été modifié", + "A calendar <strong>to-do</strong> was modified" : "Un calendrier <strong>pense-bête</strong> a été modifié", "Contact birthdays" : "Anniversaires des contacts", "Death of %s" : "Mort de %s", "Calendar:" : "Agenda:", @@ -141,7 +157,11 @@ "Friday" : "Vendredi", "Saturday" : "Samedi", "Sunday" : "Dimanche", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Définir automatiquement le statut \"Ne pas déranger\" en dehors des heures de disponibilité pour désactiver toutes les notifications.", "Save" : "Enregistrer", + "Failed to load availability" : "Impossible de charger la disponibilité", + "Saved availability" : "Disponibilité sauvegardée", + "Failed to save availability" : "Impossible de sauvegarder la disponibilité", "Calendar server" : "Serveur de calendrier", "Send invitations to attendees" : "Envoyer des invitations aux participants", "Automatically generate a birthday calendar" : "Générer automatiquement un agenda d'anniversaire", diff --git a/apps/dav/l10n/sk.js b/apps/dav/l10n/sk.js index 1c62436025e..e4f5991d6e3 100644 --- a/apps/dav/l10n/sk.js +++ b/apps/dav/l10n/sk.js @@ -2,6 +2,7 @@ OC.L10N.register( "dav", { "Calendar" : "Kalendár", + "To-dos" : "Úlohy", "Personal" : "Osobné", "{actor} created calendar {calendar}" : "[actor] vytvoril kalendár [calendar]", "You created calendar {calendar}" : "Vytvorili ste kalendár {calendar}", @@ -31,12 +32,27 @@ OC.L10N.register( "You deleted event {event} from calendar {calendar}" : "Zmazali ste udalosť {event} z kalendára {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval udalosť {event} v kalendári {calendar}", "You updated event {event} in calendar {calendar}" : "Aktualizovali ste udalosť {event} v kalendári {calendar}", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} presunul udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Presunuli ste udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} obnovil udalosť {event} v kalendári {calendar}", "You restored event {event} of calendar {calendar}" : "Obnovili ste udalosť {event} v kalendári {calendar}", "Busy" : "Zaneprázdnený", + "{actor} created to-do {todo} in list {calendar}" : "{actor} vytvoril úlohu {todo} v zozname {calendar}", + "You created to-do {todo} in list {calendar}" : "Vytvorili ste úlohu {todo} v zozname {calendar}", + "{actor} deleted to-do {todo} from list {calendar}" : "{actor} zmazal úlohu {todo} zo zoznamu {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Zmazali ste úlohu {todo} zo zoznamu {calendar}", + "{actor} updated to-do {todo} in list {calendar}" : "{actor} upravil úlohu {todo} v zozname {calendar}", + "You updated to-do {todo} in list {calendar}" : "Upravili ste úlohu {todo} v zozname {calendar}", + "{actor} solved to-do {todo} in list {calendar}" : "{actor} vyriešil úlohu {todo} v zozname {calendar}", + "You solved to-do {todo} in list {calendar}" : "Vyriešili ste úlohu {todo} v zozname {calendar}", + "{actor} reopened to-do {todo} in list {calendar}" : "{actor} znovu otvoril úlohu {todo} v zozname {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Otvorili ste znovu úlohu {todo} v zozname {calendar}", + "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} presunul udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Presunuli ste udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}", "Calendar, contacts and tasks" : "Kalendár, kontakty a úlohy", "A <strong>calendar</strong> was modified" : "<strong>kalendár</strong> bol upravený", "A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená", + "A calendar <strong>to-do</strong> was modified" : "Kalendár <strong>úloh</strong> bol upravený", "Contact birthdays" : "Narodeniny kontaktu", "Death of %s" : "Dátum úmrtia %s", "Calendar:" : "Kalendár:", @@ -143,6 +159,7 @@ OC.L10N.register( "Friday" : "Piatok", "Saturday" : "Sobota", "Sunday" : "Nedeľa", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automaticky nastaviť stav používateľa na „Nerušiť“ ak nie ste dostupný, pre stlmenie všetkých upozornení.", "Save" : "Uložiť", "Failed to load availability" : "Nepodarilo sa načítať dostupnosť", "Saved availability" : "Dostupnosť bola uložená", diff --git a/apps/dav/l10n/sk.json b/apps/dav/l10n/sk.json index 2b2ce1b30fb..577ae897485 100644 --- a/apps/dav/l10n/sk.json +++ b/apps/dav/l10n/sk.json @@ -1,5 +1,6 @@ { "translations": { "Calendar" : "Kalendár", + "To-dos" : "Úlohy", "Personal" : "Osobné", "{actor} created calendar {calendar}" : "[actor] vytvoril kalendár [calendar]", "You created calendar {calendar}" : "Vytvorili ste kalendár {calendar}", @@ -29,12 +30,27 @@ "You deleted event {event} from calendar {calendar}" : "Zmazali ste udalosť {event} z kalendára {calendar}", "{actor} updated event {event} in calendar {calendar}" : "{actor} aktualizoval udalosť {event} v kalendári {calendar}", "You updated event {event} in calendar {calendar}" : "Aktualizovali ste udalosť {event} v kalendári {calendar}", + "{actor} moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "{actor} presunul udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}", + "You moved event {event} from calendar {sourceCalendar} to calendar {targetCalendar}" : "Presunuli ste udalosť {event} z kalendára {sourceCalendar} do kalendára {targetCalendar}", "{actor} restored event {event} of calendar {calendar}" : "{actor} obnovil udalosť {event} v kalendári {calendar}", "You restored event {event} of calendar {calendar}" : "Obnovili ste udalosť {event} v kalendári {calendar}", "Busy" : "Zaneprázdnený", + "{actor} created to-do {todo} in list {calendar}" : "{actor} vytvoril úlohu {todo} v zozname {calendar}", + "You created to-do {todo} in list {calendar}" : "Vytvorili ste úlohu {todo} v zozname {calendar}", + "{actor} deleted to-do {todo} from list {calendar}" : "{actor} zmazal úlohu {todo} zo zoznamu {calendar}", + "You deleted to-do {todo} from list {calendar}" : "Zmazali ste úlohu {todo} zo zoznamu {calendar}", + "{actor} updated to-do {todo} in list {calendar}" : "{actor} upravil úlohu {todo} v zozname {calendar}", + "You updated to-do {todo} in list {calendar}" : "Upravili ste úlohu {todo} v zozname {calendar}", + "{actor} solved to-do {todo} in list {calendar}" : "{actor} vyriešil úlohu {todo} v zozname {calendar}", + "You solved to-do {todo} in list {calendar}" : "Vyriešili ste úlohu {todo} v zozname {calendar}", + "{actor} reopened to-do {todo} in list {calendar}" : "{actor} znovu otvoril úlohu {todo} v zozname {calendar}", + "You reopened to-do {todo} in list {calendar}" : "Otvorili ste znovu úlohu {todo} v zozname {calendar}", + "{actor} moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "{actor} presunul udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}", + "You moved to-do {todo} from list {sourceCalendar} to list {targetCalendar}" : "Presunuli ste udalosť {event} zo zoznamu {sourceCalendar} do zoznamu {targetCalendar}", "Calendar, contacts and tasks" : "Kalendár, kontakty a úlohy", "A <strong>calendar</strong> was modified" : "<strong>kalendár</strong> bol upravený", "A calendar <strong>event</strong> was modified" : "<strong>Udalosť</strong> v kalendári bola upravená", + "A calendar <strong>to-do</strong> was modified" : "Kalendár <strong>úloh</strong> bol upravený", "Contact birthdays" : "Narodeniny kontaktu", "Death of %s" : "Dátum úmrtia %s", "Calendar:" : "Kalendár:", @@ -141,6 +157,7 @@ "Friday" : "Piatok", "Saturday" : "Sobota", "Sunday" : "Nedeľa", + "Automatically set user status to \"Do not disturb\" outside of availability to mute all notifications." : "Automaticky nastaviť stav používateľa na „Nerušiť“ ak nie ste dostupný, pre stlmenie všetkých upozornení.", "Save" : "Uložiť", "Failed to load availability" : "Nepodarilo sa načítať dostupnosť", "Saved availability" : "Dostupnosť bola uložená", diff --git a/apps/dav/l10n/uk.js b/apps/dav/l10n/uk.js index 8d8e7752321..c13be4d8b20 100644 --- a/apps/dav/l10n/uk.js +++ b/apps/dav/l10n/uk.js @@ -183,7 +183,7 @@ OC.L10N.register( "Number of guests" : "Кількість гостей", "Comment" : "Коментар", "Your attendance was updated successfully." : "Ваша участь успішно оновлена.", - "Todos" : "До роботи", + "Todos" : "Завдання", "{actor} created todo {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}", "You created todo {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}", "{actor} deleted todo {todo} from list {calendar}" : "{actor} вилучили завдання {todo} зі списку {calendar}", diff --git a/apps/dav/l10n/uk.json b/apps/dav/l10n/uk.json index afd346c7142..29459fcca85 100644 --- a/apps/dav/l10n/uk.json +++ b/apps/dav/l10n/uk.json @@ -181,7 +181,7 @@ "Number of guests" : "Кількість гостей", "Comment" : "Коментар", "Your attendance was updated successfully." : "Ваша участь успішно оновлена.", - "Todos" : "До роботи", + "Todos" : "Завдання", "{actor} created todo {todo} in list {calendar}" : "{actor} створив завдання {todo} у списку {calendar}", "You created todo {todo} in list {calendar}" : "Ви створили завдання {todo} у списку {calendar}", "{actor} deleted todo {todo} from list {calendar}" : "{actor} вилучили завдання {todo} зі списку {calendar}", diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index a147d785cc7..3d5fdb14588 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -64,6 +64,7 @@ use OCA\DAV\Events\CalendarUpdatedEvent; use OCA\DAV\Events\SubscriptionCreatedEvent; use OCA\DAV\Events\SubscriptionDeletedEvent; use OCA\DAV\Events\SubscriptionUpdatedEvent; +use OCP\AppFramework\Db\TTransactional; use OCP\Calendar\Exceptions\CalendarException; use OCP\DB\Exception; use OCP\DB\QueryBuilder\IQueryBuilder; @@ -119,6 +120,9 @@ use function time; * @package OCA\DAV\CalDAV */ class CalDavBackend extends AbstractBackend implements SyncSupport, SubscriptionSupport, SchedulingSupport { + + use TTransactional; + public const CALENDAR_TYPE_CALENDAR = 0; public const CALENDAR_TYPE_SUBSCRIPTION = 1; @@ -812,15 +816,19 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } } - $query = $this->db->getQueryBuilder(); - $query->insert('calendars'); - foreach ($values as $column => $value) { - $query->setValue($column, $query->createNamedParameter($value)); - } - $query->executeStatement(); - $calendarId = $query->getLastInsertId(); + [$calendarId, $calendarData] = $this->atomic(function() use ($values) { + $query = $this->db->getQueryBuilder(); + $query->insert('calendars'); + foreach ($values as $column => $value) { + $query->setValue($column, $query->createNamedParameter($value)); + } + $query->executeStatement(); + $calendarId = $query->getLastInsertId(); + + $calendarData = $this->getCalendarById($calendarId); + return [$calendarId, $calendarData]; + }, $this->db); - $calendarData = $this->getCalendarById($calendarId); $this->dispatcher->dispatchTyped(new CalendarCreatedEvent((int)$calendarId, $calendarData)); return $calendarId; @@ -2446,21 +2454,22 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription } } - $valuesToInsert = []; - - $query = $this->db->getQueryBuilder(); - - foreach (array_keys($values) as $name) { - $valuesToInsert[$name] = $query->createNamedParameter($values[$name]); - } + [$subscriptionId, $subscriptionRow] = $this->atomic(function() use ($values) { + $valuesToInsert = []; + $query = $this->db->getQueryBuilder(); + foreach (array_keys($values) as $name) { + $valuesToInsert[$name] = $query->createNamedParameter($values[$name]); + } + $query->insert('calendarsubscriptions') + ->values($valuesToInsert) + ->executeStatement(); - $query->insert('calendarsubscriptions') - ->values($valuesToInsert) - ->executeStatement(); + $subscriptionId = $query->getLastInsertId(); - $subscriptionId = $query->getLastInsertId(); + $subscriptionRow = $this->getSubscriptionById($subscriptionId); + return [$subscriptionId, $subscriptionRow]; + }, $this->db); - $subscriptionRow = $this->getSubscriptionById($subscriptionId); $this->dispatcher->dispatchTyped(new SubscriptionCreatedEvent($subscriptionId, $subscriptionRow)); return $subscriptionId; diff --git a/apps/dav/lib/CalDAV/CalendarImpl.php b/apps/dav/lib/CalDAV/CalendarImpl.php index 4eef1e7f8d3..53cde5a7b75 100644 --- a/apps/dav/lib/CalDAV/CalendarImpl.php +++ b/apps/dav/lib/CalDAV/CalendarImpl.php @@ -131,6 +131,13 @@ class CalendarImpl implements ICreateFromString { } /** + * @since 26.0.0 + */ + public function isDeleted(): bool { + return $this->calendar->isDeleted(); + } + + /** * Create a new calendar event for this calendar * by way of an ICS string * diff --git a/apps/encryption/l10n/uk.js b/apps/encryption/l10n/uk.js index 1e01ad6db94..3180af97d8e 100644 --- a/apps/encryption/l10n/uk.js +++ b/apps/encryption/l10n/uk.js @@ -35,7 +35,7 @@ OC.L10N.register( "The share will expire on %s." : "Спільний доступ закінчиться %s.", "Cheers!" : "Будьмо!", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Програму для шифрування ввімкнено, але ваші ключі не ініціалізовано. Будь ласка, вийдіть із системи та увійдіть знову", - "Encrypt the home storage" : "Зашифрувати домашню теку", + "Encrypt the home storage" : "Зашифрувати домашній каталог", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Увімкнення цього параметра шифрує всі файли, що зберігаються в основній пам’яті, інакше будуть зашифровані лише файли на зовнішній пам’яті", "Enable recovery key" : "Увімкнути ключ відновлення", "Disable recovery key" : "Вимкнути ключ відновлення", diff --git a/apps/encryption/l10n/uk.json b/apps/encryption/l10n/uk.json index aed98dbff56..fcc3038841c 100644 --- a/apps/encryption/l10n/uk.json +++ b/apps/encryption/l10n/uk.json @@ -33,7 +33,7 @@ "The share will expire on %s." : "Спільний доступ закінчиться %s.", "Cheers!" : "Будьмо!", "Encryption app is enabled but your keys are not initialized, please log-out and log-in again" : "Програму для шифрування ввімкнено, але ваші ключі не ініціалізовано. Будь ласка, вийдіть із системи та увійдіть знову", - "Encrypt the home storage" : "Зашифрувати домашню теку", + "Encrypt the home storage" : "Зашифрувати домашній каталог", "Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted" : "Увімкнення цього параметра шифрує всі файли, що зберігаються в основній пам’яті, інакше будуть зашифровані лише файли на зовнішній пам’яті", "Enable recovery key" : "Увімкнути ключ відновлення", "Disable recovery key" : "Вимкнути ключ відновлення", diff --git a/apps/federatedfilesharing/l10n/fr.js b/apps/federatedfilesharing/l10n/fr.js index 3ae8645aefe..d6d0b87d7d7 100644 --- a/apps/federatedfilesharing/l10n/fr.js +++ b/apps/federatedfilesharing/l10n/fr.js @@ -50,6 +50,7 @@ OC.L10N.register( "Share with me via Nextcloud" : "Partagez avec moi via Nextcloud", "HTML Code:" : "Code HTML :", "Copy to clipboard" : "Copier dans le presse-papiers", + "Clipboard is not available" : "Le presse-papiers n'est pas disponible", "Copy" : "Copier", "Copied!" : "Copié !", "Not supported!" : "Non supporté!", diff --git a/apps/federatedfilesharing/l10n/fr.json b/apps/federatedfilesharing/l10n/fr.json index 611b9cc8873..bcd27005b49 100644 --- a/apps/federatedfilesharing/l10n/fr.json +++ b/apps/federatedfilesharing/l10n/fr.json @@ -48,6 +48,7 @@ "Share with me via Nextcloud" : "Partagez avec moi via Nextcloud", "HTML Code:" : "Code HTML :", "Copy to clipboard" : "Copier dans le presse-papiers", + "Clipboard is not available" : "Le presse-papiers n'est pas disponible", "Copy" : "Copier", "Copied!" : "Copié !", "Not supported!" : "Non supporté!", diff --git a/apps/federatedfilesharing/l10n/sk.js b/apps/federatedfilesharing/l10n/sk.js index 206daa94c6e..87764dc03b0 100644 --- a/apps/federatedfilesharing/l10n/sk.js +++ b/apps/federatedfilesharing/l10n/sk.js @@ -39,15 +39,21 @@ OC.L10N.register( "Allow users on this server to receive group shares from other servers" : "Povoliť používateľom na tomto serveri prijímať zdieľania skupín z iných serverov", "Search global and public address book for users" : "Vyhľadávať používateľov v globálnom a verejnom adresári kontaktov", "Allow users to publish their data to a global and public address book" : "Povoliť používateľom publikovanie ich dát do globálneho a verejného adresára", + "Unable to update federated files sharing config" : "Nedá sa aktualizovať konfigurácia zdieľania federovaných súborov", "Federated Cloud" : "Združený Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Môžete zdieľať s kýmkoľvek, kto používa server Nextcloud alebo iné kompatibilné servery a služby Open Cloud Mesh (OCM)! Jednoducho vložte ich identifikátor združeného cloudu v dialógovom okne zdieľania. Má to podobu person@cloud.example.com", "Your Federated Cloud ID:" : "Vaše združené Cloud ID", "Share it so your friends can share files with you:" : "Zdieľajte to, aby mohli vaši priatelia zdieľať súbory s vami:", + "Facebook" : "Facebook", "Twitter" : "Twitter", + "Diaspora" : "Diaspora", "Add to your website" : "Pridať na svoju webstránku", "Share with me via Nextcloud" : "Sprístupnené cez Nextcloud", "HTML Code:" : "HTML kód:", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Zdieľajte so mnou prostredníctvom môjho #Nextcloud Federated Cloud ID, pozrite {url}", + "Cloud ID copied to the clipboard" : "Cloud ID bol skopírovaný do schránky", "Copy to clipboard" : "Skopírovať do schránky", + "Clipboard is not available" : "Schránka nie je prístupná", "Copy" : "Kopírovať", "Copied!" : "Skopírované!", "Not supported!" : "Nie je podporované!", diff --git a/apps/federatedfilesharing/l10n/sk.json b/apps/federatedfilesharing/l10n/sk.json index ab312d14751..4cca154a566 100644 --- a/apps/federatedfilesharing/l10n/sk.json +++ b/apps/federatedfilesharing/l10n/sk.json @@ -37,15 +37,21 @@ "Allow users on this server to receive group shares from other servers" : "Povoliť používateľom na tomto serveri prijímať zdieľania skupín z iných serverov", "Search global and public address book for users" : "Vyhľadávať používateľov v globálnom a verejnom adresári kontaktov", "Allow users to publish their data to a global and public address book" : "Povoliť používateľom publikovanie ich dát do globálneho a verejného adresára", + "Unable to update federated files sharing config" : "Nedá sa aktualizovať konfigurácia zdieľania federovaných súborov", "Federated Cloud" : "Združený Cloud", "You can share with anyone who uses a Nextcloud server or other Open Cloud Mesh (OCM) compatible servers and services! Just put their Federated Cloud ID in the share dialog. It looks like person@cloud.example.com" : "Môžete zdieľať s kýmkoľvek, kto používa server Nextcloud alebo iné kompatibilné servery a služby Open Cloud Mesh (OCM)! Jednoducho vložte ich identifikátor združeného cloudu v dialógovom okne zdieľania. Má to podobu person@cloud.example.com", "Your Federated Cloud ID:" : "Vaše združené Cloud ID", "Share it so your friends can share files with you:" : "Zdieľajte to, aby mohli vaši priatelia zdieľať súbory s vami:", + "Facebook" : "Facebook", "Twitter" : "Twitter", + "Diaspora" : "Diaspora", "Add to your website" : "Pridať na svoju webstránku", "Share with me via Nextcloud" : "Sprístupnené cez Nextcloud", "HTML Code:" : "HTML kód:", + "Share with me through my #Nextcloud Federated Cloud ID, see {url}" : "Zdieľajte so mnou prostredníctvom môjho #Nextcloud Federated Cloud ID, pozrite {url}", + "Cloud ID copied to the clipboard" : "Cloud ID bol skopírovaný do schránky", "Copy to clipboard" : "Skopírovať do schránky", + "Clipboard is not available" : "Schránka nie je prístupná", "Copy" : "Kopírovať", "Copied!" : "Skopírované!", "Not supported!" : "Nie je podporované!", diff --git a/apps/federatedfilesharing/l10n/uk.js b/apps/federatedfilesharing/l10n/uk.js index c0997b0c000..ffe2247bedb 100644 --- a/apps/federatedfilesharing/l10n/uk.js +++ b/apps/federatedfilesharing/l10n/uk.js @@ -1,11 +1,11 @@ OC.L10N.register( "federatedfilesharing", { - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Додати віддалену загальну теку {name} з {owner}@{remote}?", - "Remote share" : "Віддалена загальна тека", - "Remote share password" : "Пароль для віддаленої загальної теки", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Додати віддалений каталог {name} з {owner}@{remote}?", + "Remote share" : "Віддалений каталог", + "Remote share password" : "Пароль для віддаленого каталогу", "Cancel" : "Скасувати", - "Add remote share" : "Додати віддалену загальну теку", + "Add remote share" : "Додати віддалений каталог", "Invalid Federated Cloud ID" : "Неправильний Об'єднаний Хмарний Ідентіфікатор ", "Server to server sharing is not enabled on this server" : "На даному сервері вимкнута можливість передачі даних між серверами", "Couldn't establish a federated share." : "Не вдалося встановити об’єднаний спільний доступ.", diff --git a/apps/federatedfilesharing/l10n/uk.json b/apps/federatedfilesharing/l10n/uk.json index d5bbc69b92c..3993f39b257 100644 --- a/apps/federatedfilesharing/l10n/uk.json +++ b/apps/federatedfilesharing/l10n/uk.json @@ -1,9 +1,9 @@ { "translations": { - "Do you want to add the remote share {name} from {owner}@{remote}?" : "Додати віддалену загальну теку {name} з {owner}@{remote}?", - "Remote share" : "Віддалена загальна тека", - "Remote share password" : "Пароль для віддаленої загальної теки", + "Do you want to add the remote share {name} from {owner}@{remote}?" : "Додати віддалений каталог {name} з {owner}@{remote}?", + "Remote share" : "Віддалений каталог", + "Remote share password" : "Пароль для віддаленого каталогу", "Cancel" : "Скасувати", - "Add remote share" : "Додати віддалену загальну теку", + "Add remote share" : "Додати віддалений каталог", "Invalid Federated Cloud ID" : "Неправильний Об'єднаний Хмарний Ідентіфікатор ", "Server to server sharing is not enabled on this server" : "На даному сервері вимкнута можливість передачі даних між серверами", "Couldn't establish a federated share." : "Не вдалося встановити об’єднаний спільний доступ.", diff --git a/apps/federation/l10n/cs.js b/apps/federation/l10n/cs.js index 0d8e0e4f0f6..77b6699a4bd 100644 --- a/apps/federation/l10n/cs.js +++ b/apps/federation/l10n/cs.js @@ -4,7 +4,7 @@ OC.L10N.register( "Added to the list of trusted servers" : "Přidáno na seznam důvěryhodných serverů", "Server is already in the list of trusted servers." : "Server se už nachází na seznamu těch důvěryhodných.", "No server to federate with found" : "Nenalezen žádný server, se kterým by bylo možné federovat", - "Could not add server" : "Nepodařilo se přidat server", + "Could not add server" : "Server se nepodařilo přidat", "Trusted servers" : "Důvěryhodné servery", "Federation" : "Federování", "Federation allows you to connect with other trusted servers to exchange the user directory." : "Federování umožňuje propojit s ostatními servery, kterým věříte a vyměňovat si tak adresář uživatelů.", diff --git a/apps/federation/l10n/cs.json b/apps/federation/l10n/cs.json index e8f616d2aff..097b128075d 100644 --- a/apps/federation/l10n/cs.json +++ b/apps/federation/l10n/cs.json @@ -2,7 +2,7 @@ "Added to the list of trusted servers" : "Přidáno na seznam důvěryhodných serverů", "Server is already in the list of trusted servers." : "Server se už nachází na seznamu těch důvěryhodných.", "No server to federate with found" : "Nenalezen žádný server, se kterým by bylo možné federovat", - "Could not add server" : "Nepodařilo se přidat server", + "Could not add server" : "Server se nepodařilo přidat", "Trusted servers" : "Důvěryhodné servery", "Federation" : "Federování", "Federation allows you to connect with other trusted servers to exchange the user directory." : "Federování umožňuje propojit s ostatními servery, kterým věříte a vyměňovat si tak adresář uživatelů.", diff --git a/apps/files/l10n/ca.js b/apps/files/l10n/ca.js index ed9b2c53009..03a6b07350c 100644 --- a/apps/files/l10n/ca.js +++ b/apps/files/l10n/ca.js @@ -50,7 +50,7 @@ OC.L10N.register( "Pending" : "Pendent", "Unable to determine date" : "No s'ha pogut determinar la data", "This operation is forbidden" : "Aquesta operació no està permesa", - "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o poseu-vos en contacte amb l'administrador.", + "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o contacteu amb l'administrador.", "Could not move \"{file}\", target exists" : "No s'ha pogut desplaçar «{file}», el fitxer de destinació ja existeix", "Could not move \"{file}\"" : "No s'ha pogut desplaçar «{file}»", "copy" : "còpia", diff --git a/apps/files/l10n/ca.json b/apps/files/l10n/ca.json index 1d49add41f5..c582e9bf70e 100644 --- a/apps/files/l10n/ca.json +++ b/apps/files/l10n/ca.json @@ -48,7 +48,7 @@ "Pending" : "Pendent", "Unable to determine date" : "No s'ha pogut determinar la data", "This operation is forbidden" : "Aquesta operació no està permesa", - "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o poseu-vos en contacte amb l'administrador.", + "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o contacteu amb l'administrador.", "Could not move \"{file}\", target exists" : "No s'ha pogut desplaçar «{file}», el fitxer de destinació ja existeix", "Could not move \"{file}\"" : "No s'ha pogut desplaçar «{file}»", "copy" : "còpia", diff --git a/apps/files/l10n/cs.js b/apps/files/l10n/cs.js index 267a27a6089..8a92cc72ece 100644 --- a/apps/files/l10n/cs.js +++ b/apps/files/l10n/cs.js @@ -8,7 +8,7 @@ OC.L10N.register( "Move or copy" : "Přesunout nebo zkopírovat", "Download" : "Stáhnout", "Delete" : "Smazat", - "Tags" : "Značky", + "Tags" : "Štítky", "Show list view" : "Zobrazit v seznamu", "Show grid view" : "Zobrazit v mřížce", "Home" : "Domů", @@ -69,7 +69,7 @@ OC.L10N.register( "Could not create folder \"{dir}\" because it already exists" : "Složku „{dir}“ nelze vytvořit, protože už existuje", "Could not fetch file details \"{file}\"" : "Nedaří se získat podrobnosti o souboru „{file}“", "Error deleting file \"{fileName}\"." : "Chyba při mazání souboru „{fileName}“.", - "No search results in other folders for {tag}{filter}{endtag}" : "Žádné výsledky hledání v ostatních složkách pro {tag}{filter}{endtag}", + "No search results in other folders for {tag}{filter}{endtag}" : "Žádné výsledky hledání v ostatních složkách pro {tag}{filter}{endtag}", "Enter more than two characters to search in other folders" : "Pokud chcete hledat v ostatních složkách, zadejte více než dva znaky", "Name" : "Název", "Size" : "Velikost", diff --git a/apps/files/l10n/cs.json b/apps/files/l10n/cs.json index f61dd1d8cc1..befc19a76d7 100644 --- a/apps/files/l10n/cs.json +++ b/apps/files/l10n/cs.json @@ -6,7 +6,7 @@ "Move or copy" : "Přesunout nebo zkopírovat", "Download" : "Stáhnout", "Delete" : "Smazat", - "Tags" : "Značky", + "Tags" : "Štítky", "Show list view" : "Zobrazit v seznamu", "Show grid view" : "Zobrazit v mřížce", "Home" : "Domů", @@ -67,7 +67,7 @@ "Could not create folder \"{dir}\" because it already exists" : "Složku „{dir}“ nelze vytvořit, protože už existuje", "Could not fetch file details \"{file}\"" : "Nedaří se získat podrobnosti o souboru „{file}“", "Error deleting file \"{fileName}\"." : "Chyba při mazání souboru „{fileName}“.", - "No search results in other folders for {tag}{filter}{endtag}" : "Žádné výsledky hledání v ostatních složkách pro {tag}{filter}{endtag}", + "No search results in other folders for {tag}{filter}{endtag}" : "Žádné výsledky hledání v ostatních složkách pro {tag}{filter}{endtag}", "Enter more than two characters to search in other folders" : "Pokud chcete hledat v ostatních složkách, zadejte více než dva znaky", "Name" : "Název", "Size" : "Velikost", diff --git a/apps/files/l10n/el.js b/apps/files/l10n/el.js index 934769f443e..a9ee65b6e4a 100644 --- a/apps/files/l10n/el.js +++ b/apps/files/l10n/el.js @@ -9,6 +9,8 @@ OC.L10N.register( "Download" : "Λήψη", "Delete" : "Διαγραφή", "Tags" : "Ετικέτες", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "Home" : "Αρχική", "Close" : "Κλείσιμο", "Favorites" : "Αγαπημένα", @@ -34,6 +36,7 @@ OC.L10N.register( "Move" : "Μετακίνηση", "Copy" : "Αντιγραφή", "Choose target folder" : "Επιλογή φακέλου προορισμού", + "Edit locally" : "Επεξεργασία τοπικά", "Open" : "Άνοιγμα", "Delete file" : "Διαγραφή αρχείου", "Delete folder" : "Διαγραφή φακέλου", @@ -77,7 +80,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["περιλαμβάνεται %n κρυφό","περιλαμβάνονται %n κρυφά"], "You do not have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ", "_Uploading %n file_::_Uploading %n files_" : ["Μεταφόρτωση %n αρχείου","Μεταφόρτωση %n αρχείων"], + "New file/folder menu" : "Μενού νέου αρχείου/φακέλου", "Select file range" : "Επιλέξτε εύρος αρχείων", + "{used}%" : "{used}%", "{used} of {quota} used" : "Χρήση {used} από {quota} ", "{used} used" : "Σε χρήση {used}", "\"{name}\" is an invalid file name." : "Το \"{name}\" δεν είναι έγκυρο όνομα αρχείου.", @@ -187,7 +192,9 @@ OC.L10N.register( "Templates" : "Πρότυπα", "Unable to initialize the templates directory" : "Δεν είναι δυνατή η προετοιμασία του καταλόγου προτύπων", "%s used" : "%s σε χρήση", + "%s%%" : "%s%%", "%1$s of %2$s used" : "χρησιμοποιούνται %1$s από %2$s", + "Files settings" : "Ρυθμίσεις αρχείων", "Show hidden files" : "Εμφάνιση κρυφών αρχείων", "Crop image previews" : "Περικοπή προεπισκόπησης εικόνας", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/el.json b/apps/files/l10n/el.json index fa0c8e896a7..eff0a19b101 100644 --- a/apps/files/l10n/el.json +++ b/apps/files/l10n/el.json @@ -7,6 +7,8 @@ "Download" : "Λήψη", "Delete" : "Διαγραφή", "Tags" : "Ετικέτες", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "Home" : "Αρχική", "Close" : "Κλείσιμο", "Favorites" : "Αγαπημένα", @@ -32,6 +34,7 @@ "Move" : "Μετακίνηση", "Copy" : "Αντιγραφή", "Choose target folder" : "Επιλογή φακέλου προορισμού", + "Edit locally" : "Επεξεργασία τοπικά", "Open" : "Άνοιγμα", "Delete file" : "Διαγραφή αρχείου", "Delete folder" : "Διαγραφή φακέλου", @@ -75,7 +78,9 @@ "_including %n hidden_::_including %n hidden_" : ["περιλαμβάνεται %n κρυφό","περιλαμβάνονται %n κρυφά"], "You do not have permission to upload or create files here" : "Δεν έχετε δικαιώματα μεταφόρτωσης ή δημιουργίας αρχείων εδώ", "_Uploading %n file_::_Uploading %n files_" : ["Μεταφόρτωση %n αρχείου","Μεταφόρτωση %n αρχείων"], + "New file/folder menu" : "Μενού νέου αρχείου/φακέλου", "Select file range" : "Επιλέξτε εύρος αρχείων", + "{used}%" : "{used}%", "{used} of {quota} used" : "Χρήση {used} από {quota} ", "{used} used" : "Σε χρήση {used}", "\"{name}\" is an invalid file name." : "Το \"{name}\" δεν είναι έγκυρο όνομα αρχείου.", @@ -185,7 +190,9 @@ "Templates" : "Πρότυπα", "Unable to initialize the templates directory" : "Δεν είναι δυνατή η προετοιμασία του καταλόγου προτύπων", "%s used" : "%s σε χρήση", + "%s%%" : "%s%%", "%1$s of %2$s used" : "χρησιμοποιούνται %1$s από %2$s", + "Files settings" : "Ρυθμίσεις αρχείων", "Show hidden files" : "Εμφάνιση κρυφών αρχείων", "Crop image previews" : "Περικοπή προεπισκόπησης εικόνας", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/fr.js b/apps/files/l10n/fr.js index f24804fddb5..faa31e5fdd3 100644 --- a/apps/files/l10n/fr.js +++ b/apps/files/l10n/fr.js @@ -19,7 +19,7 @@ OC.L10N.register( "Upload cancelled." : "Envoi annulé.", "Processing files …" : "Fichiers en cours de traitement …", "…" : "…", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible d'envoyer {filename} car il s'agit d'un dossier ou d'un fichier vide", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible de téléverser {filename} car il s'agit d'un dossier ou d'un fichier vide", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Espace libre insuffisant : vous tentez d'envoyer {size1} mais seulement {size2} sont disponibles", "Target folder \"{dir}\" does not exist any more" : "Le dossier cible \"{dir}\" n'existe plus", "Not enough free space" : "Espace disponible insuffisant", @@ -107,7 +107,7 @@ OC.L10N.register( "Favorite" : "Favoris", "You can only favorite a single file or folder at a time" : "Vous ne pouvez ajouter qu'un seul favori de dossier ou de fichier à la fois.", "New folder" : "Nouveau dossier", - "Upload file" : "Envoyer un fichier", + "Upload file" : "Téléverser un fichier", "Recent" : "Récent", "Not favorited" : "Non marqué comme favori", "Remove from favorites" : "Retirer des favoris", @@ -151,7 +151,7 @@ OC.L10N.register( "You moved {oldfile} to {newfile}" : "Vous avez déplacé {oldfile} dans {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} a déplacé {oldfile} dans {newfile}", "A file has been added to or removed from your <strong>favorites</strong>" : "Un fichier a été ajouté ou retiré de vos <strong>favoris</strong>", - "A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>", + "A file or folder has been <strong>changed</strong>" : "Un fichier ou un dossier a été <strong>modifié</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Un fichier ou un dossier favori a été <strong>modifié </strong>", "All files" : "Tous les fichiers", "Unlimited" : "Illimité", @@ -190,7 +190,7 @@ OC.L10N.register( "Unable to create new file from template" : "Impossible de créer un nouveau fichier à partir du modèle", "Set up templates folder" : "Configurer le dossier des modèles", "Templates" : "Modèles", - "Unable to initialize the templates directory" : "Impossible d'initialiser le répertoire des modèles", + "Unable to initialize the templates directory" : "Impossible d'initialiser le dossier des modèles", "%s used" : "%s utilisés", "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s utilisés sur %2$s", diff --git a/apps/files/l10n/fr.json b/apps/files/l10n/fr.json index 8a08e7b02a2..5d650eb17af 100644 --- a/apps/files/l10n/fr.json +++ b/apps/files/l10n/fr.json @@ -17,7 +17,7 @@ "Upload cancelled." : "Envoi annulé.", "Processing files …" : "Fichiers en cours de traitement …", "…" : "…", - "Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible d'envoyer {filename} car il s'agit d'un dossier ou d'un fichier vide", + "Unable to upload {filename} as it is a directory or has 0 bytes" : "Impossible de téléverser {filename} car il s'agit d'un dossier ou d'un fichier vide", "Not enough free space, you are uploading {size1} but only {size2} is left" : "Espace libre insuffisant : vous tentez d'envoyer {size1} mais seulement {size2} sont disponibles", "Target folder \"{dir}\" does not exist any more" : "Le dossier cible \"{dir}\" n'existe plus", "Not enough free space" : "Espace disponible insuffisant", @@ -105,7 +105,7 @@ "Favorite" : "Favoris", "You can only favorite a single file or folder at a time" : "Vous ne pouvez ajouter qu'un seul favori de dossier ou de fichier à la fois.", "New folder" : "Nouveau dossier", - "Upload file" : "Envoyer un fichier", + "Upload file" : "Téléverser un fichier", "Recent" : "Récent", "Not favorited" : "Non marqué comme favori", "Remove from favorites" : "Retirer des favoris", @@ -149,7 +149,7 @@ "You moved {oldfile} to {newfile}" : "Vous avez déplacé {oldfile} dans {newfile}", "{user} moved {oldfile} to {newfile}" : "{user} a déplacé {oldfile} dans {newfile}", "A file has been added to or removed from your <strong>favorites</strong>" : "Un fichier a été ajouté ou retiré de vos <strong>favoris</strong>", - "A file or folder has been <strong>changed</strong>" : "Un fichier ou un répertoire a été <strong>modifié</strong>", + "A file or folder has been <strong>changed</strong>" : "Un fichier ou un dossier a été <strong>modifié</strong>", "A favorite file or folder has been <strong>changed</strong>" : "Un fichier ou un dossier favori a été <strong>modifié </strong>", "All files" : "Tous les fichiers", "Unlimited" : "Illimité", @@ -188,7 +188,7 @@ "Unable to create new file from template" : "Impossible de créer un nouveau fichier à partir du modèle", "Set up templates folder" : "Configurer le dossier des modèles", "Templates" : "Modèles", - "Unable to initialize the templates directory" : "Impossible d'initialiser le répertoire des modèles", + "Unable to initialize the templates directory" : "Impossible d'initialiser le dossier des modèles", "%s used" : "%s utilisés", "%s%%" : "%s%%", "%1$s of %2$s used" : "%1$s utilisés sur %2$s", diff --git a/apps/files/l10n/sk.js b/apps/files/l10n/sk.js index c6aa30fddb0..dd49412f9aa 100644 --- a/apps/files/l10n/sk.js +++ b/apps/files/l10n/sk.js @@ -24,6 +24,7 @@ OC.L10N.register( "Target folder \"{dir}\" does not exist any more" : "Cieľový priečinok \"{dir}\" už neexistuje", "Not enough free space" : "Nedostatok voľného miesta", "An unknown error has occurred" : "Vyskytla sa neznáma chyba", + "File could not be uploaded" : "Súbor nemôže byť nahraný", "Uploading …" : "Nahrávanie...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "Uploading that item is not supported" : "Nahrávanie tejto položky nie je podporované", @@ -35,6 +36,7 @@ OC.L10N.register( "Move" : "Presunúť", "Copy" : "Kopírovať", "Choose target folder" : "Vyberte cieľový priečinok", + "Edit locally" : "Editovať lokálne", "Open" : "Otvoriť", "Delete file" : "Zmazať súbor", "Delete folder" : "Zmazať priečinok", @@ -78,7 +80,9 @@ OC.L10N.register( "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých","vrátane %n skrytých"], "You do not have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvárať súbory", "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov","Nahrávam %n súborov"], + "New file/folder menu" : "Ponuka nového súboru/priečinka", "Select file range" : "Vybrať rozsah súborov", + "{used}%" : "{used}%", "{used} of {quota} used" : "použitých {used} z {quota}", "{used} used" : "{used} použitých", "\"{name}\" is an invalid file name." : "\"{name}\" je neplatné meno súboru.", @@ -188,7 +192,9 @@ OC.L10N.register( "Templates" : "Šablóny", "Unable to initialize the templates directory" : "Nemôžem inicializovať priečinok so šablónami", "%s used" : "%s použitých", + "%s%%" : "%s%%", "%1$s of %2$s used" : "Využité: %1$s z %2$s", + "Files settings" : "Nastavenia súborov", "Show hidden files" : "Zobraziť skryté súbory", "Crop image previews" : "Orezať náhľady obrázkov", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/sk.json b/apps/files/l10n/sk.json index 1b69d3e3051..0623b8f3f94 100644 --- a/apps/files/l10n/sk.json +++ b/apps/files/l10n/sk.json @@ -22,6 +22,7 @@ "Target folder \"{dir}\" does not exist any more" : "Cieľový priečinok \"{dir}\" už neexistuje", "Not enough free space" : "Nedostatok voľného miesta", "An unknown error has occurred" : "Vyskytla sa neznáma chyba", + "File could not be uploaded" : "Súbor nemôže byť nahraný", "Uploading …" : "Nahrávanie...", "{loadedSize} of {totalSize} ({bitrate})" : "{loadedSize} z {totalSize} ({bitrate})", "Uploading that item is not supported" : "Nahrávanie tejto položky nie je podporované", @@ -33,6 +34,7 @@ "Move" : "Presunúť", "Copy" : "Kopírovať", "Choose target folder" : "Vyberte cieľový priečinok", + "Edit locally" : "Editovať lokálne", "Open" : "Otvoriť", "Delete file" : "Zmazať súbor", "Delete folder" : "Zmazať priečinok", @@ -76,7 +78,9 @@ "_including %n hidden_::_including %n hidden_" : ["vrátane %n skytého","vrátane %n skrytých","vrátane %n skrytých","vrátane %n skrytých"], "You do not have permission to upload or create files here" : "Nemáte oprávnenie sem nahrávať alebo vytvárať súbory", "_Uploading %n file_::_Uploading %n files_" : ["Nahrávam %n súbor","Nahrávam %n súbory","Nahrávam %n súborov","Nahrávam %n súborov"], + "New file/folder menu" : "Ponuka nového súboru/priečinka", "Select file range" : "Vybrať rozsah súborov", + "{used}%" : "{used}%", "{used} of {quota} used" : "použitých {used} z {quota}", "{used} used" : "{used} použitých", "\"{name}\" is an invalid file name." : "\"{name}\" je neplatné meno súboru.", @@ -186,7 +190,9 @@ "Templates" : "Šablóny", "Unable to initialize the templates directory" : "Nemôžem inicializovať priečinok so šablónami", "%s used" : "%s použitých", + "%s%%" : "%s%%", "%1$s of %2$s used" : "Využité: %1$s z %2$s", + "Files settings" : "Nastavenia súborov", "Show hidden files" : "Zobraziť skryté súbory", "Crop image previews" : "Orezať náhľady obrázkov", "WebDAV" : "WebDAV", diff --git a/apps/files/l10n/uk.js b/apps/files/l10n/uk.js index 90fd20c0dcb..7b76f3e6fd3 100644 --- a/apps/files/l10n/uk.js +++ b/apps/files/l10n/uk.js @@ -117,7 +117,7 @@ OC.L10N.register( "Removed from favorites" : "Вилучено із вподобаного", "You added {file} to your favorites" : "Ви вподобали {file}", "You removed {file} from your favorites" : "Ви вилучили {file} із вподобаного", - "File changes" : "Зміни у файлі", + "File changes" : "Зміни у файлах", "Created by {user}" : "Створено користувачем {user}", "Changed by {user}" : "Змінено користувачем {user}", "Deleted by {user}" : "Вилучено користувачем {user}", @@ -129,10 +129,10 @@ OC.L10N.register( "You created an encrypted file in {file}" : "Ви створили зашифрований файл у {file}", "{user} created {file}" : "Користувач {user} створив {file}", "{user} created an encrypted file in {file}" : "{user} створив зашифрований файл у {file}", - "{file} was created in a public folder" : "Файл {file} створено у спільній теці", + "{file} was created in a public folder" : "Файл {file} створено у публічному каталозі", "You changed {file}" : "Ви змінили {file}", "You changed an encrypted file in {file}" : "Ви змінили зашифрований файл у {file}", - "{user} changed {file}" : "Користувач {user} змінив {file}", + "{user} changed {file}" : "Користувач {user} змінив файл {file}", "{user} changed an encrypted file in {file}" : "{user} змінив зашифрований файл у {file}", "You deleted {file}" : "Ви вилучили {file}", "You deleted an encrypted file in {file}" : "Ви вилучити зашифрований файл у {file}", @@ -214,14 +214,14 @@ OC.L10N.register( "Shared with others" : "Ви поділилися", "Shared with you" : "Надано доступ вам", "Shared by link" : "Доступ за посиланням", - "Deleted shares" : "Вилучено зі спільного доступу", - "Pending shares" : "Запит на доступ", + "Deleted shares" : "Більше недоступні", + "Pending shares" : "Запити на доступ", "Text file" : "Текстовий файл", "New text file.txt" : "Новий текстовий файл.txt", "Select" : "Вибрати", "You don’t have permission to upload or create files here" : "У вас недостатньо прав для завантаження або створення файлів тут", "New" : "Створити", - "Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або теку, що вам не належить", + "Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або каталог, що вам не належить", "%s%% of %s used" : "%s%% з %s використано", "Settings" : "Налаштування" }, diff --git a/apps/files/l10n/uk.json b/apps/files/l10n/uk.json index 20d1770602f..affdfd2ad51 100644 --- a/apps/files/l10n/uk.json +++ b/apps/files/l10n/uk.json @@ -115,7 +115,7 @@ "Removed from favorites" : "Вилучено із вподобаного", "You added {file} to your favorites" : "Ви вподобали {file}", "You removed {file} from your favorites" : "Ви вилучили {file} із вподобаного", - "File changes" : "Зміни у файлі", + "File changes" : "Зміни у файлах", "Created by {user}" : "Створено користувачем {user}", "Changed by {user}" : "Змінено користувачем {user}", "Deleted by {user}" : "Вилучено користувачем {user}", @@ -127,10 +127,10 @@ "You created an encrypted file in {file}" : "Ви створили зашифрований файл у {file}", "{user} created {file}" : "Користувач {user} створив {file}", "{user} created an encrypted file in {file}" : "{user} створив зашифрований файл у {file}", - "{file} was created in a public folder" : "Файл {file} створено у спільній теці", + "{file} was created in a public folder" : "Файл {file} створено у публічному каталозі", "You changed {file}" : "Ви змінили {file}", "You changed an encrypted file in {file}" : "Ви змінили зашифрований файл у {file}", - "{user} changed {file}" : "Користувач {user} змінив {file}", + "{user} changed {file}" : "Користувач {user} змінив файл {file}", "{user} changed an encrypted file in {file}" : "{user} змінив зашифрований файл у {file}", "You deleted {file}" : "Ви вилучили {file}", "You deleted an encrypted file in {file}" : "Ви вилучити зашифрований файл у {file}", @@ -212,14 +212,14 @@ "Shared with others" : "Ви поділилися", "Shared with you" : "Надано доступ вам", "Shared by link" : "Доступ за посиланням", - "Deleted shares" : "Вилучено зі спільного доступу", - "Pending shares" : "Запит на доступ", + "Deleted shares" : "Більше недоступні", + "Pending shares" : "Запити на доступ", "Text file" : "Текстовий файл", "New text file.txt" : "Новий текстовий файл.txt", "Select" : "Вибрати", "You don’t have permission to upload or create files here" : "У вас недостатньо прав для завантаження або створення файлів тут", "New" : "Створити", - "Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або теку, що вам не належить", + "Cannot transfer ownership of a file or folder you don't own" : "Неможливо передати права власності на файл або каталог, що вам не належить", "%s%% of %s used" : "%s%% з %s використано", "Settings" : "Налаштування" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" diff --git a/apps/files_external/l10n/uk.js b/apps/files_external/l10n/uk.js index 520de5475ee..c9853646442 100644 --- a/apps/files_external/l10n/uk.js +++ b/apps/files_external/l10n/uk.js @@ -95,7 +95,7 @@ OC.L10N.register( "Legacy (v2) authentication" : "Legacy (v2) автентифікація", "WebDAV" : "WebDAV", "URL" : "URL", - "Remote subfolder" : "Віддалена підтека", + "Remote subfolder" : "Віддалений підкаталог", "Secure https://" : "Захищений https://", "FTP" : "FTP", "Host" : "Хост", @@ -104,13 +104,13 @@ OC.L10N.register( "Location" : "Місце", "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", - "Root" : "Початкова тека", + "Root" : "Початок", "SFTP with secret key login" : "SFTP із секретним ключем входу", "SMB/CIFS" : "SMB/CIFS", "Share" : "Поділитися", "Show hidden files" : "Показати приховані файли", "Verify ACL access when listing files" : "Перевірте доступ до ACL під час переліку файлів", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Перевірка ACL кожного файлу чи папки в каталозі, щоб відфільтрувати елементи, для яких користувач не має прав на читання, супроводжується погіршенням продуктивності", + "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Перевірка ACL кожного файлу чи каталогу у каталозі верхнього рівня, щоб відфільтрувати елементи, до яких користувач не має прав доступу на читання, супроводжується погіршенням продуктивності", "Timeout" : "Час вичерпано", "SMB/CIFS using OC login" : "SMB/CIFS з використанням входу OC", "Username as share" : "Ім'я для відкритого доступу", @@ -122,14 +122,14 @@ OC.L10N.register( "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" не встановлено. Монтаж %2$s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", "External storage support" : "Підтримка зовнішньої пам'яті", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ця програма дозволяє адміністраторам налаштовувати підключення до зовнішніх постачальників сховищ, таких як сервери FTP, сховища об’єктів S3 або SWIFT, інші сервери Nextcloud, сервери WebDAV тощо. Адміністратори можуть вибрати, які типи сховищ увімкнути, і можуть монтувати ці місця зберігання для користувача, групи або всієї системи. Користувачі побачать нову папку, яка з’явиться в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати як будь-яку іншу папку Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх місцях. У цих випадках облікові дані для власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач може отримати доступ до спільного файлу. \n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу користувача або в командному рядку. Цей другий параметр надає досвідченому користувачеві більшу гнучкість у налаштуванні масових підключень зовнішніх накопичувачів і встановлення пріоритетів підключення. Більше інформації доступно в документація графічного інтерфейсу зовнішнього сховища та документація файлу конфігурації зовнішнього сховища.", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Цей застосунок дозволяє адміністраторам налаштовувати підключення до зовнішніх постачальників сховищ, таких як сервери FTP, сховища об’єктів S3 або SWIFT, інші сервери Nextcloud, сервери WebDAV тощо. Адміністратори можуть вибрати, які типи сховищ увімкнути, і можуть монтувати ці місця зберігання для користувача, групи або всієї системи. Користувачі побачать новий каталог, яка з’явиться в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати як будь-який інший каталог Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх місцях. У цих випадках облікові дані для власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач може отримати доступ до спільного файлу. \n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу користувача або в командному рядку. Цей другий параметр надає досвідченому користувачеві більшу гнучкість у налаштуванні масових підключень зовнішніх накопичувачів і встановлення пріоритетів підключення. Більше інформації доступно в документація графічного інтерфейсу зовнішнього сховища та документація файлу конфігурації зовнішнього сховища.", "No external storage configured or you don't have the permission to configure them" : "Зовнішнє сховище не налаштовано або ви не маєте дозволу на їх налаштування", "Name" : "Ім'я", "Storage type" : "Тип сховища", "Scope" : "Область", "Open documentation" : "Відкрити документацію", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Зовнішня пам’ять дає змогу підключати зовнішні служби зберігання та пристрої як додаткові пристрої зберігання даних Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні служби зберігання.", - "Folder name" : "Ім'я теки", + "Folder name" : "Назва каталогу", "Authentication" : "Автентифікація", "Configuration" : "Налаштування", "Available for" : "Доступний для", @@ -138,7 +138,7 @@ OC.L10N.register( "Advanced settings" : "Розширені налаштування", "Allow users to mount external storage" : "Дозволити користувачам монтувати зовнішні сховища", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобальні облікові дані можна використовувати для автентифікації з кількома зовнішніми сховищами, які мають однакові облікові дані.", - "Delete" : "Видалити", + "Delete" : "Вилучити", "Are you sure you want to delete this external storage?" : "Дійсно вилучити це зовнішнє сховище?", "Kerberos ticket apache mode" : "Режим apache квитка Kerberos" }, diff --git a/apps/files_external/l10n/uk.json b/apps/files_external/l10n/uk.json index a877ae9575b..7b163ed9093 100644 --- a/apps/files_external/l10n/uk.json +++ b/apps/files_external/l10n/uk.json @@ -93,7 +93,7 @@ "Legacy (v2) authentication" : "Legacy (v2) автентифікація", "WebDAV" : "WebDAV", "URL" : "URL", - "Remote subfolder" : "Віддалена підтека", + "Remote subfolder" : "Віддалений підкаталог", "Secure https://" : "Захищений https://", "FTP" : "FTP", "Host" : "Хост", @@ -102,13 +102,13 @@ "Location" : "Місце", "Nextcloud" : "Nextcloud", "SFTP" : "SFTP", - "Root" : "Початкова тека", + "Root" : "Початок", "SFTP with secret key login" : "SFTP із секретним ключем входу", "SMB/CIFS" : "SMB/CIFS", "Share" : "Поділитися", "Show hidden files" : "Показати приховані файли", "Verify ACL access when listing files" : "Перевірте доступ до ACL під час переліку файлів", - "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Перевірка ACL кожного файлу чи папки в каталозі, щоб відфільтрувати елементи, для яких користувач не має прав на читання, супроводжується погіршенням продуктивності", + "Check the ACL's of each file or folder inside a directory to filter out items where the user has no read permissions, comes with a performance penalty" : "Перевірка ACL кожного файлу чи каталогу у каталозі верхнього рівня, щоб відфільтрувати елементи, до яких користувач не має прав доступу на читання, супроводжується погіршенням продуктивності", "Timeout" : "Час вичерпано", "SMB/CIFS using OC login" : "SMB/CIFS з використанням входу OC", "Username as share" : "Ім'я для відкритого доступу", @@ -120,14 +120,14 @@ "\"%1$s\" is not installed. Mounting of %2$s is not possible. Please ask your system administrator to install it." : "\"%1$s\" не встановлено. Монтаж %2$s неможливий. Будь ласка, попросіть свого системного адміністратора встановити його.", "External storage support" : "Підтримка зовнішньої пам'яті", "Adds basic external storage support" : "Додає базову підтримку зовнішньої пам’яті", - "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Ця програма дозволяє адміністраторам налаштовувати підключення до зовнішніх постачальників сховищ, таких як сервери FTP, сховища об’єктів S3 або SWIFT, інші сервери Nextcloud, сервери WebDAV тощо. Адміністратори можуть вибрати, які типи сховищ увімкнути, і можуть монтувати ці місця зберігання для користувача, групи або всієї системи. Користувачі побачать нову папку, яка з’явиться в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати як будь-яку іншу папку Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх місцях. У цих випадках облікові дані для власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач може отримати доступ до спільного файлу. \n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу користувача або в командному рядку. Цей другий параметр надає досвідченому користувачеві більшу гнучкість у налаштуванні масових підключень зовнішніх накопичувачів і встановлення пріоритетів підключення. Більше інформації доступно в документація графічного інтерфейсу зовнішнього сховища та документація файлу конфігурації зовнішнього сховища.", + "This application enables administrators to configure connections to external storage providers, such as FTP servers, S3 or SWIFT object stores, other Nextcloud servers, WebDAV servers, and more. Administrators can choose which types of storage to enable and can mount these storage locations for a user, a group, or the entire system. Users will see a new folder appear in their root Nextcloud directory, which they can access and use like any other Nextcloud folder. External storage also allows users to share files stored in these external locations. In these cases, the credentials for the owner of the file are used when the recipient requests the file from external storage, thereby ensuring that the recipient can access the shared file.\n\nExternal storage can be configured using the GUI or at the command line. This second option provides the advanced user with more flexibility for configuring bulk external storage mounts and setting mount priorities. More information is available in the external storage GUI documentation and the external storage Configuration File documentation." : "Цей застосунок дозволяє адміністраторам налаштовувати підключення до зовнішніх постачальників сховищ, таких як сервери FTP, сховища об’єктів S3 або SWIFT, інші сервери Nextcloud, сервери WebDAV тощо. Адміністратори можуть вибрати, які типи сховищ увімкнути, і можуть монтувати ці місця зберігання для користувача, групи або всієї системи. Користувачі побачать новий каталог, яка з’явиться в кореневому каталозі Nextcloud, до якої вони зможуть отримати доступ і використовувати як будь-який інший каталог Nextcloud. Зовнішнє сховище також дозволяє користувачам ділитися файлами, що зберігаються в цих зовнішніх місцях. У цих випадках облікові дані для власника файлу використовуються, коли одержувач запитує файл із зовнішнього сховища, таким чином гарантуючи, що одержувач може отримати доступ до спільного файлу. \n\nЗовнішнє сховище можна налаштувати за допомогою графічного інтерфейсу користувача або в командному рядку. Цей другий параметр надає досвідченому користувачеві більшу гнучкість у налаштуванні масових підключень зовнішніх накопичувачів і встановлення пріоритетів підключення. Більше інформації доступно в документація графічного інтерфейсу зовнішнього сховища та документація файлу конфігурації зовнішнього сховища.", "No external storage configured or you don't have the permission to configure them" : "Зовнішнє сховище не налаштовано або ви не маєте дозволу на їх налаштування", "Name" : "Ім'я", "Storage type" : "Тип сховища", "Scope" : "Область", "Open documentation" : "Відкрити документацію", "External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices. You may also allow users to mount their own external storage services." : "Зовнішня пам’ять дає змогу підключати зовнішні служби зберігання та пристрої як додаткові пристрої зберігання даних Nextcloud. Ви також можете дозволити користувачам монтувати власні зовнішні служби зберігання.", - "Folder name" : "Ім'я теки", + "Folder name" : "Назва каталогу", "Authentication" : "Автентифікація", "Configuration" : "Налаштування", "Available for" : "Доступний для", @@ -136,7 +136,7 @@ "Advanced settings" : "Розширені налаштування", "Allow users to mount external storage" : "Дозволити користувачам монтувати зовнішні сховища", "Global credentials can be used to authenticate with multiple external storages that have the same credentials." : "Глобальні облікові дані можна використовувати для автентифікації з кількома зовнішніми сховищами, які мають однакові облікові дані.", - "Delete" : "Видалити", + "Delete" : "Вилучити", "Are you sure you want to delete this external storage?" : "Дійсно вилучити це зовнішнє сховище?", "Kerberos ticket apache mode" : "Режим apache квитка Kerberos" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" diff --git a/apps/files_sharing/l10n/el.js b/apps/files_sharing/l10n/el.js index 5b149f1422f..ac5f8280f60 100644 --- a/apps/files_sharing/l10n/el.js +++ b/apps/files_sharing/l10n/el.js @@ -35,6 +35,8 @@ OC.L10N.register( "Delete" : "Διαγραφή", "You can upload into this folder" : "Μπορείτε να μεταφορτώσετε σε αυτόν τον φάκελο", "Terms of service" : "Όροι χρήσης", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "No compatible server found at {remote}" : "Δεν βρέθηκε συμβατός διακομιστής σε {remote}", "Invalid server URL" : "Μη έγκυρο URL διακομιστή", "Failed to add the public link to your Nextcloud" : "Αποτυχία στην πρόσθεση του κοινού συνδέσμου στο Nextcloud σας", @@ -98,6 +100,7 @@ OC.L10N.register( "Files" : "Αρχεία", "A file or folder has been <strong>shared</strong>" : "Ένα αρχείο ή φάκελος <strong>διαμοιράστηκε</strong>", "Shared link" : "Διαμοιρασμένος σύνδεσμος", + "Wrong share ID, share does not exist" : "Λάθος ID κοινής χρήσης, η κοινή χρήση δεν υπάρχει", "Could not delete share" : "Αδυναμία διαγραφής κοινόχρηστου φακέλου", "Please specify a file or folder path" : "Παρακαλούμε καθορίστε την διαδρομή για το αρχείο ή τον φάκελο", "Wrong path, file/folder does not exist" : "Λάθος διαδρομή, το αρχείο/φάκελος δεν υπάρχει", diff --git a/apps/files_sharing/l10n/el.json b/apps/files_sharing/l10n/el.json index a60953fee7e..f68fe5009f7 100644 --- a/apps/files_sharing/l10n/el.json +++ b/apps/files_sharing/l10n/el.json @@ -33,6 +33,8 @@ "Delete" : "Διαγραφή", "You can upload into this folder" : "Μπορείτε να μεταφορτώσετε σε αυτόν τον φάκελο", "Terms of service" : "Όροι χρήσης", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "No compatible server found at {remote}" : "Δεν βρέθηκε συμβατός διακομιστής σε {remote}", "Invalid server URL" : "Μη έγκυρο URL διακομιστή", "Failed to add the public link to your Nextcloud" : "Αποτυχία στην πρόσθεση του κοινού συνδέσμου στο Nextcloud σας", @@ -96,6 +98,7 @@ "Files" : "Αρχεία", "A file or folder has been <strong>shared</strong>" : "Ένα αρχείο ή φάκελος <strong>διαμοιράστηκε</strong>", "Shared link" : "Διαμοιρασμένος σύνδεσμος", + "Wrong share ID, share does not exist" : "Λάθος ID κοινής χρήσης, η κοινή χρήση δεν υπάρχει", "Could not delete share" : "Αδυναμία διαγραφής κοινόχρηστου φακέλου", "Please specify a file or folder path" : "Παρακαλούμε καθορίστε την διαδρομή για το αρχείο ή τον φάκελο", "Wrong path, file/folder does not exist" : "Λάθος διαδρομή, το αρχείο/φάκελος δεν υπάρχει", diff --git a/apps/files_sharing/l10n/fr.js b/apps/files_sharing/l10n/fr.js index 43caa70479f..0717f90c959 100644 --- a/apps/files_sharing/l10n/fr.js +++ b/apps/files_sharing/l10n/fr.js @@ -95,10 +95,10 @@ OC.L10N.register( "{actor} removed you from the share named {file}" : "{actor} vous a supprimé du partage du nom de {file}", "Share for file {file} with {user} expired" : "Partage du fichier {file} avec l'utilisateur {user} expiré", "Share for file {file} expired" : "Partage du fichier {file} expiré", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Un fichier ou un dossier partagé par mail ou par lien public a été <strong>téléchargé</strong>", - "A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Un fichier ou un dossier partagé par e-mail ou par lien public a été <strong>téléchargé</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un dossier a été partagé depuis <strong>un autre serveur</strong>", "Files" : "Fichiers", - "A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>", + "A file or folder has been <strong>shared</strong>" : "Un fichier ou un dossier a été <strong>partagé</strong>", "Shared link" : "Lien partagé", "Wrong share ID, share does not exist" : "ID de partage erroné, ce partage n'existe pas", "Could not delete share" : "Impossible de supprimer le partage", @@ -146,10 +146,10 @@ OC.L10N.register( "Sharing" : "Partage", "Accept user and group shares by default" : "Accepter par défaut les partages d'utilisateurs et de groupes", "Error while toggling options" : "Erreur pendant le choix des options", - "Set default folder for accepted shares" : "Définir le répertoire par défaut pour les partages acceptés", + "Set default folder for accepted shares" : "Définir le dossier par défaut pour les partages acceptés", "Reset" : "Réinitialiser", - "Reset folder to system default" : "Réinitialiser le répertoire par défaut du système", - "Choose a default folder for accepted shares" : "Choisir un répertoire par défaut pour les partagés acceptés", + "Reset folder to system default" : "Réinitialiser le dossier par défaut du système", + "Choose a default folder for accepted shares" : "Choisir un dossier par défaut pour les partagés acceptés", "Invalid path selected" : "Chemin non valide sélectionné", "Unknown error" : "Erreur inconnue", "Allow editing" : "Autoriser la modification", @@ -220,7 +220,7 @@ OC.L10N.register( "on {server}" : "sur {server}", "Others with access" : "Autres utilisateurs ayant accès", "No other users with access found" : "Aucun autre utilisateur ayant un accès n'a été trouvé", - "Toggle list of others with access to this directory" : "Afficher / Masquer la liste des autres personnes ayant accès à ce répertoire", + "Toggle list of others with access to this directory" : "Afficher/Masquer la liste des autres personnes ayant accès à ce dossier", "Toggle list of others with access to this file" : "Afficher/Masquer la liste des autres personnes ayant accès à ce fichier", "Unable to fetch inherited shares" : "Impossible de récupérer les partages hérités", "Unable to load the shares list" : "Impossible de charger la liste des partages", diff --git a/apps/files_sharing/l10n/fr.json b/apps/files_sharing/l10n/fr.json index 9e70e7c3d22..8a4062c8e59 100644 --- a/apps/files_sharing/l10n/fr.json +++ b/apps/files_sharing/l10n/fr.json @@ -93,10 +93,10 @@ "{actor} removed you from the share named {file}" : "{actor} vous a supprimé du partage du nom de {file}", "Share for file {file} with {user} expired" : "Partage du fichier {file} avec l'utilisateur {user} expiré", "Share for file {file} expired" : "Partage du fichier {file} expiré", - "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Un fichier ou un dossier partagé par mail ou par lien public a été <strong>téléchargé</strong>", - "A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un répertoire a été partagé depuis <strong>un autre serveur</strong>", + "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Un fichier ou un dossier partagé par e-mail ou par lien public a été <strong>téléchargé</strong>", + "A file or folder was shared from <strong>another server</strong>" : "Un fichier ou un dossier a été partagé depuis <strong>un autre serveur</strong>", "Files" : "Fichiers", - "A file or folder has been <strong>shared</strong>" : "Un fichier ou un répertoire a été <strong>partagé</strong>", + "A file or folder has been <strong>shared</strong>" : "Un fichier ou un dossier a été <strong>partagé</strong>", "Shared link" : "Lien partagé", "Wrong share ID, share does not exist" : "ID de partage erroné, ce partage n'existe pas", "Could not delete share" : "Impossible de supprimer le partage", @@ -144,10 +144,10 @@ "Sharing" : "Partage", "Accept user and group shares by default" : "Accepter par défaut les partages d'utilisateurs et de groupes", "Error while toggling options" : "Erreur pendant le choix des options", - "Set default folder for accepted shares" : "Définir le répertoire par défaut pour les partages acceptés", + "Set default folder for accepted shares" : "Définir le dossier par défaut pour les partages acceptés", "Reset" : "Réinitialiser", - "Reset folder to system default" : "Réinitialiser le répertoire par défaut du système", - "Choose a default folder for accepted shares" : "Choisir un répertoire par défaut pour les partagés acceptés", + "Reset folder to system default" : "Réinitialiser le dossier par défaut du système", + "Choose a default folder for accepted shares" : "Choisir un dossier par défaut pour les partagés acceptés", "Invalid path selected" : "Chemin non valide sélectionné", "Unknown error" : "Erreur inconnue", "Allow editing" : "Autoriser la modification", @@ -218,7 +218,7 @@ "on {server}" : "sur {server}", "Others with access" : "Autres utilisateurs ayant accès", "No other users with access found" : "Aucun autre utilisateur ayant un accès n'a été trouvé", - "Toggle list of others with access to this directory" : "Afficher / Masquer la liste des autres personnes ayant accès à ce répertoire", + "Toggle list of others with access to this directory" : "Afficher/Masquer la liste des autres personnes ayant accès à ce dossier", "Toggle list of others with access to this file" : "Afficher/Masquer la liste des autres personnes ayant accès à ce fichier", "Unable to fetch inherited shares" : "Impossible de récupérer les partages hérités", "Unable to load the shares list" : "Impossible de charger la liste des partages", diff --git a/apps/files_sharing/l10n/sk.js b/apps/files_sharing/l10n/sk.js index f7e0c811169..f6d69cb1dcd 100644 --- a/apps/files_sharing/l10n/sk.js +++ b/apps/files_sharing/l10n/sk.js @@ -177,14 +177,17 @@ OC.L10N.register( "Shared with the group {user} by {owner}" : "Sprístupnil(a) {owner} skupine {user}", "Shared with the conversation {user} by {owner}" : "{owner} zdieľa konverzáciu {user}", "Shared with {user} by {owner}" : "{owner} zdieľa s {user}", + "Allow download" : "Povoliť sťahovanie", "Added by {initiator}" : "Pridal(a) {initiator}", "Via “{folder}”" : "Prostredníctvom „{folder}“", "Internal link" : "Interný odkaz", + "Copy internal link to clipboard" : "Skopírovať interný odkaz do schránky", "Link copied" : "Odkaz skopírovaný", "Cannot copy, please copy the link manually" : "Nedarí sa skopírovať, skopírujte prosím ručne.", "Copy to clipboard" : "Skopírovať do schránky", "Only works for users with access to this folder" : "Funguje len pre používateľov s prístupom k tomuto priečinku", "Only works for users with access to this file" : "Funguje iba pre pužívateľov, ktorí majú prístup k tomuto súboru", + "Copy public link to clipboard" : "Skopírovať verejný odkaz do schránky", "Please enter the following required information before creating the share" : "Pred vytvorením zdieľania zadajte následujúce potrebné informácie", "Password protection (enforced)" : "Ochrana heslom (vynúttená)", "Password protection" : "Ochrana heslom", diff --git a/apps/files_sharing/l10n/sk.json b/apps/files_sharing/l10n/sk.json index 9de7e4a1a90..329ccb851cd 100644 --- a/apps/files_sharing/l10n/sk.json +++ b/apps/files_sharing/l10n/sk.json @@ -175,14 +175,17 @@ "Shared with the group {user} by {owner}" : "Sprístupnil(a) {owner} skupine {user}", "Shared with the conversation {user} by {owner}" : "{owner} zdieľa konverzáciu {user}", "Shared with {user} by {owner}" : "{owner} zdieľa s {user}", + "Allow download" : "Povoliť sťahovanie", "Added by {initiator}" : "Pridal(a) {initiator}", "Via “{folder}”" : "Prostredníctvom „{folder}“", "Internal link" : "Interný odkaz", + "Copy internal link to clipboard" : "Skopírovať interný odkaz do schránky", "Link copied" : "Odkaz skopírovaný", "Cannot copy, please copy the link manually" : "Nedarí sa skopírovať, skopírujte prosím ručne.", "Copy to clipboard" : "Skopírovať do schránky", "Only works for users with access to this folder" : "Funguje len pre používateľov s prístupom k tomuto priečinku", "Only works for users with access to this file" : "Funguje iba pre pužívateľov, ktorí majú prístup k tomuto súboru", + "Copy public link to clipboard" : "Skopírovať verejný odkaz do schránky", "Please enter the following required information before creating the share" : "Pred vytvorením zdieľania zadajte následujúce potrebné informácie", "Password protection (enforced)" : "Ochrana heslom (vynúttená)", "Password protection" : "Ochrana heslom", diff --git a/apps/files_sharing/l10n/uk.js b/apps/files_sharing/l10n/uk.js index 67fe523cff7..4f9f9032e51 100644 --- a/apps/files_sharing/l10n/uk.js +++ b/apps/files_sharing/l10n/uk.js @@ -3,18 +3,18 @@ OC.L10N.register( { "Shared with you" : "Поділилися з вами", "Nothing shared with you yet" : "Ніхто з вами ще не поділився файлами", - "Files and folders others share with you will show up here" : "Спільні файли та теки, якими поділилися з вами, з’являться тут", + "Files and folders others share with you will show up here" : "Спільні файли та каталоги, якими поділилися з вами, з’являться тут", "Shared with others" : "Ви поділилися", "Nothing shared yet" : "Поки ніхто не поділився нічим", "Files and folders you share will show up here" : "Файли та каталоги, якими ви поділилися, показуватимуться тут", "Shared by link" : "Поділилися за посиланням", "No shared links" : "Відсутні спільні посилання", "Files and folders you share by link will show up here" : "Файли та каталоги, якими ви поділилися за посиланням, показуватимуться тут", - "Deleted shares" : "Вилучено зі спільного доступу", + "Deleted shares" : "Більше недоступні", "No deleted shares" : "Відсутні спільні каталоги чи файли, які було вилучено", "Shares you deleted will show up here" : "Спільні каталоги чи файли, які ви вилучили, показуватимуться тут", - "Pending shares" : "Запит на доступ", - "No pending shares" : "Відсутній запит на доступ", + "Pending shares" : "Запити на доступ", + "No pending shares" : "Відсутні запити на доступ", "Shares you have received but not confirmed will show up here" : "Спільні дані, які ви отримали, але не підтвердили, показуватимуться тут", "Shares" : "Спільні", "No shares" : "Відсутні спільні дані", @@ -98,7 +98,7 @@ OC.L10N.register( "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Файл або каталог, яким поділилився через ел.пошту або публічне посилання було <strong>завантажено</strong>", "A file or folder was shared from <strong>another server</strong>" : "Файлом або каталогом поділилися з <strong>іншого сервера</strong>", "Files" : "Файли", - "A file or folder has been <strong>shared</strong>" : "Файл або теку було відкрито для <strong> спільного користування </strong>", + "A file or folder has been <strong>shared</strong>" : "Файл або каталог було відкрито для <strong>спільного доступу</strong>", "Shared link" : "Посилання на спільний доступ", "Wrong share ID, share does not exist" : "Неправильний ідентифікатор спільного ресурсу: такий ресурс відсутній", "Could not delete share" : "Неможливо вилучити спільний ресурс", diff --git a/apps/files_sharing/l10n/uk.json b/apps/files_sharing/l10n/uk.json index 2cb9909b627..55016f283f6 100644 --- a/apps/files_sharing/l10n/uk.json +++ b/apps/files_sharing/l10n/uk.json @@ -1,18 +1,18 @@ { "translations": { "Shared with you" : "Поділилися з вами", "Nothing shared with you yet" : "Ніхто з вами ще не поділився файлами", - "Files and folders others share with you will show up here" : "Спільні файли та теки, якими поділилися з вами, з’являться тут", + "Files and folders others share with you will show up here" : "Спільні файли та каталоги, якими поділилися з вами, з’являться тут", "Shared with others" : "Ви поділилися", "Nothing shared yet" : "Поки ніхто не поділився нічим", "Files and folders you share will show up here" : "Файли та каталоги, якими ви поділилися, показуватимуться тут", "Shared by link" : "Поділилися за посиланням", "No shared links" : "Відсутні спільні посилання", "Files and folders you share by link will show up here" : "Файли та каталоги, якими ви поділилися за посиланням, показуватимуться тут", - "Deleted shares" : "Вилучено зі спільного доступу", + "Deleted shares" : "Більше недоступні", "No deleted shares" : "Відсутні спільні каталоги чи файли, які було вилучено", "Shares you deleted will show up here" : "Спільні каталоги чи файли, які ви вилучили, показуватимуться тут", - "Pending shares" : "Запит на доступ", - "No pending shares" : "Відсутній запит на доступ", + "Pending shares" : "Запити на доступ", + "No pending shares" : "Відсутні запити на доступ", "Shares you have received but not confirmed will show up here" : "Спільні дані, які ви отримали, але не підтвердили, показуватимуться тут", "Shares" : "Спільні", "No shares" : "Відсутні спільні дані", @@ -96,7 +96,7 @@ "A file or folder shared by mail or by public link was <strong>downloaded</strong>" : "Файл або каталог, яким поділилився через ел.пошту або публічне посилання було <strong>завантажено</strong>", "A file or folder was shared from <strong>another server</strong>" : "Файлом або каталогом поділилися з <strong>іншого сервера</strong>", "Files" : "Файли", - "A file or folder has been <strong>shared</strong>" : "Файл або теку було відкрито для <strong> спільного користування </strong>", + "A file or folder has been <strong>shared</strong>" : "Файл або каталог було відкрито для <strong>спільного доступу</strong>", "Shared link" : "Посилання на спільний доступ", "Wrong share ID, share does not exist" : "Неправильний ідентифікатор спільного ресурсу: такий ресурс відсутній", "Could not delete share" : "Неможливо вилучити спільний ресурс", diff --git a/apps/files_trashbin/l10n/ca.js b/apps/files_trashbin/l10n/ca.js index cf40c6e34e0..f0f0ac6048d 100644 --- a/apps/files_trashbin/l10n/ca.js +++ b/apps/files_trashbin/l10n/ca.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Deleted files" : "Fitxers suprimits", "restored" : "S'ha restaurat", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Carpetes i fitxers suprimits de la paperera (poden caducar durant l'exportació si teniu poc espai d'emmagatzematge)", "This application enables users to restore files that were deleted from the system." : "Aquesta aplicació permet als usuaris restaurar fitxers que s'hagin suprimit del sistema.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Aquesta aplicació permet als usuaris restaurar fitxers que s'hagin suprimit del sistema. Mostra una llista de fitxers suprimits en la interfície web i té opcions per a restaurar els fitxers suprimits a les carpetes dels usuaris o eliminar-los de manera permanent del sistema. La restauració d'un fitxer també restaura les versions del fitxer relacionades si l'aplicació Versions està habilitada. Quan se suprimeix un fitxer d'un element compartir, es pot restaurar de la mateixa manera, però deixa d'estar compartit. Per defecte, aquests fitxers romanen a la paperera durant 30 dies.\nPer a evitar que un usuari es quedi sense espai en el disc, l'aplicació Fitxers suprimits no utilitzarà més del 50% de l'emmagatzematge lliure disponible per als fitxers suprimits. Si els fitxers suprimits superen aquest límit, l'aplicació suprimirà els fitxers més antics fins que deixi de superar-se el límit. Podeu trobar més informació en la documentació de l'aplicació Fitxers suprimits.", "Restore" : "Restaura", @@ -13,7 +14,7 @@ OC.L10N.register( "Error while emptying trash bin" : "S'ha produït un error en buidar la paperera", "Error while removing files from trash bin" : "S'ha produït un error en suprimir els fitxers de la paperera", "This operation is forbidden" : "Aquesta operació no està permesa", - "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o poseu-vos en contacte amb l'administrador.", + "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o contacteu amb l'administrador.", "No deleted files" : "No hi ha cap fitxer suprimit", "You will be able to recover deleted files from here" : "Des d'aquí podreu recuperar els fitxers suprimits", "No entries found in this folder" : "No s'ha trobat cap entrada en aquesta carpeta", diff --git a/apps/files_trashbin/l10n/ca.json b/apps/files_trashbin/l10n/ca.json index deb49344231..8ba10a0d57e 100644 --- a/apps/files_trashbin/l10n/ca.json +++ b/apps/files_trashbin/l10n/ca.json @@ -1,6 +1,7 @@ { "translations": { "Deleted files" : "Fitxers suprimits", "restored" : "S'ha restaurat", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Carpetes i fitxers suprimits de la paperera (poden caducar durant l'exportació si teniu poc espai d'emmagatzematge)", "This application enables users to restore files that were deleted from the system." : "Aquesta aplicació permet als usuaris restaurar fitxers que s'hagin suprimit del sistema.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Aquesta aplicació permet als usuaris restaurar fitxers que s'hagin suprimit del sistema. Mostra una llista de fitxers suprimits en la interfície web i té opcions per a restaurar els fitxers suprimits a les carpetes dels usuaris o eliminar-los de manera permanent del sistema. La restauració d'un fitxer també restaura les versions del fitxer relacionades si l'aplicació Versions està habilitada. Quan se suprimeix un fitxer d'un element compartir, es pot restaurar de la mateixa manera, però deixa d'estar compartit. Per defecte, aquests fitxers romanen a la paperera durant 30 dies.\nPer a evitar que un usuari es quedi sense espai en el disc, l'aplicació Fitxers suprimits no utilitzarà més del 50% de l'emmagatzematge lliure disponible per als fitxers suprimits. Si els fitxers suprimits superen aquest límit, l'aplicació suprimirà els fitxers més antics fins que deixi de superar-se el límit. Podeu trobar més informació en la documentació de l'aplicació Fitxers suprimits.", "Restore" : "Restaura", @@ -11,7 +12,7 @@ "Error while emptying trash bin" : "S'ha produït un error en buidar la paperera", "Error while removing files from trash bin" : "S'ha produït un error en suprimir els fitxers de la paperera", "This operation is forbidden" : "Aquesta operació no està permesa", - "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o poseu-vos en contacte amb l'administrador.", + "This directory is unavailable, please check the logs or contact the administrator" : "Aquesta carpeta no està disponible. Consulteu els registres o contacteu amb l'administrador.", "No deleted files" : "No hi ha cap fitxer suprimit", "You will be able to recover deleted files from here" : "Des d'aquí podreu recuperar els fitxers suprimits", "No entries found in this folder" : "No s'ha trobat cap entrada en aquesta carpeta", diff --git a/apps/files_trashbin/l10n/el.js b/apps/files_trashbin/l10n/el.js index e03cf953794..81cb66244c8 100644 --- a/apps/files_trashbin/l10n/el.js +++ b/apps/files_trashbin/l10n/el.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Deleted files" : "Διεγραμμένα αρχεία", "restored" : "επαναφέρθηκαν", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Διαγραμμένα αρχεία και φάκελοι στον κάδο απορριμμάτων (μπορεί να λήξουν κατά την εξαγωγή, αν δεν έχετε αρκετό αποθηκευτικό χώρο)", "This application enables users to restore files that were deleted from the system." : "Η εφαρμογή επιτρέπει στους χρήστες να επαναφέρουν αρχεία που διαγράφηκαν από το σύστημα.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Η εφαρμογή επιτρέπει στους χρήστες να επαναφέρουν τα αρχεία που διαγράφηκαν από το σύστημα. Εμφανίζει μια λίστα με τα διαγραμμένα αρχεία στη διεπαφή ιστού και έχει επιλογές για επαναφορά των διαγραμμένων αρχείων στους καταλόγους αρχείων χρηστών ή για την οριστική κατάργησή τους από το σύστημα. Η επαναφορά ενός αρχείου επαναφέρει επίσης τις σχετικές εκδόσεις αρχείων, εάν είναι ενεργοποιημένη η εφαρμογή εκδόσεων. Όταν ένα αρχείο διαγράφεται από ένα κοινόχρηστο στοιχείο, μπορεί να αποκατασταθεί με τον ίδιο τρόπο, αν και δεν είναι πλέον κοινόχρηστος. Από προεπιλογή, αυτά τα αρχεία παραμένουν στον κάδο απορριμάτων για 30 ημέρες.\nΓια να αποφευχθεί η εξάντληση του χώρου στο δίσκο, η εφαρμογή \"Διαγραμμένα αρχεία\" δεν θα χρησιμοποιήσει περισσότερο από το 50% του τρέχων διαθέσιμου ορίου για τα διαγραμμένα αρχεία. Εάν τα διαγραμμένα αρχεία υπερβαίνουν αυτό το όριο, η εφαρμογή διαγράφει τα παλαιότερα αρχεία μέχρι να πέσει κάτω από αυτό το όριο. Περισσότερες πληροφορίες διατίθενται στην τεκμηρίωση \"Διαγραμμένα αρχεία\".", "Restore" : "Επαναφορά", diff --git a/apps/files_trashbin/l10n/el.json b/apps/files_trashbin/l10n/el.json index 3053665f268..3faed6d50d2 100644 --- a/apps/files_trashbin/l10n/el.json +++ b/apps/files_trashbin/l10n/el.json @@ -1,6 +1,7 @@ { "translations": { "Deleted files" : "Διεγραμμένα αρχεία", "restored" : "επαναφέρθηκαν", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Διαγραμμένα αρχεία και φάκελοι στον κάδο απορριμμάτων (μπορεί να λήξουν κατά την εξαγωγή, αν δεν έχετε αρκετό αποθηκευτικό χώρο)", "This application enables users to restore files that were deleted from the system." : "Η εφαρμογή επιτρέπει στους χρήστες να επαναφέρουν αρχεία που διαγράφηκαν από το σύστημα.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Η εφαρμογή επιτρέπει στους χρήστες να επαναφέρουν τα αρχεία που διαγράφηκαν από το σύστημα. Εμφανίζει μια λίστα με τα διαγραμμένα αρχεία στη διεπαφή ιστού και έχει επιλογές για επαναφορά των διαγραμμένων αρχείων στους καταλόγους αρχείων χρηστών ή για την οριστική κατάργησή τους από το σύστημα. Η επαναφορά ενός αρχείου επαναφέρει επίσης τις σχετικές εκδόσεις αρχείων, εάν είναι ενεργοποιημένη η εφαρμογή εκδόσεων. Όταν ένα αρχείο διαγράφεται από ένα κοινόχρηστο στοιχείο, μπορεί να αποκατασταθεί με τον ίδιο τρόπο, αν και δεν είναι πλέον κοινόχρηστος. Από προεπιλογή, αυτά τα αρχεία παραμένουν στον κάδο απορριμάτων για 30 ημέρες.\nΓια να αποφευχθεί η εξάντληση του χώρου στο δίσκο, η εφαρμογή \"Διαγραμμένα αρχεία\" δεν θα χρησιμοποιήσει περισσότερο από το 50% του τρέχων διαθέσιμου ορίου για τα διαγραμμένα αρχεία. Εάν τα διαγραμμένα αρχεία υπερβαίνουν αυτό το όριο, η εφαρμογή διαγράφει τα παλαιότερα αρχεία μέχρι να πέσει κάτω από αυτό το όριο. Περισσότερες πληροφορίες διατίθενται στην τεκμηρίωση \"Διαγραμμένα αρχεία\".", "Restore" : "Επαναφορά", diff --git a/apps/files_trashbin/l10n/fr.js b/apps/files_trashbin/l10n/fr.js index ef19158fd36..1beca65d0b4 100644 --- a/apps/files_trashbin/l10n/fr.js +++ b/apps/files_trashbin/l10n/fr.js @@ -5,7 +5,7 @@ OC.L10N.register( "restored" : "restauré", "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Dossiers et fichiers supprimés dans la corbeille (peuvent expirer pendant l'export s'il reste peu d'espace disque)", "This application enables users to restore files that were deleted from the system." : "Cette application permet aux utilisateurs de restaurer des fichiers qui ont été supprimés du système.", - "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Cette application permet aux utilisateurs de restaurer les fichiers qui ont été supprimés du système. Il affiche une liste de fichiers supprimés dans l'interface Web et dispose d'options pour restaurer ces fichiers supprimés dans les répertoires de fichiers des utilisateurs ou les supprimer définitivement du système. La restauration d'un fichier restaure également les versions de fichiers associées, si l'application de versions est activée. Lorsqu'un fichier est supprimé d'un partage, il peut être restauré de la même manière, bien qu'il ne soit plus partagé. Par défaut, ces fichiers restent dans la corbeille pendant 30 jours.\n\nPour empêcher un utilisateur de manquer d'espace disque, l'application Fichiers supprimés n'utilisera pas plus de 50% du quota gratuit actuellement disponible pour les fichiers supprimés. Si les fichiers supprimés dépassent cette limite, l'application supprime les fichiers les plus anciens jusqu'à ce qu'elle soit inférieure à cette limite. Plus d'informations sont disponibles dans la documentation Fichiers supprimés.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Cette application permet aux utilisateurs de restaurer les fichiers qui ont été supprimés du système. Il affiche une liste de fichiers supprimés dans l'interface Web et dispose d'options pour restaurer ces fichiers supprimés dans les dossiers de fichiers des utilisateurs ou les supprimer définitivement du système. La restauration d'un fichier restaure également les versions de fichiers associées, si l'application de versions est activée. Lorsqu'un fichier est supprimé d'un partage, il peut être restauré de la même manière, bien qu'il ne soit plus partagé. Par défaut, ces fichiers restent dans la corbeille pendant 30 jours.\n\nPour empêcher un utilisateur de manquer d'espace disque, l'application Fichiers supprimés n'utilisera pas plus de 50% du quota gratuit actuellement disponible pour les fichiers supprimés. Si les fichiers supprimés dépassent cette limite, l'application supprime les fichiers les plus anciens jusqu'à ce qu'elle soit inférieure à cette limite. Plus d'informations sont disponibles dans la documentation Fichiers supprimés.", "Restore" : "Restaurer", "Delete permanently" : "Supprimer de façon définitive", "Error while restoring file from trash bin" : "Erreur à la restauration du fichier depuis la corbeille", @@ -14,7 +14,7 @@ OC.L10N.register( "Error while emptying trash bin" : "Erreur au moment de vider la corbeille", "Error while removing files from trash bin" : "Erreur à la suppression de fichiers de la corbeille", "This operation is forbidden" : "Cette opération est interdite", - "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", + "This directory is unavailable, please check the logs or contact the administrator" : "Ce dossier n'est pas disponible. Consultez les logs ou contactez votre administrateur", "No deleted files" : "Aucun fichier supprimé", "You will be able to recover deleted files from here" : "Les fichiers supprimés s'afficheront ici et vous pourrez les restaurer.", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", diff --git a/apps/files_trashbin/l10n/fr.json b/apps/files_trashbin/l10n/fr.json index 6e104e4ba05..d93cec6b0ba 100644 --- a/apps/files_trashbin/l10n/fr.json +++ b/apps/files_trashbin/l10n/fr.json @@ -3,7 +3,7 @@ "restored" : "restauré", "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Dossiers et fichiers supprimés dans la corbeille (peuvent expirer pendant l'export s'il reste peu d'espace disque)", "This application enables users to restore files that were deleted from the system." : "Cette application permet aux utilisateurs de restaurer des fichiers qui ont été supprimés du système.", - "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Cette application permet aux utilisateurs de restaurer les fichiers qui ont été supprimés du système. Il affiche une liste de fichiers supprimés dans l'interface Web et dispose d'options pour restaurer ces fichiers supprimés dans les répertoires de fichiers des utilisateurs ou les supprimer définitivement du système. La restauration d'un fichier restaure également les versions de fichiers associées, si l'application de versions est activée. Lorsqu'un fichier est supprimé d'un partage, il peut être restauré de la même manière, bien qu'il ne soit plus partagé. Par défaut, ces fichiers restent dans la corbeille pendant 30 jours.\n\nPour empêcher un utilisateur de manquer d'espace disque, l'application Fichiers supprimés n'utilisera pas plus de 50% du quota gratuit actuellement disponible pour les fichiers supprimés. Si les fichiers supprimés dépassent cette limite, l'application supprime les fichiers les plus anciens jusqu'à ce qu'elle soit inférieure à cette limite. Plus d'informations sont disponibles dans la documentation Fichiers supprimés.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Cette application permet aux utilisateurs de restaurer les fichiers qui ont été supprimés du système. Il affiche une liste de fichiers supprimés dans l'interface Web et dispose d'options pour restaurer ces fichiers supprimés dans les dossiers de fichiers des utilisateurs ou les supprimer définitivement du système. La restauration d'un fichier restaure également les versions de fichiers associées, si l'application de versions est activée. Lorsqu'un fichier est supprimé d'un partage, il peut être restauré de la même manière, bien qu'il ne soit plus partagé. Par défaut, ces fichiers restent dans la corbeille pendant 30 jours.\n\nPour empêcher un utilisateur de manquer d'espace disque, l'application Fichiers supprimés n'utilisera pas plus de 50% du quota gratuit actuellement disponible pour les fichiers supprimés. Si les fichiers supprimés dépassent cette limite, l'application supprime les fichiers les plus anciens jusqu'à ce qu'elle soit inférieure à cette limite. Plus d'informations sont disponibles dans la documentation Fichiers supprimés.", "Restore" : "Restaurer", "Delete permanently" : "Supprimer de façon définitive", "Error while restoring file from trash bin" : "Erreur à la restauration du fichier depuis la corbeille", @@ -12,7 +12,7 @@ "Error while emptying trash bin" : "Erreur au moment de vider la corbeille", "Error while removing files from trash bin" : "Erreur à la suppression de fichiers de la corbeille", "This operation is forbidden" : "Cette opération est interdite", - "This directory is unavailable, please check the logs or contact the administrator" : "Ce répertoire n'est pas disponible. Consultez les logs ou contactez votre administrateur", + "This directory is unavailable, please check the logs or contact the administrator" : "Ce dossier n'est pas disponible. Consultez les logs ou contactez votre administrateur", "No deleted files" : "Aucun fichier supprimé", "You will be able to recover deleted files from here" : "Les fichiers supprimés s'afficheront ici et vous pourrez les restaurer.", "No entries found in this folder" : "Aucune entrée trouvée dans ce dossier", diff --git a/apps/files_trashbin/l10n/sk.js b/apps/files_trashbin/l10n/sk.js index 4f954e1ef55..f3873479944 100644 --- a/apps/files_trashbin/l10n/sk.js +++ b/apps/files_trashbin/l10n/sk.js @@ -3,6 +3,7 @@ OC.L10N.register( { "Deleted files" : "Zmazané súbory", "restored" : "obnovené", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Odstránené súbory a priečinky v koši (môže vypršať platnosť počas exportu, ak máte málo miesta v úložisku)", "This application enables users to restore files that were deleted from the system." : "Táto aplikácia používateľom umožňuje obnoviť súbory, ktoré boli zo systému vymazané.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Táto aplikácia používateľom umožňuje obnoviť súbory, ktoré boli zo systému vymazané. Zobrazí zoznam vymazaných súborov vo webovom rozhraní a poskytne možnosť obnovenia vymazaných súborov do používateľkých priečinkov, alebo permanentné vymazanie súborov zo systému. Obnovenie súboru tiež obnoví prislúchajúce verzie súboru, ak je povolená aplikácia pre vytváranie verzií. Ak je vymazaný zdieľaný súbor, tiež sa dá obnoviť, ale už nebude zdieľaný. Podľa prednastavených pravidiel tieto súbory ostávajú v koši 30 dní.\nAby sa zabránilo úplnému zaplneniu ukladacieho miesta, aplikácia na správu zmazaných súborov nepriradí pre zmazané súbory viac ako 50 % celkového ukladacieho miesta. Ak sa tento limit prekročí, aplikácia začne z koša odstraňovať najstaršie zmazané súbory. Viac informácií nájdete v dokumentácii aplikácie na správu zmazaných súborov.", "Restore" : "Obnoviť", diff --git a/apps/files_trashbin/l10n/sk.json b/apps/files_trashbin/l10n/sk.json index f3c621a3f86..fb2426c0620 100644 --- a/apps/files_trashbin/l10n/sk.json +++ b/apps/files_trashbin/l10n/sk.json @@ -1,6 +1,7 @@ { "translations": { "Deleted files" : "Zmazané súbory", "restored" : "obnovené", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Odstránené súbory a priečinky v koši (môže vypršať platnosť počas exportu, ak máte málo miesta v úložisku)", "This application enables users to restore files that were deleted from the system." : "Táto aplikácia používateľom umožňuje obnoviť súbory, ktoré boli zo systému vymazané.", "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Táto aplikácia používateľom umožňuje obnoviť súbory, ktoré boli zo systému vymazané. Zobrazí zoznam vymazaných súborov vo webovom rozhraní a poskytne možnosť obnovenia vymazaných súborov do používateľkých priečinkov, alebo permanentné vymazanie súborov zo systému. Obnovenie súboru tiež obnoví prislúchajúce verzie súboru, ak je povolená aplikácia pre vytváranie verzií. Ak je vymazaný zdieľaný súbor, tiež sa dá obnoviť, ale už nebude zdieľaný. Podľa prednastavených pravidiel tieto súbory ostávajú v koši 30 dní.\nAby sa zabránilo úplnému zaplneniu ukladacieho miesta, aplikácia na správu zmazaných súborov nepriradí pre zmazané súbory viac ako 50 % celkového ukladacieho miesta. Ak sa tento limit prekročí, aplikácia začne z koša odstraňovať najstaršie zmazané súbory. Viac informácií nájdete v dokumentácii aplikácie na správu zmazaných súborov.", "Restore" : "Obnoviť", diff --git a/apps/files_trashbin/l10n/uk.js b/apps/files_trashbin/l10n/uk.js index 36a156646df..6e5eae321ec 100644 --- a/apps/files_trashbin/l10n/uk.js +++ b/apps/files_trashbin/l10n/uk.js @@ -1,11 +1,11 @@ OC.L10N.register( "files_trashbin", { - "Deleted files" : "Вилучені файли", + "Deleted files" : "Кошик", "restored" : "відновлено", - "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Видалені файли та папки в кошику (термін дії може закінчитися під час експорту, якщо у вас мало місця для зберігання)", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Вилучені файли та каталоги з кошику (термін дії може завершитися під час експорту, якщо у вас мало місця для збереження)", "This application enables users to restore files that were deleted from the system." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі.", - "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі. Він показує список вилучених у вебінтерфейсі файлів, дозволяє відновлювати вилучені файліи у теки користувача, звідки файл було вилучено, або остаточно вилучати файли з системи. Відновлення файлу також відновлює віповідні версії файлу, якщо підтримку версій увімкнено у системі. Якщо файл було вилучено зі спільного ресурсу, то його також можна відновити, при цьому його буде відновлено уже як не спільний ресурс. Типово вилучені файли зберігаються у кошику протягом 30 днів.\nДля запобігання понадмірного використання дискового простору вилучені файли не можуть займати понад 50% поточного доступного простору за квотою для вилучених файлів. Якщо розмір вилучених файлів перевищує зазначене обмеження, застосунок вилучатиме без можливості відновлення найстаріші файли аж до досягнення обмеження. Додаткову інформацію можна знайти у документації до застосунку.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі. Він показує список вилучених у вебінтерфейсі файлів, дозволяє відновлювати вилучені файліи до каталогів користувача, звідки файл було вилучено, або остаточно вилучати файли з системи. Відновлення файлу також відновлює віповідні версії файлу, якщо підтримку версій увімкнено у системі. Якщо файл було вилучено зі спільного ресурсу, то його також можна відновити, при цьому його буде відновлено уже як не спільний ресурс. Типово вилучені файли зберігаються у кошику протягом 30 днів.\nДля запобігання понадмірного використання дискового простору вилучені файли не можуть займати понад 50% поточного доступного простору за квотою для вилучених файлів. Якщо розмір вилучених файлів перевищує зазначене обмеження, застосунок вилучатиме без можливості відновлення найстаріші файли аж до досягнення обмеження. Додаткову інформацію можна знайти у документації до застосунку.", "Restore" : "Відновити", "Delete permanently" : "Вилучити остаточно", "Error while restoring file from trash bin" : "Помилка під час відновлення файлу з кошика", @@ -14,10 +14,10 @@ OC.L10N.register( "Error while emptying trash bin" : "Помилка під час спорожнення кошика", "Error while removing files from trash bin" : "Помилка під час видалення файлів із кошика", "This operation is forbidden" : "Цю дію заборонено", - "This directory is unavailable, please check the logs or contact the administrator" : "Тека недоступна, будь ласка, перевірте журнал помилок або зверніться до адміністратора ", - "No deleted files" : "Відсутні вилучені файли", + "This directory is unavailable, please check the logs or contact the administrator" : "Каталог недоступний, будь ласка, перевірте журнал помилок або зверніться до адміністратора ", + "No deleted files" : "Кошик порожній", "You will be able to recover deleted files from here" : "Тут ви можете відновити файли, які було вилучено", - "No entries found in this folder" : "Не знайдено записів у цій теці", + "No entries found in this folder" : "Не знайдено записів у цьому каталозі", "Select all" : "Вибрати всі", "Name" : "Ім'я", "Actions" : "Дії", diff --git a/apps/files_trashbin/l10n/uk.json b/apps/files_trashbin/l10n/uk.json index d82abb4a8a2..0c29092124b 100644 --- a/apps/files_trashbin/l10n/uk.json +++ b/apps/files_trashbin/l10n/uk.json @@ -1,9 +1,9 @@ { "translations": { - "Deleted files" : "Вилучені файли", + "Deleted files" : "Кошик", "restored" : "відновлено", - "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Видалені файли та папки в кошику (термін дії може закінчитися під час експорту, якщо у вас мало місця для зберігання)", + "Deleted files and folders in the trash bin (may expire during export if you are low on storage space)" : "Вилучені файли та каталоги з кошику (термін дії може завершитися під час експорту, якщо у вас мало місця для збереження)", "This application enables users to restore files that were deleted from the system." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі.", - "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі. Він показує список вилучених у вебінтерфейсі файлів, дозволяє відновлювати вилучені файліи у теки користувача, звідки файл було вилучено, або остаточно вилучати файли з системи. Відновлення файлу також відновлює віповідні версії файлу, якщо підтримку версій увімкнено у системі. Якщо файл було вилучено зі спільного ресурсу, то його також можна відновити, при цьому його буде відновлено уже як не спільний ресурс. Типово вилучені файли зберігаються у кошику протягом 30 днів.\nДля запобігання понадмірного використання дискового простору вилучені файли не можуть займати понад 50% поточного доступного простору за квотою для вилучених файлів. Якщо розмір вилучених файлів перевищує зазначене обмеження, застосунок вилучатиме без можливості відновлення найстаріші файли аж до досягнення обмеження. Додаткову інформацію можна знайти у документації до застосунку.", + "This application enables users to restore files that were deleted from the system. It displays a list of deleted files in the web interface, and has options to restore those deleted files back to the users file directories or remove them permanently from the system. Restoring a file also restores related file versions, if the versions application is enabled. When a file is deleted from a share, it can be restored in the same manner, though it is no longer shared. By default, these files remain in the trash bin for 30 days.\nTo prevent a user from running out of disk space, the Deleted files app will not utilize more than 50% of the currently available free quota for deleted files. If the deleted files exceed this limit, the app deletes the oldest files until it gets below this limit. More information is available in the Deleted Files documentation." : "Цей застосунок дозволяє користувачам відновлювати файли, які було вилучено у системі. Він показує список вилучених у вебінтерфейсі файлів, дозволяє відновлювати вилучені файліи до каталогів користувача, звідки файл було вилучено, або остаточно вилучати файли з системи. Відновлення файлу також відновлює віповідні версії файлу, якщо підтримку версій увімкнено у системі. Якщо файл було вилучено зі спільного ресурсу, то його також можна відновити, при цьому його буде відновлено уже як не спільний ресурс. Типово вилучені файли зберігаються у кошику протягом 30 днів.\nДля запобігання понадмірного використання дискового простору вилучені файли не можуть займати понад 50% поточного доступного простору за квотою для вилучених файлів. Якщо розмір вилучених файлів перевищує зазначене обмеження, застосунок вилучатиме без можливості відновлення найстаріші файли аж до досягнення обмеження. Додаткову інформацію можна знайти у документації до застосунку.", "Restore" : "Відновити", "Delete permanently" : "Вилучити остаточно", "Error while restoring file from trash bin" : "Помилка під час відновлення файлу з кошика", @@ -12,10 +12,10 @@ "Error while emptying trash bin" : "Помилка під час спорожнення кошика", "Error while removing files from trash bin" : "Помилка під час видалення файлів із кошика", "This operation is forbidden" : "Цю дію заборонено", - "This directory is unavailable, please check the logs or contact the administrator" : "Тека недоступна, будь ласка, перевірте журнал помилок або зверніться до адміністратора ", - "No deleted files" : "Відсутні вилучені файли", + "This directory is unavailable, please check the logs or contact the administrator" : "Каталог недоступний, будь ласка, перевірте журнал помилок або зверніться до адміністратора ", + "No deleted files" : "Кошик порожній", "You will be able to recover deleted files from here" : "Тут ви можете відновити файли, які було вилучено", - "No entries found in this folder" : "Не знайдено записів у цій теці", + "No entries found in this folder" : "Не знайдено записів у цьому каталозі", "Select all" : "Вибрати всі", "Name" : "Ім'я", "Actions" : "Дії", diff --git a/apps/files_versions/l10n/cs.js b/apps/files_versions/l10n/cs.js index 80c1a55ddf7..bd6b88bafd6 100644 --- a/apps/files_versions/l10n/cs.js +++ b/apps/files_versions/l10n/cs.js @@ -3,11 +3,11 @@ OC.L10N.register( { "Versions" : "Verze", "This application automatically maintains older versions of files that are changed." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti nalezenete v dokumentaci k aplikaci Verze.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti naleznete v dokumentaci k aplikaci Verze.", "Failed to revert {file} to revision {timestamp}." : "Nepodařilo se vrátit {file} do stavu k {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajty"], "Restore" : "Obnovit", "No other versions available" : "Nejsou k dispozici žádné jiné verze", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti nalezenete v dokumentaci k aplikaci Verze." + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti naleznete v dokumentaci k aplikaci Verze." }, "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;"); diff --git a/apps/files_versions/l10n/cs.json b/apps/files_versions/l10n/cs.json index 353b174ceb7..e828ea1fd2e 100644 --- a/apps/files_versions/l10n/cs.json +++ b/apps/files_versions/l10n/cs.json @@ -1,11 +1,11 @@ { "translations": { "Versions" : "Verze", "This application automatically maintains older versions of files that are changed." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti nalezenete v dokumentaci k aplikaci Verze.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti naleznete v dokumentaci k aplikaci Verze.", "Failed to revert {file} to revision {timestamp}." : "Nepodařilo se vrátit {file} do stavu k {timestamp}.", "_%n byte_::_%n bytes_" : ["%n bajt","%n bajty","%n bajtů","%n bajty"], "Restore" : "Obnovit", "No other versions available" : "Nejsou k dispozici žádné jiné verze", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti nalezenete v dokumentaci k aplikaci Verze." + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Tato aplikace automaticky uchovává starší verze souborů, které se mění. Když je zapnutá, je ve složce každého uživatele vytvořena skrytá složka pro verze a do ní jsou ukládány staré verze souborů. Uživatel se (prostřednictvím webového rozhraní) kdykoli může vrátit ke starším verzím s tím, že sám nahrazovaný nejnovější soubor se tak stane verzí. Aplikace automaticky spravuje složku s verzemi tak, aby bylo zajištěno, že uživatel kvůli starým verzím nevyčerpá přidělenou kvótu.\n\t\tKrom konců platností verzí, aplikace Verze zajišťuje, že nikdy nepoužije více než 50% volného prostoru, který má uživatel k dispozici. Pokud uložené verze přesáhnou tento limit, aplikace smaže ty nejstarší, aby se do tohoto limitu vešla. Podrobnosti naleznete v dokumentaci k aplikaci Verze." },"pluralForm" :"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" }
\ No newline at end of file diff --git a/apps/files_versions/l10n/uk.js b/apps/files_versions/l10n/uk.js index b5689ccf718..5be93f83c80 100644 --- a/apps/files_versions/l10n/uk.js +++ b/apps/files_versions/l10n/uk.js @@ -3,11 +3,11 @@ OC.L10N.register( { "Versions" : "Версії", "This application automatically maintains older versions of files that are changed." : "Цей застосунок підтримує роботу з попередніми версіями файлів, які було змінено.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Ця програма автоматично підтримує старіші версії змінених файлів. Якщо ввімкнено, прихована папка версій створюється в каталозі кожного користувача та використовується для зберігання старих версій файлів. Користувач може будь-коли повернутися до старішої версії через веб-інтерфейс, а замінений файл стане версією. Програма автоматично керує папкою версій, щоб користувач не вичерпав квоту через версії. \n\nНа додаток до закінчення терміну дії версій, додаток версій гарантує, що ніколи не буде використано більше 50% вільного простору користувача. Якщо збережені версії перевищують це обмеження, програма спочатку видалить найстаріші версії, доки не досягне цього обмеження. Додаткову інформацію можна знайти в документації версій.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Цей застосунок автоматично підтримує старіші версії файлів, які було змінено. Якщо його увімкнено, прихований каталог версій створюється в каталозі кожного користувача та використовується для зберігання старих версій файлів. Користувач може будь-коли повернутися до старішої версії через веб-інтерфейс, а замінений файл стане версією. Програма автоматично керує каталогом з версіями файлів, щоб користувач не вичерпав квоту через надмірну кількість версій. \n\nНа додаток до закінчення терміну дії версій, додаток версій гарантує, що ніколи не буде використано більше 50% вільного простору користувача. Якщо збережені версії перевищують це обмеження, програма спочатку видалить найстаріші версії, доки не досягне цього обмеження. Додаткову інформацію можна знайти в документації версій.", "Failed to revert {file} to revision {timestamp}." : "Не вдалося повернути {file} до ревізії {timestamp}.", "_%n byte_::_%n bytes_" : ["%n байт","%n байти","%n байтів","%n байтів"], "Restore" : "Відновити", "No other versions available" : "Інші версії недоступні", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Цей застосунок автоматично обслуговує попередні версії файлів, які були змінені. Коли застосунок ввімкнено, у кожній теці користувача створюється прихована тека версій, у якій зберігаються старі версії файлів. Користувач за допомогою веб-інтерфейсу може повернутися у будь-який момент до однієї з попередніх версій файлу. При цьому файл, що замінюється, стає однією з версій. Застосунок також автоматично відслідковує теки версій, щоб задовольнити обмеження користувацьких квот.\n\t\tКрім відслідковування терміну збереження версій застосунок також забезпечує обмеження використаного версіями об'єму, щоб версії ніколи не використовували більше 50% доступного користувачу вільного дискового простору. В разі перевищення вказаних лімітів застосунок автоматично вилучає найдавніші версії аж до повернення в межі лімітів. Додаткова інформація доступна у документації до застосунку Версії." + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Цей застосунок автоматично обслуговує попередні версії файлів, які були змінені. Коли застосунок ввімкнено, у кожному каталозі користувача створюється прихована каталога версій файлів, у якій зберігаються старі версії файлів. Користувач за допомогою веб-інтерфейсу може повернутися у будь-який момент до однієї з попередніх версій файлу. При цьому файл, що замінюється, стає однією з версій. Застосунок також автоматично відслідковує каталоги з версіями файлів згідно з обмеженнями квот користувача.\n\t\tКрім відслідковування терміну збереження версій застосунок також забезпечує обмеження використаного версіями об'єму, щоб версії ніколи не використовували більше 50% доступного користувачу вільного дискового простору. В разі перевищення вказаних лімітів застосунок автоматично вилучає найдавніші версії аж до повернення в межі лімітів. Додаткова інформація доступна у документації до застосунку Версії." }, "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/files_versions/l10n/uk.json b/apps/files_versions/l10n/uk.json index 3842d36e2bb..8fc09f3d3f2 100644 --- a/apps/files_versions/l10n/uk.json +++ b/apps/files_versions/l10n/uk.json @@ -1,11 +1,11 @@ { "translations": { "Versions" : "Версії", "This application automatically maintains older versions of files that are changed." : "Цей застосунок підтримує роботу з попередніми версіями файлів, які було змінено.", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Ця програма автоматично підтримує старіші версії змінених файлів. Якщо ввімкнено, прихована папка версій створюється в каталозі кожного користувача та використовується для зберігання старих версій файлів. Користувач може будь-коли повернутися до старішої версії через веб-інтерфейс, а замінений файл стане версією. Програма автоматично керує папкою версій, щоб користувач не вичерпав квоту через версії. \n\nНа додаток до закінчення терміну дії версій, додаток версій гарантує, що ніколи не буде використано більше 50% вільного простору користувача. Якщо збережені версії перевищують це обмеження, програма спочатку видалить найстаріші версії, доки не досягне цього обмеження. Додаткову інформацію можна знайти в документації версій.", + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user's directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user does not run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user's currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Цей застосунок автоматично підтримує старіші версії файлів, які було змінено. Якщо його увімкнено, прихований каталог версій створюється в каталозі кожного користувача та використовується для зберігання старих версій файлів. Користувач може будь-коли повернутися до старішої версії через веб-інтерфейс, а замінений файл стане версією. Програма автоматично керує каталогом з версіями файлів, щоб користувач не вичерпав квоту через надмірну кількість версій. \n\nНа додаток до закінчення терміну дії версій, додаток версій гарантує, що ніколи не буде використано більше 50% вільного простору користувача. Якщо збережені версії перевищують це обмеження, програма спочатку видалить найстаріші версії, доки не досягне цього обмеження. Додаткову інформацію можна знайти в документації версій.", "Failed to revert {file} to revision {timestamp}." : "Не вдалося повернути {file} до ревізії {timestamp}.", "_%n byte_::_%n bytes_" : ["%n байт","%n байти","%n байтів","%n байтів"], "Restore" : "Відновити", "No other versions available" : "Інші версії недоступні", - "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Цей застосунок автоматично обслуговує попередні версії файлів, які були змінені. Коли застосунок ввімкнено, у кожній теці користувача створюється прихована тека версій, у якій зберігаються старі версії файлів. Користувач за допомогою веб-інтерфейсу може повернутися у будь-який момент до однієї з попередніх версій файлу. При цьому файл, що замінюється, стає однією з версій. Застосунок також автоматично відслідковує теки версій, щоб задовольнити обмеження користувацьких квот.\n\t\tКрім відслідковування терміну збереження версій застосунок також забезпечує обмеження використаного версіями об'єму, щоб версії ніколи не використовували більше 50% доступного користувачу вільного дискового простору. В разі перевищення вказаних лімітів застосунок автоматично вилучає найдавніші версії аж до повернення в межі лімітів. Додаткова інформація доступна у документації до застосунку Версії." + "This application automatically maintains older versions of files that are changed. When enabled, a hidden versions folder is provisioned in every user’s directory and is used to store old file versions. A user can revert to an older version through the web interface at any time, with the replaced file becoming a version. The app automatically manages the versions folder to ensure the user doesn’t run out of Quota because of versions.\n\t\tIn addition to the expiry of versions, the versions app makes certain never to use more than 50% of the user’s currently available free space. If stored versions exceed this limit, the app will delete the oldest versions first until it meets this limit. More information is available in the Versions documentation." : "Цей застосунок автоматично обслуговує попередні версії файлів, які були змінені. Коли застосунок ввімкнено, у кожному каталозі користувача створюється прихована каталога версій файлів, у якій зберігаються старі версії файлів. Користувач за допомогою веб-інтерфейсу може повернутися у будь-який момент до однієї з попередніх версій файлу. При цьому файл, що замінюється, стає однією з версій. Застосунок також автоматично відслідковує каталоги з версіями файлів згідно з обмеженнями квот користувача.\n\t\tКрім відслідковування терміну збереження версій застосунок також забезпечує обмеження використаного версіями об'єму, щоб версії ніколи не використовували більше 50% доступного користувачу вільного дискового простору. В разі перевищення вказаних лімітів застосунок автоматично вилучає найдавніші версії аж до повернення в межі лімітів. Додаткова інформація доступна у документації до застосунку Версії." },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/lookup_server_connector/l10n/ca.js b/apps/lookup_server_connector/l10n/ca.js index 0852c280447..1c385d2f9ee 100644 --- a/apps/lookup_server_connector/l10n/ca.js +++ b/apps/lookup_server_connector/l10n/ca.js @@ -2,6 +2,6 @@ OC.L10N.register( "lookup_server_connector", { "Lookup Server Connector" : "Connector del servidor de consulta", - "Sync public user information with the lookup server" : "Sincronitza la informació de l'usuari públic amb el servidor de consulta" + "Sync public user information with the lookup server" : "Sincronitza la informació pública de l'usuari amb el servidor de consulta" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/lookup_server_connector/l10n/ca.json b/apps/lookup_server_connector/l10n/ca.json index 77b96b5dd8a..37199bff3a7 100644 --- a/apps/lookup_server_connector/l10n/ca.json +++ b/apps/lookup_server_connector/l10n/ca.json @@ -1,5 +1,5 @@ { "translations": { "Lookup Server Connector" : "Connector del servidor de consulta", - "Sync public user information with the lookup server" : "Sincronitza la informació de l'usuari públic amb el servidor de consulta" + "Sync public user information with the lookup server" : "Sincronitza la informació pública de l'usuari amb el servidor de consulta" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/provisioning_api/l10n/ca.js b/apps/provisioning_api/l10n/ca.js index fd7b8d6fb71..fd9d0fe8874 100644 --- a/apps/provisioning_api/l10n/ca.js +++ b/apps/provisioning_api/l10n/ca.js @@ -1,19 +1,19 @@ OC.L10N.register( "provisioning_api", { - "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari iniciat ha de ser un administrador o tenir autorització per editar aquesta configuració.", + "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari que ha iniciat la sessió ha de ser administrador o tenir autorització per a editar aquest paràmetre.", "User already exists" : "L'usuari ja existeix", "Email confirmation" : "Confirmació de l'adreça electrònica", - "To enable the email address %s please click the button below." : "Per activar l'adreça de correu electrònic %s, feu clic al botó següent.", + "To enable the email address %s please click the button below." : "Per a habilitar l'adreça electrònica %s, feu clic en el botó següent.", "Confirm" : "Confirma", - "Email was already removed from account and cannot be confirmed anymore." : "El correu electrònic ja s'ha eliminat del compte i ja no es pot confirmar.", - "Could not verify mail because the token is expired." : "No s'ha pogut verificar el correu perquè el testimoni ha caducat.", - "Could not verify mail because the token is invalid." : "No s'ha pogut verificar el correu perquè el testimoni no és vàlid.", - "An unexpected error occurred. Please contact your admin." : "S'ha produït un error inesperat. Poseu-vos en contacte amb el vostre administrador.", - "Email confirmation successful" : "Confirmació del correu electrònic correcta", + "Email was already removed from account and cannot be confirmed anymore." : "L'adreça electrònica ja s'ha suprimit del compte i ja no es pot confirmar.", + "Could not verify mail because the token is expired." : "No s'ha pogut verificar l'adreça electrònica perquè el testimoni ha caducat.", + "Could not verify mail because the token is invalid." : "No s'ha pogut verificar l'adreça electrònica perquè el testimoni no és vàlid.", + "An unexpected error occurred. Please contact your admin." : "S'ha produït un error inesperat. Contacteu amb l'administrador.", + "Email confirmation successful" : "S'ha confirmat l'adreça electrònica", "Provisioning API" : "API d’aprovisionament", - "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per administrar usuaris, grups i aplicacions.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per crear, editar, suprimir i consultar atributs\n\t\td’usuari, consulta, definir i eliminar grups, definir quota i consulta d'emmagatzematge total utilitzat a Nextcloud. Usuaris d'administració de grup\n\t\ttambé poden consultar Nextcloud i realitzar les mateixes funcions que un administrador per als grups que gestionen. L'API també permet a\n\t\tun administrador consultar les aplicacions actives de Nextcloud, la informació de l'aplicació i habilitar o desactivar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, les sol·licituds HTTP es poden utilitzar a través d'una capçalera de autenticació bàsica per dur a terme qualsevol de les funcions\n\t\tque s'enumeren més amunt. Hi ha més informació disponible a la documentació de l'API d’aprovisionament, incloses les crides d'exemple\n\t\ti respostes del servidor.", - "An unexpected error occurred. Please consult your sysadmin." : "S'ha produït un error inesperat. Si us plau, consulteu el vostre administrador del sistema." + "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a administrar usuaris, grups i aplicacions.", + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\td’usuari, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els usuaris administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d’aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor.", + "An unexpected error occurred. Please consult your sysadmin." : "S'ha produït un error inesperat. Contacteu amb l'administrador del sistema." }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/provisioning_api/l10n/ca.json b/apps/provisioning_api/l10n/ca.json index 5b1f1d5d271..226349573e9 100644 --- a/apps/provisioning_api/l10n/ca.json +++ b/apps/provisioning_api/l10n/ca.json @@ -1,17 +1,17 @@ { "translations": { - "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari iniciat ha de ser un administrador o tenir autorització per editar aquesta configuració.", + "Logged in user must be an administrator or have authorization to edit this setting." : "L'usuari que ha iniciat la sessió ha de ser administrador o tenir autorització per a editar aquest paràmetre.", "User already exists" : "L'usuari ja existeix", "Email confirmation" : "Confirmació de l'adreça electrònica", - "To enable the email address %s please click the button below." : "Per activar l'adreça de correu electrònic %s, feu clic al botó següent.", + "To enable the email address %s please click the button below." : "Per a habilitar l'adreça electrònica %s, feu clic en el botó següent.", "Confirm" : "Confirma", - "Email was already removed from account and cannot be confirmed anymore." : "El correu electrònic ja s'ha eliminat del compte i ja no es pot confirmar.", - "Could not verify mail because the token is expired." : "No s'ha pogut verificar el correu perquè el testimoni ha caducat.", - "Could not verify mail because the token is invalid." : "No s'ha pogut verificar el correu perquè el testimoni no és vàlid.", - "An unexpected error occurred. Please contact your admin." : "S'ha produït un error inesperat. Poseu-vos en contacte amb el vostre administrador.", - "Email confirmation successful" : "Confirmació del correu electrònic correcta", + "Email was already removed from account and cannot be confirmed anymore." : "L'adreça electrònica ja s'ha suprimit del compte i ja no es pot confirmar.", + "Could not verify mail because the token is expired." : "No s'ha pogut verificar l'adreça electrònica perquè el testimoni ha caducat.", + "Could not verify mail because the token is invalid." : "No s'ha pogut verificar l'adreça electrònica perquè el testimoni no és vàlid.", + "An unexpected error occurred. Please contact your admin." : "S'ha produït un error inesperat. Contacteu amb l'administrador.", + "Email confirmation successful" : "S'ha confirmat l'adreça electrònica", "Provisioning API" : "API d’aprovisionament", - "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per administrar usuaris, grups i aplicacions.", - "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació permet un conjunt d'API que els sistemes externs poden utilitzar per crear, editar, suprimir i consultar atributs\n\t\td’usuari, consulta, definir i eliminar grups, definir quota i consulta d'emmagatzematge total utilitzat a Nextcloud. Usuaris d'administració de grup\n\t\ttambé poden consultar Nextcloud i realitzar les mateixes funcions que un administrador per als grups que gestionen. L'API també permet a\n\t\tun administrador consultar les aplicacions actives de Nextcloud, la informació de l'aplicació i habilitar o desactivar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, les sol·licituds HTTP es poden utilitzar a través d'una capçalera de autenticació bàsica per dur a terme qualsevol de les funcions\n\t\tque s'enumeren més amunt. Hi ha més informació disponible a la documentació de l'API d’aprovisionament, incloses les crides d'exemple\n\t\ti respostes del servidor.", - "An unexpected error occurred. Please consult your sysadmin." : "S'ha produït un error inesperat. Si us plau, consulteu el vostre administrador del sistema." + "This application enables a set of APIs that external systems can use to manage users, groups and apps." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a administrar usuaris, grups i aplicacions.", + "This application enables a set of APIs that external systems can use to create, edit, delete and query user\n\t\tattributes, query, set and remove groups, set quota and query total storage used in Nextcloud. Group admin users\n\t\tcan also query Nextcloud and perform the same functions as an admin for groups they manage. The API also enables\n\t\tan admin to query for active Nextcloud applications, application info, and to enable or disable an app remotely.\n\t\tOnce the app is enabled, HTTP requests can be used via a Basic Auth header to perform any of the functions\n\t\tlisted above. More information is available in the Provisioning API documentation, including example calls\n\t\tand server responses." : "Aquesta aplicació habilita un conjunt d'API que els sistemes externs poden utilitzar per a crear, editar, suprimir i consultar atributs\n\t\td’usuari, consultar, definir i suprimir grups, definir la quota i consultar l'emmagatzematge total en ús al Nextcloud. Els usuaris administradors de grup\n\t\ttambé poden enviar consultes al Nextcloud i realitzar les mateixes funcions que un administrador per als grups que administren. L'API també permet a\n\t\tun administrador consultar les aplicacions actives del Nextcloud, la informació de l'aplicació i habilitar o inhabilitar una aplicació de forma remota.\n\t\tUn cop habilitada l'aplicació, es poden utilitzar sol·licituds HTTP mitjançant una capçalera d'autenticació bàsica per a realitzar qualsevol de les funcions\n\t\tindicades anteriorment. Podeu trobar més informació en la documentació de l'API d’aprovisionament, incloent-hi exemples\n\t\tde trucades i respostes del servidor.", + "An unexpected error occurred. Please consult your sysadmin." : "S'ha produït un error inesperat. Contacteu amb l'administrador del sistema." },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/settings/l10n/fr.js b/apps/settings/l10n/fr.js index bb5147e7136..399c4b311a6 100644 --- a/apps/settings/l10n/fr.js +++ b/apps/settings/l10n/fr.js @@ -49,7 +49,7 @@ OC.L10N.register( "A login attempt using two-factor authentication failed (%1$s)" : "Une tentative de connexion utilisant l'authentification à deux facteurs a échoué (%1$s)", "Remote wipe was started on %1$s" : "Effaçage distant démarré pour%1$s", "Remote wipe has finished on %1$s" : "Effaçage distant terminé pour %1$s", - "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié⋅e", "Could not remove app." : "Impossible de supprimer l'app.", "Could not update app." : "Impossible de mettre à jour l'app.", "Wrong password" : "Mot de passe incorrect", @@ -64,7 +64,7 @@ OC.L10N.register( "installing and updating apps via the App Store or Federated Cloud Sharing" : "installation et mises à jour d'applications via le magasin d'applications ou le partage fédéré", "Federated Cloud Sharing" : "Federated Cloud Sharing", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilise %1$s version (%2$s), qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %3$s ne fonctionneront pas correctement.", - "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est périmée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier journal de nextcloud pour plus de détails.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est dépassée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier journal de Nextcloud pour plus de détails.", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Le module PHP 'OPcache' n'est pas chargé. Pour de meilleures performances, il est recommandé de le charger dans votre installation PHP.", "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache est désactivé. Pour de meilleures performances, il est recommandé de définir <code>opcache.enable=1</code> dans votre fichier configuration PHP.", "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache est configuré pour retirer les commentaires du code. Avec OPcache activé, <code>opcache.save_comments=1</code> doit être ajouté au fichier de configuration PHP pour que Nextcloud fonctionne.", @@ -77,7 +77,7 @@ OC.L10N.register( "Email setting test" : "Test des paramètres e-mail", "Well done, %s!" : "Bien joué, %s !", "If you received this email, the email configuration seems to be correct." : "Si vous avez reçu cet e-mail, la configuration de l'adresse e-mail semble être correcte.", - "Email could not be sent. Check your mail server log" : "L'email n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", + "Email could not be sent. Check your mail server log" : "L'e-mail n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)", "You need to set your user email before being able to send test emails. Go to %s for that." : "Vous devez définir votre e-mail utilisateur avant de tester l'envoi d'e-mail. Aller à %s pour cela.", "Invalid user" : "Utilisateur non valide", @@ -149,12 +149,12 @@ OC.L10N.register( "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'authentification à deux facteurs peut être forcée pour tous les utilisateurs et des groupes spécifiques. S'ils n'ont pas un fournisseur à deux facteurs configuré, ils ne seront pas capables de s'authentifier sur le système.", "Enforce two-factor authentication" : "Imposer l'authentification à deux facteurs", "Limit to groups" : "Limiter aux groupes", - "Enforcement of two-factor authentication can be set for certain groups only." : "L'application de l'authentification à deux facteurs ne peut être définie que pour certains groupes.", - "Two-factor authentication is enforced for all members of the following groups." : "L'authentification à deux facteurs est forcée pour tous les membres des groupes suivants.", + "Enforcement of two-factor authentication can be set for certain groups only." : "L'authentification à deux facteurs peut être imposée à certains groupes seulement.", + "Two-factor authentication is enforced for all members of the following groups." : "L'authentification à deux facteurs est forcée pour tous les membres des groupes suivants : ", "Enforced groups" : "Groupes forcés", - "Two-factor authentication is not enforced for members of the following groups." : "L'authentification à deux facteurs n'est pas forcée pour les membres des groupes suivants.", + "Two-factor authentication is not enforced for members of the following groups." : "L'authentification à deux facteurs n'est pas forcée pour les membres des groupes suivants : ", "Excluded groups" : "Groupes exclus", - "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Lorsque des groupes sont sélectionnés/exclus, la logique suivante est utilisée pour déterminer si un utilisateur a activé l'authentification double facteur (2FA). Si aucun groupe n'est sélectionné, l'authentification double facteur (2FA) est activée pour tout le monde sauf pour les membres des groupes exclus. Si des groupes sont sélectionnés, l'authentification double facteur (2FA) est activée pour tous les membres de ces groupes. Si un utilisateur est à la fois dans un groupe sélectionné et exclus, c'est le groupe sélectionné qui prime et l'authentification double facteur (2FA) est appliquée.", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Lorsque des groupes sont forcés/exclus, la logique suivante est utilisée pour déterminer si le 2FA est imposé à un utilisateur. Si aucun groupe n'est forcé, l'authentification à double facteur (2FA) est activée pour tout le monde sauf pour les membres des groupes exclus. Si des groupes sont forcés, l'authentification à double facteur (2FA) est imposée à tous les membres de ces groupes. Si un utilisateur est à la fois dans un groupe forcé et exclu, c'est le groupe forcé qui prime et l'authentification double facteur (2FA) est imposée.", "Save changes" : "Enregistrer les modifications", "All" : "Tous", "Limit app usage to groups" : "Limiter l'utilisation de l'application aux groupes", @@ -370,12 +370,12 @@ OC.L10N.register( "Please authorize your WebAuthn device." : "Veuillez autoriser votre appareil WebAuthn.", "Name your device" : "Nom de votre appareil", "Adding your device …" : "Ajout de votre appareil…", - "Server error while trying to add WebAuthn device" : "Erreur du serveur lors de l'ajout de l'appareil WebAuthn", + "Server error while trying to add WebAuthn device" : "Erreur du serveur lors de l'ajout du périphérique WebAuthn", "Server error while trying to complete WebAuthn device registration" : "Erreur du serveur lors de l'enregistrement de l'appareil WebAuthn", "Unnamed device" : "Appareil sans nom", "Passwordless Authentication" : "Authentification sans mot de passe", "Set up your account for passwordless authentication following the FIDO2 standard." : "Configurer votre compte pour une authentification sans mot de passe suivant le standard FIDO2.", - "No devices configured." : "Aucun appareil paramétré.", + "No devices configured." : "Aucun périphérique paramétré.", "The following devices are configured for your account:" : "Les appareils suivants sont paramétrés pour votre compte :", "Your browser does not support WebAuthn." : "Votre navigateur ne prend pas en charge WebAuthn.", "Your apps" : "Vos applications", @@ -402,7 +402,7 @@ OC.L10N.register( "Not saved" : "Non sauvegardé", "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", - "Location" : "Position", + "Location" : "Emplacement", "Profile picture" : "Photo de profil", "About" : "À propos", "Full name" : "Nom complet", @@ -494,7 +494,7 @@ OC.L10N.register( "Follow us on Mastodon" : "Suivez-nous sur Mastodon", "Check out our blog" : "Découvrez notre blog", "Subscribe to our newsletter" : "Abonnez-vous à notre lettre d'information", - "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas supportée et les notifications instantanées ne sont pas disponibles.", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas supportée et les notifications push ne sont pas disponibles.", "Use a second factor besides your password to increase security for your account." : "Utilisez un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si vous utilisez des applications tierces pour vous connecter à Nextcloud, assurez-vous de créer et de configurer un mot de passe d'application pour chacune avant d'activer l'authentification à deux facteurs.", "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", @@ -506,7 +506,7 @@ OC.L10N.register( "Couldn't remove app." : "Impossible de supprimer l'application.", "Couldn't update app." : "Impossible de mettre à jour l'application", "Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.", - "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est périmée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier journal de nextcloud pour plus de détails.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est dépassée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier de log de nextcloud pour plus de détails.", "You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.", "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Révoquer ce jeton peut empêcher l'effacement de votre appareil s'il n'a pas encore démarré l'effacement.", "Set as primary mail" : "Définir comme e-mail principal", @@ -518,16 +518,16 @@ OC.L10N.register( "Please read carefully before activating server-side encryption: " : "Veuillez lire ceci avec attention avant d'activer le chiffrement :", "Enable encryption" : "Activer le chiffrement", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez activer l'application \"Default Encryption Module\" et exécuter 'occ encryption:migrate'", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version de chiffrement (ownCloud <= 8.0) vers la nouvelle.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne (ownCloud <= 8.0) vers la nouvelle.", "Start migration" : "Démarrer la migration", "Last job execution ran %s. Something seems wrong." : "Quelque chose s'est mal passé lors de l'exécution de la dernière tâche %s.", "Some jobs haven’t been executed since %s. Please consider increasing the execution frequency." : "Certaines tâches n'ont pas été exécutées depuis %s. Vous pourriez augmenter la fréquence d'exécution.", "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Certaines tâches n’ont pas été exécutées depuis 1%s. Veuillez envisager de passer à un système cron.", "Last job ran %s." : "Dernière tâche exécutée %s.", - "Background job didn’t run yet!" : "La tâche de fond n'a pas encore été exécutée!", - "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Pour que le serveur fonctionne correctement, il est important de configurer correctement les tâches d'arrière-plan. 'Cron' est le paramètre recommandé. Veuillez vous référer à la documentation Nextcloud pour plus d'informations.", + "Background job didn’t run yet!" : "La tâche de fond n'a pas encore été exécutée !", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Pour que le serveur fonctionne correctement, il est important de configurer correctement les tâches d'arrière-plan. \"Cron\" est le règlage recommandé. Veuillez vous référer à la documentation Nextcloud pour plus d'informations.", "Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan", - "Recommended" : "Recommandée", + "Recommended" : "Recommandé", "The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".", "days" : "jours", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion quand le nom complet ou l'adresse e-mail sont saisis (en ignorant la recherche du numéro de téléphone et le fait d'être dans le même groupe)", diff --git a/apps/settings/l10n/fr.json b/apps/settings/l10n/fr.json index d58ce3e597b..b2c6954a79d 100644 --- a/apps/settings/l10n/fr.json +++ b/apps/settings/l10n/fr.json @@ -47,7 +47,7 @@ "A login attempt using two-factor authentication failed (%1$s)" : "Une tentative de connexion utilisant l'authentification à deux facteurs a échoué (%1$s)", "Remote wipe was started on %1$s" : "Effaçage distant démarré pour%1$s", "Remote wipe has finished on %1$s" : "Effaçage distant terminé pour %1$s", - "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié", + "Your <strong>password</strong> or <strong>email</strong> was modified" : "Votre <strong>mot de passe</strong> ou <strong>adresse e-mail</strong> a été modifié⋅e", "Could not remove app." : "Impossible de supprimer l'app.", "Could not update app." : "Impossible de mettre à jour l'app.", "Wrong password" : "Mot de passe incorrect", @@ -62,7 +62,7 @@ "installing and updating apps via the App Store or Federated Cloud Sharing" : "installation et mises à jour d'applications via le magasin d'applications ou le partage fédéré", "Federated Cloud Sharing" : "Federated Cloud Sharing", "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL utilise %1$s version (%2$s), qui est une version obsolète. Veuillez mettre à jour votre système d'exploitation, ou des fonctionnalités telles que %3$s ne fonctionneront pas correctement.", - "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est périmée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier journal de nextcloud pour plus de détails.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est dépassée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier journal de Nextcloud pour plus de détails.", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Le module PHP 'OPcache' n'est pas chargé. Pour de meilleures performances, il est recommandé de le charger dans votre installation PHP.", "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache est désactivé. Pour de meilleures performances, il est recommandé de définir <code>opcache.enable=1</code> dans votre fichier configuration PHP.", "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache est configuré pour retirer les commentaires du code. Avec OPcache activé, <code>opcache.save_comments=1</code> doit être ajouté au fichier de configuration PHP pour que Nextcloud fonctionne.", @@ -75,7 +75,7 @@ "Email setting test" : "Test des paramètres e-mail", "Well done, %s!" : "Bien joué, %s !", "If you received this email, the email configuration seems to be correct." : "Si vous avez reçu cet e-mail, la configuration de l'adresse e-mail semble être correcte.", - "Email could not be sent. Check your mail server log" : "L'email n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", + "Email could not be sent. Check your mail server log" : "L'e-mail n'a pu être envoyé. Vérifiez le journal du serveur de messagerie", "A problem occurred while sending the email. Please revise your settings. (Error: %s)" : "Une erreur est survenue lors de l'envoi de l'e-mail. Veuillez vérifier vos paramètres. (Erreur: %s)", "You need to set your user email before being able to send test emails. Go to %s for that." : "Vous devez définir votre e-mail utilisateur avant de tester l'envoi d'e-mail. Aller à %s pour cela.", "Invalid user" : "Utilisateur non valide", @@ -147,12 +147,12 @@ "Two-factor authentication can be enforced for all users and specific groups. If they do not have a two-factor provider configured, they will be unable to log into the system." : "L'authentification à deux facteurs peut être forcée pour tous les utilisateurs et des groupes spécifiques. S'ils n'ont pas un fournisseur à deux facteurs configuré, ils ne seront pas capables de s'authentifier sur le système.", "Enforce two-factor authentication" : "Imposer l'authentification à deux facteurs", "Limit to groups" : "Limiter aux groupes", - "Enforcement of two-factor authentication can be set for certain groups only." : "L'application de l'authentification à deux facteurs ne peut être définie que pour certains groupes.", - "Two-factor authentication is enforced for all members of the following groups." : "L'authentification à deux facteurs est forcée pour tous les membres des groupes suivants.", + "Enforcement of two-factor authentication can be set for certain groups only." : "L'authentification à deux facteurs peut être imposée à certains groupes seulement.", + "Two-factor authentication is enforced for all members of the following groups." : "L'authentification à deux facteurs est forcée pour tous les membres des groupes suivants : ", "Enforced groups" : "Groupes forcés", - "Two-factor authentication is not enforced for members of the following groups." : "L'authentification à deux facteurs n'est pas forcée pour les membres des groupes suivants.", + "Two-factor authentication is not enforced for members of the following groups." : "L'authentification à deux facteurs n'est pas forcée pour les membres des groupes suivants : ", "Excluded groups" : "Groupes exclus", - "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Lorsque des groupes sont sélectionnés/exclus, la logique suivante est utilisée pour déterminer si un utilisateur a activé l'authentification double facteur (2FA). Si aucun groupe n'est sélectionné, l'authentification double facteur (2FA) est activée pour tout le monde sauf pour les membres des groupes exclus. Si des groupes sont sélectionnés, l'authentification double facteur (2FA) est activée pour tous les membres de ces groupes. Si un utilisateur est à la fois dans un groupe sélectionné et exclus, c'est le groupe sélectionné qui prime et l'authentification double facteur (2FA) est appliquée.", + "When groups are selected/excluded, they use the following logic to determine if a user has 2FA enforced: If no groups are selected, 2FA is enabled for everyone except members of the excluded groups. If groups are selected, 2FA is enabled for all members of these. If a user is both in a selected and excluded group, the selected takes precedence and 2FA is enforced." : "Lorsque des groupes sont forcés/exclus, la logique suivante est utilisée pour déterminer si le 2FA est imposé à un utilisateur. Si aucun groupe n'est forcé, l'authentification à double facteur (2FA) est activée pour tout le monde sauf pour les membres des groupes exclus. Si des groupes sont forcés, l'authentification à double facteur (2FA) est imposée à tous les membres de ces groupes. Si un utilisateur est à la fois dans un groupe forcé et exclu, c'est le groupe forcé qui prime et l'authentification double facteur (2FA) est imposée.", "Save changes" : "Enregistrer les modifications", "All" : "Tous", "Limit app usage to groups" : "Limiter l'utilisation de l'application aux groupes", @@ -368,12 +368,12 @@ "Please authorize your WebAuthn device." : "Veuillez autoriser votre appareil WebAuthn.", "Name your device" : "Nom de votre appareil", "Adding your device …" : "Ajout de votre appareil…", - "Server error while trying to add WebAuthn device" : "Erreur du serveur lors de l'ajout de l'appareil WebAuthn", + "Server error while trying to add WebAuthn device" : "Erreur du serveur lors de l'ajout du périphérique WebAuthn", "Server error while trying to complete WebAuthn device registration" : "Erreur du serveur lors de l'enregistrement de l'appareil WebAuthn", "Unnamed device" : "Appareil sans nom", "Passwordless Authentication" : "Authentification sans mot de passe", "Set up your account for passwordless authentication following the FIDO2 standard." : "Configurer votre compte pour une authentification sans mot de passe suivant le standard FIDO2.", - "No devices configured." : "Aucun appareil paramétré.", + "No devices configured." : "Aucun périphérique paramétré.", "The following devices are configured for your account:" : "Les appareils suivants sont paramétrés pour votre compte :", "Your browser does not support WebAuthn." : "Votre navigateur ne prend pas en charge WebAuthn.", "Your apps" : "Vos applications", @@ -400,7 +400,7 @@ "Not saved" : "Non sauvegardé", "Sending…" : "Envoi en cours...", "Email sent" : "E-mail envoyé", - "Location" : "Position", + "Location" : "Emplacement", "Profile picture" : "Photo de profil", "About" : "À propos", "Full name" : "Nom complet", @@ -492,7 +492,7 @@ "Follow us on Mastodon" : "Suivez-nous sur Mastodon", "Check out our blog" : "Découvrez notre blog", "Subscribe to our newsletter" : "Abonnez-vous à notre lettre d'information", - "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas supportée et les notifications instantanées ne sont pas disponibles.", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas supportée et les notifications push ne sont pas disponibles.", "Use a second factor besides your password to increase security for your account." : "Utilisez un second facteur d'authentification en plus de votre mot de passe pour augmenter la sécurité de votre compte.", "If you use third party applications to connect to Nextcloud, please make sure to create and configure an app password for each before enabling second factor authentication." : "Si vous utilisez des applications tierces pour vous connecter à Nextcloud, assurez-vous de créer et de configurer un mot de passe d'application pour chacune avant d'activer l'authentification à deux facteurs.", "Migration in progress. Please wait until the migration is finished" : "Migration en cours. Veuillez attendre que celle-ci se termine", @@ -504,7 +504,7 @@ "Couldn't remove app." : "Impossible de supprimer l'application.", "Couldn't update app." : "Impossible de mettre à jour l'application", "Backend doesn't support password change, but the user's encryption key was updated." : "L'infrastructure d'arrière-plan ne supporte pas la modification de mot de passe, mais la clef de chiffrement de l'utilisateur a été mise à jour.", - "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est périmée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier journal de nextcloud pour plus de détails.", + "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Impossible de déterminer si la version TLS de cURL est dépassée ou non en raison d’une erreur survenue lors de la requête HTTPS vers https://nextcloud.com. Veuillez consulter le fichier de log de nextcloud pour plus de détails.", "You need to set your user email before being able to send test emails." : "Vous devez définir une adresse e-mail dans vos paramètres personnels avant de pouvoir envoyer des e-mails de test.", "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Révoquer ce jeton peut empêcher l'effacement de votre appareil s'il n'a pas encore démarré l'effacement.", "Set as primary mail" : "Définir comme e-mail principal", @@ -516,16 +516,16 @@ "Please read carefully before activating server-side encryption: " : "Veuillez lire ceci avec attention avant d'activer le chiffrement :", "Enable encryption" : "Activer le chiffrement", "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run 'occ encryption:migrate'" : "Vous devez migrer vos clés de chiffrement de l'ancienne version (ownCloud <= 8.0) vers la nouvelle. Veuillez activer l'application \"Default Encryption Module\" et exécuter 'occ encryption:migrate'", - "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne version de chiffrement (ownCloud <= 8.0) vers la nouvelle.", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one." : "Vous devez migrer vos clés de chiffrement de l'ancienne (ownCloud <= 8.0) vers la nouvelle.", "Start migration" : "Démarrer la migration", "Last job execution ran %s. Something seems wrong." : "Quelque chose s'est mal passé lors de l'exécution de la dernière tâche %s.", "Some jobs haven’t been executed since %s. Please consider increasing the execution frequency." : "Certaines tâches n'ont pas été exécutées depuis %s. Vous pourriez augmenter la fréquence d'exécution.", "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Certaines tâches n’ont pas été exécutées depuis 1%s. Veuillez envisager de passer à un système cron.", "Last job ran %s." : "Dernière tâche exécutée %s.", - "Background job didn’t run yet!" : "La tâche de fond n'a pas encore été exécutée!", - "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Pour que le serveur fonctionne correctement, il est important de configurer correctement les tâches d'arrière-plan. 'Cron' est le paramètre recommandé. Veuillez vous référer à la documentation Nextcloud pour plus d'informations.", + "Background job didn’t run yet!" : "La tâche de fond n'a pas encore été exécutée !", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Pour que le serveur fonctionne correctement, il est important de configurer correctement les tâches d'arrière-plan. \"Cron\" est le règlage recommandé. Veuillez vous référer à la documentation Nextcloud pour plus d'informations.", "Pick background job setting" : "Définir les paramètres pour la tâche d'arrière-plan", - "Recommended" : "Recommandée", + "Recommended" : "Recommandé", "The cron.php needs to be executed by the system user \"%s\"." : "Le cron.php doit être exécuté par l'utilisateur système \"%s\".", "days" : "jours", "Allow username autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Autoriser l'autocomplétion quand le nom complet ou l'adresse e-mail sont saisis (en ignorant la recherche du numéro de téléphone et le fait d'être dans le même groupe)", diff --git a/apps/settings/l10n/sk.js b/apps/settings/l10n/sk.js index 1f16d6d8de5..a2271b14524 100644 --- a/apps/settings/l10n/sk.js +++ b/apps/settings/l10n/sk.js @@ -56,6 +56,7 @@ OC.L10N.register( "Unable to change personal password" : "Nepodarilo sa zmeniť osobné heslo", "Saved" : "Uložené", "No user supplied" : "Nebol uvedený používateľ", + "Unable to change password. Password too long." : "Nepodarilo sa zmeniť heslo. Heslo je veľmi dlhé.", "Authentication error" : "Chyba autentifikácie", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Zadajte administrátorské heslo pre obnovu, inak budú všetky používateľské dáta stratené.", "Wrong admin recovery password. Please check the password and try again." : "Chybné administrátorské heslo pre obnovu. Skontrolujte správnosť hesla a skúste to znovu.", @@ -65,6 +66,13 @@ OC.L10N.register( "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používa zastaralú %1$s verziu (%2$s). Prosím aktualizujte si operačný systém pretože %3$s nebude fungovať spoľahlivo.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Nepodarilo sa zistiť, či je verzia TLS knižnice cURL zastaraná alebo nie, pretože sa vyskytla chyba počas požiadavky HTTPS na https://nextcloud.com. Ďalšie podrobnosti nájdete v log súbore nextcloud.", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Modul OPcache PHP nie je načítaný. Pre lepší výkon sa odporúča načítať ho do vašej inštalácie PHP.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache je vypnutá. Pre lepší výkon sa odporúča vložiť do konfigurácie PHP <code>opcache.enable=1</code>.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache je nakonfigurovaná na odstraňovanie komentárov kódu. Ak je povolená OPcache, musí byť nastavený <code>opcache.save_comments=1</code>, aby Nextcloud fungoval.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud nemá povolené používať OPcache API. Keď je OPcache povolená, dôrazne sa odporúča zahrnúť všetky adresáre Nextcloud s <code>opcache.restrict_api</code> alebo zrušiť toto nastavenie, aby ste deaktivovali obmedzenia API OPcache a aby ste predišli chybám počas aktualizácie jadra alebo aplikácie Nextcloud.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud nemá povolené používať OPcache API. Keď je OPcache povolená, dôrazne sa odporúča zahrnúť všetky adresáre Nextcloud s <code>opcache.restrict_api</code> alebo zrušiť toto nastavenie, aby ste deaktivovali obmedzenia API OPcache a aby ste predišli chybám počas aktualizácie jadra alebo aplikácií Nextcloud.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Maximálny počet kľúčov OPcache je takmer prekročený. Aby ste sa uistili, že všetky skripty môžu byť uložené vo vyrovnávacej pamäti, odporúča sa použiť <code>opcache.max_accelerated_files</code> na vašu konfiguráciu PHP s hodnotou vyššou ako <code>%s</code>.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Vyrovnávacia pamäť OPcache je takmer plná. Aby ste sa uistili, že všetky skripty môžu byť uložené vo vyrovnávacej pamäti, odporúča sa použiť <code>opcache.max_accelerated_files</code> na vašu konfiguráciu PHP s hodnotou vyššou ako <code>%s</code>.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Vyrovnávacia pamäť interných reťazcov OPcache je takmer plná. Aby ste sa uistili, že opakujúce sa reťazce možno efektívne ukladať do vyrovnávacej pamäte, odporúča sa použiť na konfiguráciu PHP <code>opcache.interned_strings_buffer</code> s hodnotou vyššou ako <code>%s</code>.", "Invalid SMTP password." : "Nesprávne heslo pre SMTP.", "Email setting test" : "Test nastavení emailu", "Well done, %s!" : "Dobrá práca, %s!", @@ -128,6 +136,11 @@ OC.L10N.register( "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Je niekoľko SSL certifikátov importovaných používateľmi, ktoré sa už v NextCloud 21 nepoužívajú. Môžu byť importované z príkazového riadku pomocou \"occ security:certificates:import\". Ich cesty vo vnútri dátového priečinka sú uvedené nižšie.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Boli nájdené neplatné UUID užívateľov alebo skupín LDAP. Skontrolujte svoje nastavenia „Prepísať detekciu UUID“ v expertnej časti konfigurácie LDAP a použite „occ ldap:update-uuid“ na ich aktualizáciu.", "The old server-side-encryption format is enabled. We recommend disabling this." : "Starý formát šifrovania na strane servera je povolený. Odporúčame vám to zakázať.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Používa sa verzia MariaDB \"%s\". Nextcloud 21 a vyšší už nebude podporovať túto verziu a vyžaduje MariaDB 10.2 alebo novšiu.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Používa sa verzia MySQL \"%s\". Nextcloud 21 a vyšší už nebude podporovať túto verziu a vyžaduje MySQL 8.0 alebo MariaDB 10.2 alebo novšia.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Používa sa verzia PostgreSQL \"%s\". Nextcloud 21 a vyšší už nebude podporovať túto verziu a vyžaduje PostgreSQL 9.6 alebo novší.", + "Profile information" : "Informácie o profile", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilový obrázok, celé meno, e-mail, telefónne číslo, adresa, webová stránka, Twitter, organizácia, rola, titulok, životopis a či je váš profil povolený", "Nextcloud settings" : "Nastavenia Nextcloud", "Here you can decide which group can access certain sections of the administration settings." : "Tu sa môžete rozhodnúť, ktorá skupina má prístup k niektorým nastaveniam správcu.", "None" : "Žiadny", @@ -213,16 +226,27 @@ OC.L10N.register( "Copied!" : "Skopírované!", "Copy" : "Kopírovať", "Could not copy app password. Please copy it manually." : "Nie je možné skopírovať heslo pre aplikáciu. Skopírujte ho ručne.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Odporúča sa 'Cron'. Viac informácií je možné nájsť v dokumentácii.", + "Last job execution ran {time}. Something seems wrong." : "Úloha naposledy prebehla za %s. Zdá sa, že niečo nie je v poriadku.", + "Last job ran {relativeTime}." : "Posledná úloha bežala {relativeTime}.", "Background job did not run yet!" : "Úloha na pozadí ešte nebežala!", "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "S každou načítanou stránkou spustiť jednu úlohu. Prípad použitia: Inštancia jedného používateľa.", "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php je zaregistrovaný v službe webcron, aby každých 5 minút volal cron.php cez HTTP. Prípad použitia: Veľmi malá inštancia (1–5 používateľov v závislosti od použitia).", "Cron (Recommended)" : "Cron (Odporúčané)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pre spustenie potrebujete mať rozšírenie PHP POSIX. Viac detailov v {linkstart}PHP dokumentácii{linkend}.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Použiť systémový plánovač (cron) pre spustenie súboru cron.php každých 5 minút. Odporúčané pre všetky inštancie.", + "The cron.php needs to be executed by the system user \"{user}\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"{user}\".", + "Unable to update background job mode" : "Nie je možné aktualizovať režim úlohy na pozadí", "Profile" : "Profil", + "Enable or disable profile by default for new users." : "Predvolene povoliť alebo zakázať profil pre nových používateľov.", "Enable" : "Zapnúť", + "Unable to update profile default setting" : "Nie je možné aktualizovať predvolené nastavenie profilu", "Server-side encryption" : "Šifrovanie na serveri", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrovanie na strane servera umožňuje zašifrovať súbory, ktoré sú na tento server nahrávané. To prináša obmedzenia ako napr. výkonnostné obmedzenie, takže to povoľte len ak je to naozaj potrebné.", "Enable server-side encryption" : "Povoliť šifrovanie na serveri", + "Please read carefully before activating server-side encryption:" : "Prečítajte prosím pozorne pred použitím šifrovania na strane servera:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Potom ako sa zapne šifrovanie sú od toho bodu všetky nahrávané súbory šifrované serverom. Vypnutie šifrovania bude možné až vtedy, keď bude šifrovací modul túto možnosť podporovať a po splnení všetkých nutných podmenok (tzn. nastavenie kľúčov pre obnovenie).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Samotné šifrovanie negarantuje bezpečnosť systému. Ak sa chcete dozvedieť viac o tom ako funguje aplikácia pre šifrovanie a aké sú podporované prípady použitia, prečítajte si prosím dokumentáciu.", "Be aware that encryption always increases the file size." : "Majte na vedomí, že šifrovanie vždy zväčší veľkosť súborov.", @@ -230,6 +254,8 @@ OC.L10N.register( "This is the final warning: Do you really want to enable encryption?" : "Toto je posledné varovanie: Vážne si prajete povoliť šifrovanie?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nebol načítaný žiadny šifrovací modul, povoľte prosím šifrovací modul v menu aplikácií.", "Select default encryption module:" : "Vybrať predvolený šifrovací modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Musíte zmigrovať svoje šifrovacie kľúče zo starého šifrovania (ownCloud <= 8.0) na nové. Povoľte „Predvolený modul šifrovania“ a spustite príkaz {command}", + "Unable to update server side encryption config" : "Nedá sa aktualizovať konfigurácia šifrovania na strane servera", "Rename group" : "Premenovať skupinu", "Remove group" : "Odstrániť skupinu", "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte sa odstrániť skupinu {group}. Používatelia NEBUDÚ vymazaní.", @@ -237,12 +263,26 @@ OC.L10N.register( "Current password" : "Aktuálne heslo", "New password" : "Nové heslo", "Change password" : "Zmeniť heslo", + "Your profile picture" : "Váš profilový obrázok", + "Upload profile picture" : "Nahrať profilový obrázok", + "Choose profile picture from files" : "Vybrať profilový obrázok zo súborov", + "Remove profile picture" : "Odstrániť profilový obrázok", "png or jpg, max. 20 MB" : "png alebo jpg, max. 20 MB", "Picture provided by original account" : "Obrázok poskytnutý originálnym účtom", "Cancel" : "Zrušiť", + "Set as profile picture" : "Nastaviť ako profilový obrázok", + "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Upozorňujeme, že aktualizácia vášho profilového obrázka môže trvať až 24 hodín.", + "Choose your profile picture" : "Vyberte si váš profilový obrázok", + "Please select a valid png or jpg file" : "Prosím vyberte platný png alebo jpg súbor", + "Error setting profile picture" : "Chyba pri nastavovaní profilového obrázku", + "Error cropping profile picture" : "Chyba pri orezávaní profilového obrázku", + "Error saving profile picture" : "Chyba pri ukladaní profilového obrázku", + "Error removing profile picture" : "Chyba pri odstraňovaní profilového obrázku", "Your biography" : "Váš životopis", "Details" : "Detaily", "You are a member of the following groups:" : "Ste členom nasledovných skupín:", + "You are using <strong>{usage}</strong>" : "Využívate <strong>{usage}</strong>", + "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Využívate <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)", "Your full name" : "Vaše celé meno", "Email options" : "Možnosti E-mailu", "Primary email for password reset and notifications" : "Primárny e-mail na obnovenie hesla a zasielanie upozornení", @@ -266,6 +306,10 @@ OC.L10N.register( "Unable to update language" : "Nie je možné aktualizovať jazyk", "No language set" : "Nie je nastavený žiadny jazyk", "Locale" : "Miestne nastavenie", + "Week starts on {firstDayOfWeek}" : "Začiatok týždňa je {firstDayOfWeek}", + "Unable to update locale" : "Nie je možné aktualizovať miestne nastavenie", + "No locale set" : "Nie je nastavené žiadne miestne nastavenie", + "Your location" : "Vaša poloha", "Your organisation" : "Vaša organizácia", "Your phone number" : "Vaše telefónne číslo", "Edit your Profile visibility" : "Upraviť viditeľnosť vášho profilu", @@ -277,6 +321,12 @@ OC.L10N.register( "Your role" : "Vaša rola", "Your Twitter handle" : "Vaša stránka na Twitteri", "Your website" : "Vaša webstránka", + "No {property} set" : "Nie je nastavená žiadna {property}", + "Unable to update {property}" : "Nie je možné aktualizovať {property}", + "Change scope level of {property}, current scope is {scope}" : "Zmeniť úroveň rozsahu {property}, aktuálny rozsah je {scope}", + "Unable to update federation scope of the primary {property}" : "Nie je možné aktualizovať rozsah federácie primárneho {property}", + "Unable to update federation scope of additional {property}" : "Nie je možné aktualizovať rozsah federácie ďalšieho {property}", + "Add additional email" : "Pridať ďalší e-mail", "Add" : "Pridať", "You do not have permissions to see the details of this user" : "Nemáte oprávnenie vidieť detaily tohoto používateľa", "Add new password" : "Pridať nové heslo", @@ -374,6 +424,7 @@ OC.L10N.register( "The app will be downloaded from the App Store" : "Aplikácia bude stiahnutá z obchodu", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Táto aplikácia nie je označená ako kompatibilná s vašou verziou Nextcloud. Ak budete pokračovať, aplikáciu budete môcť stále nainštalovať. Aplikácia nemusí fungovať podľa očakávania.", "Never" : "Nikdy", + "An error occurred during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikácia bola povolená, ale vyžaduje sa aktualizácia. Presmerovanie na stránku aktualizácie o 5 sekúnd.", "Error: This app cannot be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera", "Administrator documentation" : "Príručka administrátora", @@ -420,6 +471,7 @@ OC.L10N.register( "Allow public uploads" : "Povoliť verejné nahrávanie súborov", "Always ask for a password" : "Vždy vyžadovať heslo", "Enforce password protection" : "Vynútiť ochranu heslom", + "Exclude groups from password requirements:" : "Vylúčiť skupiny z požiadaviek na heslo:", "Set default expiration date" : "Nastaviť predvolený dátum expirácie", "Exclude groups from creating link shares:" : "Nepovoliť skupinám vytvárať odkazy k zdieľaniu:", "Allow resharing" : "Povoliť sprístupňovanie ďalej", @@ -431,6 +483,7 @@ OC.L10N.register( "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách", "Allow username autocompletion to users based on phone number integration" : "Povoliť automatické dopĺňanie mien užívateľom založené na integrácii s telefónnym číslom", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ak je povolené automatické dopĺňanie „pre rovnakú skupinu“ a „integrácia telefónneho čísla“, na zobrazenie používateľa stačí zhoda v ktorejkoľvek z nich.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zobraziť text upozornenia na stránke pre nahrávanie verejného odkazu (zobraziť len ak je zoznam súborov skrytý)", "This text will be shown on the public link upload page when the file list is hidden." : "Ak nebude zoznam súborov skrytý, tento text sa zobrazí na stránke pre nahrávanie verejného odkazu.", "Default share permissions" : "Prednastavené povolenia pre zdieľanie", @@ -472,6 +525,7 @@ OC.L10N.register( "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Niektoré úlohy neboli vykonané už od %s. Zvážte prechod na plánovač systému - cron.", "Last job ran %s." : "Úloha naposledy prebehla %s.", "Background job didn’t run yet!" : "Úloha na pozadí ešte nebežala!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Odporúča sa 'Cron'. Viac informácií je možné nájsť v dokumentácii.", "Pick background job setting" : "Vybrať nastavenie úlohy na pozadí", "Recommended" : "Odporúčané", "The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".", @@ -496,6 +550,7 @@ OC.L10N.register( "Link https://…" : "Linka https://…", "Change privacy level of Twitter profile" : "Zmeniť úroveň súkromia pre Twitterový profil", "Twitter handle @…" : "Prezývka na Twitteri @…", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Maximálny počet kľúčov OPcache je takmer prekročený. Aby ste sa uistili, že všetky skripty môžu byť uložené vo vyrovnávacej pamäti, odporúča sa použiť <code>opcache.max_accelerated_files</code> na vašu konfiguráciu PHP s hodnotou vyššou ako <code>%s</code>.", "Admin privileges" : "Oprávnenie správcu", "Unable to update biography" : "Nie je možné aktualizovať životopis", "Unable to update full name" : "Nie je možné aktualizovať vaše celé meno", diff --git a/apps/settings/l10n/sk.json b/apps/settings/l10n/sk.json index 914606ff5b0..43a0cd7f707 100644 --- a/apps/settings/l10n/sk.json +++ b/apps/settings/l10n/sk.json @@ -54,6 +54,7 @@ "Unable to change personal password" : "Nepodarilo sa zmeniť osobné heslo", "Saved" : "Uložené", "No user supplied" : "Nebol uvedený používateľ", + "Unable to change password. Password too long." : "Nepodarilo sa zmeniť heslo. Heslo je veľmi dlhé.", "Authentication error" : "Chyba autentifikácie", "Please provide an admin recovery password; otherwise, all user data will be lost." : "Zadajte administrátorské heslo pre obnovu, inak budú všetky používateľské dáta stratené.", "Wrong admin recovery password. Please check the password and try again." : "Chybné administrátorské heslo pre obnovu. Skontrolujte správnosť hesla a skúste to znovu.", @@ -63,6 +64,13 @@ "cURL is using an outdated %1$s version (%2$s). Please update your operating system or features such as %3$s will not work reliably." : "cURL používa zastaralú %1$s verziu (%2$s). Prosím aktualizujte si operačný systém pretože %3$s nebude fungovať spoľahlivo.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the Nextcloud log file for more details." : "Nepodarilo sa zistiť, či je verzia TLS knižnice cURL zastaraná alebo nie, pretože sa vyskytla chyba počas požiadavky HTTPS na https://nextcloud.com. Ďalšie podrobnosti nájdete v log súbore nextcloud.", "The PHP OPcache module is not loaded. For better performance it is recommended to load it into your PHP installation." : "Modul OPcache PHP nie je načítaný. Pre lepší výkon sa odporúča načítať ho do vašej inštalácie PHP.", + "OPcache is disabled. For better performance, it is recommended to apply <code>opcache.enable=1</code> to your PHP configuration." : "OPcache je vypnutá. Pre lepší výkon sa odporúča vložiť do konfigurácie PHP <code>opcache.enable=1</code>.", + "OPcache is configured to remove code comments. With OPcache enabled, <code>opcache.save_comments=1</code> must be set for Nextcloud to function." : "OPcache je nakonfigurovaná na odstraňovanie komentárov kódu. Ak je povolená OPcache, musí byť nastavený <code>opcache.save_comments=1</code>, aby Nextcloud fungoval.", + "Nextcloud is not allowed to use the OPcache API. With OPcache enabled, it is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud nemá povolené používať OPcache API. Keď je OPcache povolená, dôrazne sa odporúča zahrnúť všetky adresáre Nextcloud s <code>opcache.restrict_api</code> alebo zrušiť toto nastavenie, aby ste deaktivovali obmedzenia API OPcache a aby ste predišli chybám počas aktualizácie jadra alebo aplikácie Nextcloud.", + "Nextcloud is not allowed to use the OPcache API. It is highly recommended to include all Nextcloud directories with <code>opcache.restrict_api</code> or unset this setting to disable OPcache API restrictions, to prevent errors during Nextcloud core or app upgrades." : "Nextcloud nemá povolené používať OPcache API. Keď je OPcache povolená, dôrazne sa odporúča zahrnúť všetky adresáre Nextcloud s <code>opcache.restrict_api</code> alebo zrušiť toto nastavenie, aby ste deaktivovali obmedzenia API OPcache a aby ste predišli chybám počas aktualizácie jadra alebo aplikácií Nextcloud.", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be kept in the cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Maximálny počet kľúčov OPcache je takmer prekročený. Aby ste sa uistili, že všetky skripty môžu byť uložené vo vyrovnávacej pamäti, odporúča sa použiť <code>opcache.max_accelerated_files</code> na vašu konfiguráciu PHP s hodnotou vyššou ako <code>%s</code>.", + "The OPcache buffer is nearly full. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.memory_consumption</code> to your PHP configuration with a value higher than <code>%s</code>." : "Vyrovnávacia pamäť OPcache je takmer plná. Aby ste sa uistili, že všetky skripty môžu byť uložené vo vyrovnávacej pamäti, odporúča sa použiť <code>opcache.max_accelerated_files</code> na vašu konfiguráciu PHP s hodnotou vyššou ako <code>%s</code>.", + "The OPcache interned strings buffer is nearly full. To assure that repeating strings can be effectively cached, it is recommended to apply <code>opcache.interned_strings_buffer</code> to your PHP configuration with a value higher than <code>%s</code>." : "Vyrovnávacia pamäť interných reťazcov OPcache je takmer plná. Aby ste sa uistili, že opakujúce sa reťazce možno efektívne ukladať do vyrovnávacej pamäte, odporúča sa použiť na konfiguráciu PHP <code>opcache.interned_strings_buffer</code> s hodnotou vyššou ako <code>%s</code>.", "Invalid SMTP password." : "Nesprávne heslo pre SMTP.", "Email setting test" : "Test nastavení emailu", "Well done, %s!" : "Dobrá práca, %s!", @@ -126,6 +134,11 @@ "There are some user imported SSL certificates present, that are not used anymore with Nextcloud 21. They can be imported on the command line via \"occ security:certificates:import\" command. Their paths inside the data directory are shown below." : "Je niekoľko SSL certifikátov importovaných používateľmi, ktoré sa už v NextCloud 21 nepoužívajú. Môžu byť importované z príkazového riadku pomocou \"occ security:certificates:import\". Ich cesty vo vnútri dátového priečinka sú uvedené nižšie.", "Invalid UUIDs of LDAP users or groups have been found. Please review your \"Override UUID detection\" settings in the Expert part of the LDAP configuration and use \"occ ldap:update-uuid\" to update them." : "Boli nájdené neplatné UUID užívateľov alebo skupín LDAP. Skontrolujte svoje nastavenia „Prepísať detekciu UUID“ v expertnej časti konfigurácie LDAP a použite „occ ldap:update-uuid“ na ich aktualizáciu.", "The old server-side-encryption format is enabled. We recommend disabling this." : "Starý formát šifrovania na strane servera je povolený. Odporúčame vám to zakázať.", + "MariaDB version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MariaDB 10.2 or higher." : "Používa sa verzia MariaDB \"%s\". Nextcloud 21 a vyšší už nebude podporovať túto verziu a vyžaduje MariaDB 10.2 alebo novšiu.", + "MySQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require MySQL 8.0 or MariaDB 10.2 or higher." : "Používa sa verzia MySQL \"%s\". Nextcloud 21 a vyšší už nebude podporovať túto verziu a vyžaduje MySQL 8.0 alebo MariaDB 10.2 alebo novšia.", + "PostgreSQL version \"%s\" is used. Nextcloud 21 and higher do not support this version and require PostgreSQL 9.6 or higher." : "Používa sa verzia PostgreSQL \"%s\". Nextcloud 21 a vyšší už nebude podporovať túto verziu a vyžaduje PostgreSQL 9.6 alebo novší.", + "Profile information" : "Informácie o profile", + "Profile picture, full name, email, phone number, address, website, Twitter, organisation, role, headline, biography, and whether your profile is enabled" : "Profilový obrázok, celé meno, e-mail, telefónne číslo, adresa, webová stránka, Twitter, organizácia, rola, titulok, životopis a či je váš profil povolený", "Nextcloud settings" : "Nastavenia Nextcloud", "Here you can decide which group can access certain sections of the administration settings." : "Tu sa môžete rozhodnúť, ktorá skupina má prístup k niektorým nastaveniam správcu.", "None" : "Žiadny", @@ -211,16 +224,27 @@ "Copied!" : "Skopírované!", "Copy" : "Kopírovať", "Could not copy app password. Please copy it manually." : "Nie je možné skopírovať heslo pre aplikáciu. Skopírujte ho ručne.", + "For the server to work properly, it's important to configure background jobs correctly. Cron is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Odporúča sa 'Cron'. Viac informácií je možné nájsť v dokumentácii.", + "Last job execution ran {time}. Something seems wrong." : "Úloha naposledy prebehla za %s. Zdá sa, že niečo nie je v poriadku.", + "Last job ran {relativeTime}." : "Posledná úloha bežala {relativeTime}.", "Background job did not run yet!" : "Úloha na pozadí ešte nebežala!", "AJAX" : "AJAX", + "Execute one task with each page loaded. Use case: Single user instance." : "S každou načítanou stránkou spustiť jednu úlohu. Prípad použitia: Inštancia jedného používateľa.", "Webcron" : "Webcron", + "cron.php is registered at a webcron service to call cron.php every 5 minutes over HTTP. Use case: Very small instance (1–5 users depending on the usage)." : "cron.php je zaregistrovaný v službe webcron, aby každých 5 minút volal cron.php cez HTTP. Prípad použitia: Veľmi malá inštancia (1–5 používateľov v závislosti od použitia).", "Cron (Recommended)" : "Cron (Odporúčané)", "To run this you need the PHP POSIX extension. See {linkstart}PHP documentation{linkend} for more details." : "Pre spustenie potrebujete mať rozšírenie PHP POSIX. Viac detailov v {linkstart}PHP dokumentácii{linkend}.", + "Use system cron service to call the cron.php file every 5 minutes. Recommended for all instances." : "Použiť systémový plánovač (cron) pre spustenie súboru cron.php každých 5 minút. Odporúčané pre všetky inštancie.", + "The cron.php needs to be executed by the system user \"{user}\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"{user}\".", + "Unable to update background job mode" : "Nie je možné aktualizovať režim úlohy na pozadí", "Profile" : "Profil", + "Enable or disable profile by default for new users." : "Predvolene povoliť alebo zakázať profil pre nových používateľov.", "Enable" : "Zapnúť", + "Unable to update profile default setting" : "Nie je možné aktualizovať predvolené nastavenie profilu", "Server-side encryption" : "Šifrovanie na serveri", "Server-side encryption makes it possible to encrypt files which are uploaded to this server. This comes with limitations like a performance penalty, so enable this only if needed." : "Šifrovanie na strane servera umožňuje zašifrovať súbory, ktoré sú na tento server nahrávané. To prináša obmedzenia ako napr. výkonnostné obmedzenie, takže to povoľte len ak je to naozaj potrebné.", "Enable server-side encryption" : "Povoliť šifrovanie na serveri", + "Please read carefully before activating server-side encryption:" : "Prečítajte prosím pozorne pred použitím šifrovania na strane servera:", "Once encryption is enabled, all files uploaded to the server from that point forward will be encrypted at rest on the server. It will only be possible to disable encryption at a later date if the active encryption module supports that function, and all pre-conditions (e.g. setting a recover key) are met." : "Potom ako sa zapne šifrovanie sú od toho bodu všetky nahrávané súbory šifrované serverom. Vypnutie šifrovania bude možné až vtedy, keď bude šifrovací modul túto možnosť podporovať a po splnení všetkých nutných podmenok (tzn. nastavenie kľúčov pre obnovenie).", "Encryption alone does not guarantee security of the system. Please see documentation for more information about how the encryption app works, and the supported use cases." : "Samotné šifrovanie negarantuje bezpečnosť systému. Ak sa chcete dozvedieť viac o tom ako funguje aplikácia pre šifrovanie a aké sú podporované prípady použitia, prečítajte si prosím dokumentáciu.", "Be aware that encryption always increases the file size." : "Majte na vedomí, že šifrovanie vždy zväčší veľkosť súborov.", @@ -228,6 +252,8 @@ "This is the final warning: Do you really want to enable encryption?" : "Toto je posledné varovanie: Vážne si prajete povoliť šifrovanie?", "No encryption module loaded, please enable an encryption module in the app menu." : "Nebol načítaný žiadny šifrovací modul, povoľte prosím šifrovací modul v menu aplikácií.", "Select default encryption module:" : "Vybrať predvolený šifrovací modul:", + "You need to migrate your encryption keys from the old encryption (ownCloud <= 8.0) to the new one. Please enable the \"Default encryption module\" and run {command}" : "Musíte zmigrovať svoje šifrovacie kľúče zo starého šifrovania (ownCloud <= 8.0) na nové. Povoľte „Predvolený modul šifrovania“ a spustite príkaz {command}", + "Unable to update server side encryption config" : "Nedá sa aktualizovať konfigurácia šifrovania na strane servera", "Rename group" : "Premenovať skupinu", "Remove group" : "Odstrániť skupinu", "You are about to remove the group {group}. The users will NOT be deleted." : "Chystáte sa odstrániť skupinu {group}. Používatelia NEBUDÚ vymazaní.", @@ -235,12 +261,26 @@ "Current password" : "Aktuálne heslo", "New password" : "Nové heslo", "Change password" : "Zmeniť heslo", + "Your profile picture" : "Váš profilový obrázok", + "Upload profile picture" : "Nahrať profilový obrázok", + "Choose profile picture from files" : "Vybrať profilový obrázok zo súborov", + "Remove profile picture" : "Odstrániť profilový obrázok", "png or jpg, max. 20 MB" : "png alebo jpg, max. 20 MB", "Picture provided by original account" : "Obrázok poskytnutý originálnym účtom", "Cancel" : "Zrušiť", + "Set as profile picture" : "Nastaviť ako profilový obrázok", + "Please note that it can take up to 24 hours for your profile picture to be updated everywhere." : "Upozorňujeme, že aktualizácia vášho profilového obrázka môže trvať až 24 hodín.", + "Choose your profile picture" : "Vyberte si váš profilový obrázok", + "Please select a valid png or jpg file" : "Prosím vyberte platný png alebo jpg súbor", + "Error setting profile picture" : "Chyba pri nastavovaní profilového obrázku", + "Error cropping profile picture" : "Chyba pri orezávaní profilového obrázku", + "Error saving profile picture" : "Chyba pri ukladaní profilového obrázku", + "Error removing profile picture" : "Chyba pri odstraňovaní profilového obrázku", "Your biography" : "Váš životopis", "Details" : "Detaily", "You are a member of the following groups:" : "Ste členom nasledovných skupín:", + "You are using <strong>{usage}</strong>" : "Využívate <strong>{usage}</strong>", + "You are using <strong>{usage}</strong> of <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)" : "Využívate <strong>{usage}</strong> z <strong>{totalSpace}</strong> (<strong>{usageRelative}%</strong>)", "Your full name" : "Vaše celé meno", "Email options" : "Možnosti E-mailu", "Primary email for password reset and notifications" : "Primárny e-mail na obnovenie hesla a zasielanie upozornení", @@ -264,6 +304,10 @@ "Unable to update language" : "Nie je možné aktualizovať jazyk", "No language set" : "Nie je nastavený žiadny jazyk", "Locale" : "Miestne nastavenie", + "Week starts on {firstDayOfWeek}" : "Začiatok týždňa je {firstDayOfWeek}", + "Unable to update locale" : "Nie je možné aktualizovať miestne nastavenie", + "No locale set" : "Nie je nastavené žiadne miestne nastavenie", + "Your location" : "Vaša poloha", "Your organisation" : "Vaša organizácia", "Your phone number" : "Vaše telefónne číslo", "Edit your Profile visibility" : "Upraviť viditeľnosť vášho profilu", @@ -275,6 +319,12 @@ "Your role" : "Vaša rola", "Your Twitter handle" : "Vaša stránka na Twitteri", "Your website" : "Vaša webstránka", + "No {property} set" : "Nie je nastavená žiadna {property}", + "Unable to update {property}" : "Nie je možné aktualizovať {property}", + "Change scope level of {property}, current scope is {scope}" : "Zmeniť úroveň rozsahu {property}, aktuálny rozsah je {scope}", + "Unable to update federation scope of the primary {property}" : "Nie je možné aktualizovať rozsah federácie primárneho {property}", + "Unable to update federation scope of additional {property}" : "Nie je možné aktualizovať rozsah federácie ďalšieho {property}", + "Add additional email" : "Pridať ďalší e-mail", "Add" : "Pridať", "You do not have permissions to see the details of this user" : "Nemáte oprávnenie vidieť detaily tohoto používateľa", "Add new password" : "Pridať nové heslo", @@ -372,6 +422,7 @@ "The app will be downloaded from the App Store" : "Aplikácia bude stiahnutá z obchodu", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Táto aplikácia nie je označená ako kompatibilná s vašou verziou Nextcloud. Ak budete pokračovať, aplikáciu budete môcť stále nainštalovať. Aplikácia nemusí fungovať podľa očakávania.", "Never" : "Nikdy", + "An error occurred during the request. Unable to proceed." : "Počas vykonania požiadavky nastala chyba. Nie je možné pokračovať.", "The app has been enabled but needs to be updated. You will be redirected to the update page in 5 seconds." : "Aplikácia bola povolená, ale vyžaduje sa aktualizácia. Presmerovanie na stránku aktualizácie o 5 sekúnd.", "Error: This app cannot be enabled because it makes the server unstable" : "Chyba: aplikáciu nie je možné povoliť, lebo naruší stabilitu servera", "Administrator documentation" : "Príručka administrátora", @@ -418,6 +469,7 @@ "Allow public uploads" : "Povoliť verejné nahrávanie súborov", "Always ask for a password" : "Vždy vyžadovať heslo", "Enforce password protection" : "Vynútiť ochranu heslom", + "Exclude groups from password requirements:" : "Vylúčiť skupiny z požiadaviek na heslo:", "Set default expiration date" : "Nastaviť predvolený dátum expirácie", "Exclude groups from creating link shares:" : "Nepovoliť skupinám vytvárať odkazy k zdieľaniu:", "Allow resharing" : "Povoliť sprístupňovanie ďalej", @@ -429,6 +481,7 @@ "Allow username autocompletion to users within the same groups" : "Povoliť automatické dopĺňanie mien užívateľom v rovnakých skupinách", "Allow username autocompletion to users based on phone number integration" : "Povoliť automatické dopĺňanie mien užívateľom založené na integrácii s telefónnym číslom", "If autocompletion \"same group\" and \"phone number integration\" are enabled a match in either is enough to show the user." : "Ak je povolené automatické dopĺňanie „pre rovnakú skupinu“ a „integrácia telefónneho čísla“, na zobrazenie používateľa stačí zhoda v ktorejkoľvek z nich.", + "Allow autocompletion when entering the full name or email address (ignoring missing phonebook match and being in the same group)" : "Pri zadávaní celého mena alebo e-mailovej adresy povoliť automatické dopĺňanie (ignoruje sa chýbajúca zhoda v telefónnom zozname a príslušnosť k rovnakej skupine)", "Show disclaimer text on the public link upload page (only shown when the file list is hidden)" : "Zobraziť text upozornenia na stránke pre nahrávanie verejného odkazu (zobraziť len ak je zoznam súborov skrytý)", "This text will be shown on the public link upload page when the file list is hidden." : "Ak nebude zoznam súborov skrytý, tento text sa zobrazí na stránke pre nahrávanie verejného odkazu.", "Default share permissions" : "Prednastavené povolenia pre zdieľanie", @@ -470,6 +523,7 @@ "Some jobs didn’t execute since %s. Please consider switching to system cron." : "Niektoré úlohy neboli vykonané už od %s. Zvážte prechod na plánovač systému - cron.", "Last job ran %s." : "Úloha naposledy prebehla %s.", "Background job didn’t run yet!" : "Úloha na pozadí ešte nebežala!", + "For the server to work properly, it's important to configure background jobs correctly. \"Cron\" is the recommended setting. Please see the documentation for more information." : "Pre optimálny výkon je dôležité nakonfigurovať úlohy na pozadí správne. Odporúča sa 'Cron'. Viac informácií je možné nájsť v dokumentácii.", "Pick background job setting" : "Vybrať nastavenie úlohy na pozadí", "Recommended" : "Odporúčané", "The cron.php needs to be executed by the system user \"%s\"." : "Je potrebné, aby cron.php bol spustený systémovým používateľom \"%s\".", @@ -494,6 +548,7 @@ "Link https://…" : "Linka https://…", "Change privacy level of Twitter profile" : "Zmeniť úroveň súkromia pre Twitterový profil", "Twitter handle @…" : "Prezývka na Twitteri @…", + "The maximum number of OPcache keys is nearly exceeded. To assure that all scripts can be hold in cache, it is recommended to apply <code>opcache.max_accelerated_files</code> to your PHP configuration with a value higher than <code>%s</code>." : "Maximálny počet kľúčov OPcache je takmer prekročený. Aby ste sa uistili, že všetky skripty môžu byť uložené vo vyrovnávacej pamäti, odporúča sa použiť <code>opcache.max_accelerated_files</code> na vašu konfiguráciu PHP s hodnotou vyššou ako <code>%s</code>.", "Admin privileges" : "Oprávnenie správcu", "Unable to update biography" : "Nie je možné aktualizovať životopis", "Unable to update full name" : "Nie je možné aktualizovať vaše celé meno", diff --git a/apps/settings/l10n/uk.js b/apps/settings/l10n/uk.js index 8950b77926f..f0e529645ed 100644 --- a/apps/settings/l10n/uk.js +++ b/apps/settings/l10n/uk.js @@ -35,12 +35,12 @@ OC.L10N.register( "You changed your password" : "Ви змінили свій пароль", "Your password was reset by an administrator" : "Ваш пароль був скинутий адміністратором", "Your password was reset" : "Ваш пароль скинуто", - "{actor} changed your email address" : "{actor} змінив вашу email адресу", + "{actor} changed your email address" : "{actor} змінив адресу вашої ел.пошти", "You changed your email address" : "Ви змінили вашу email адресу", "Your email address was changed by an administrator" : "Ваша email адреса змінена адміністратором", "You created app password \"{token}\"" : "Ви створили пароль програми \"{token}\"", "An administrator created app password \"{token}\"" : "Адміністратор створив пароль програми \"{token}\"", - "You deleted app password \"{token}\"" : "Ви видалили пароль програми \"{token}\"", + "You deleted app password \"{token}\"" : "Ви вилучили пароль застосунку \"{token}\"", "You renamed app password \"{token}\" to \"{newToken}\"" : "Ви перейменували пароль програми \"{token}\" на \"{newToken}\"", "You granted filesystem access to app password \"{token}\"" : "Ви надали доступ до файлової системи паролю програми \"{token}\"", "You revoked filesystem access from app password \"{token}\"" : "Ви скасували доступ до файлової системи з паролем програми \"{token}\"", @@ -50,7 +50,7 @@ OC.L10N.register( "Remote wipe was started on %1$s" : "Розпочато віддалене стирання на %1$s", "Remote wipe has finished on %1$s" : "Віддалене стирання на %1$s завершено", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> чи <strong>електронна пошта</strong> були змінені", - "Could not remove app." : "Не вдалося видалити додаток.", + "Could not remove app." : "Не вдалося вилучити застосунок.", "Could not update app." : "Не вдалося оновити програму.", "Wrong password" : "Неправильний пароль", "Unable to change personal password" : "Неможливо змінити особистий пароль", @@ -89,8 +89,8 @@ OC.L10N.register( "Unable to set invalid website" : "Не вдалося встановити недійсний веб-сайт", "Some account data was invalid" : "Деякі дані облікового запису недійсні", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Щоб підтвердити свій обліковий запис Twitter, опублікуйте наступний твіт у Twitter (переконайтеся, що опубліковано без розривів рядків):", - "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Щоб підтвердити свій веб-сайт, збережіть наведений нижче вміст у кореневій веб-сторінці за адресою '.well-known/CloudIdVerificationCode.txt' (переконайтеся, що повний текст розміщено в один рядок):", - "%1$s changed your password on %2$s." : "%1$s змінив ваш пароль для сервера %2$s.", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Щоб підтвердити свій веб-сайт, збережіть наведений нижче вміст у корені вебсервера: '.well-known/CloudIdVerificationCode.txt' (переконайтеся, що повний текст розміщено в один рядок):", + "%1$s changed your password on %2$s." : "%1$s змінив ваш пароль у хмарі %2$s.", "Your password on %s was changed." : "Ваш пароль на сервері %s був змінений.", "Your password on %s was reset by an administrator." : "Ваш пароль на сервері %s був скинутий адміністратором", "Your password on %s was reset." : "Ваш пароль на %s перевстановлено.", @@ -163,25 +163,25 @@ OC.L10N.register( "Remove" : "Вилучити", "Disable" : "Вимкнути", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Цій програмі не призначено мінімальної версії Nextcloud. Це буде помилка в майбутньому.", - "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Цьому додатку не призначено максимальну версію Nextcloud. Це буде помилка в майбутньому.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Для цього застосунку не визначено найвищу версію Nextcloud. Це може викликати помилку в майбутньому.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Цей застосунок не буде встановлено, оскільки такі залежності неможливо виконати:", "View in store" : "Переглянути у крамниці застосунків", "Visit website" : "Перейти на вебсайт", "Report a bug" : "Повідомити про помилку", "User documentation" : "Користувацька документація", "Admin documentation" : "Документація адміністратора", - "Developer documentation" : "Документація для розробників", + "Developer documentation" : "Документація з розробки", "This app is supported via your current Nextcloud subscription." : "Підтримка застосунку через вашу поточну передплату Nextcloud.", "Supported" : "Підтримано", "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Пропоновані програми розробляються спільнотою та в її рамках. Вони пропонують центральну функціональність і готові до виробничого використання.", "Featured" : "Функціональні", "Update to {update}" : "Оновити до {update}", - "All apps are up-to-date." : "Усі додатки оновлені.", + "All apps are up-to-date." : "Усі застосунки оновлено", "Results from other categories" : "Результати з інших категорій", "No apps found for your version" : "Відсутні застосунки для вашої версії", "Disable all" : "Вимкнути все", "Enable all" : "Увімкнути все", - "_%n app has an update available_::_%n apps have an update available_" : ["Для %n застосунків доступне оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення"], + "_%n app has an update available_::_%n apps have an update available_" : ["Для %n застосунку доступне оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення"], "_Update_::_Update all_" : ["Оновити","Оновити все","Оновити все","Оновити все"], "Marked for remote wipe" : "Позначено для віддаленого стирання", "Device settings" : "Налаштування пристрою", @@ -421,7 +421,7 @@ OC.L10N.register( "Hide" : "Сховати", "Download and enable" : "Завантажити та увімкнути", "Enable untested app" : "Увімкнути непротестований застосунок", - "The app will be downloaded from the App Store" : "Додаток буде завантажено з App Store", + "The app will be downloaded from the App Store" : "Застосунок буде завантажено з App Store", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Відсутня інформація щодо підтримки цього застосунку вашою версією Nextcloud. Ви зможете встановити цей застосунок, проте він може працювати не так, як ви очікуєте.", "Never" : "Ніколи", "An error occurred during the request. Unable to proceed." : "Під час запиту сталася помилка. Неможливо продовжити.", @@ -459,7 +459,7 @@ OC.L10N.register( "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ще раз перевірте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">посібники зі встановлення ↗</a> та перевірте, чи немає помилок чи попереджень у <a href=\"%2$s\">журналі</a>.", "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Перевірте безпеку вашого Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">скануванням безпеки ↗</a>.", "Version" : "Версія", - "You need to enable the File sharing App." : "Потрібно ввімкнути додаток для обміну файлами.", + "You need to enable the File sharing App." : "Потрібно увімкнути застосунок для обміну файлами.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.", "Allow apps to use the Share API" : "Дозволити застосункам використовувати API спільного доступу", "Set default expiration date for shares" : "Установіть термін дії акцій за умовчанням", @@ -508,7 +508,7 @@ OC.L10N.register( "Backend doesn't support password change, but the user's encryption key was updated." : "Бекенд не підтримує зміну пароля, але ключ шифрування користувача був оновлений.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Не вдалося визначити, чи TLS-версія cURL застаріла, оскільки сталася помилка під час запиту HTTPS до https://nextcloud.com. Будь ласка, перевірте файл журналу nextcloud для отримання додаткової інформації.", "You need to set your user email before being able to send test emails." : "Перед надсиланням тестових листів ви повинні вказати свою email адресу.", - "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Відкликання цього маркера може запобігти видаленню вашого пристрою, якщо він ще не розпочав очищення.", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Відкликання цього токена може запобігти стиранню даних на вашому пристрої, якщо процес стирання ще не було розпочато.", "Set as primary mail" : "Встановити як основну пошту", "Change privacy level of email" : "Змінити рівень конфіденційності електронної пошти", "All languages" : "Всі мови", diff --git a/apps/settings/l10n/uk.json b/apps/settings/l10n/uk.json index bf5ba8d83ab..e1b191fa330 100644 --- a/apps/settings/l10n/uk.json +++ b/apps/settings/l10n/uk.json @@ -33,12 +33,12 @@ "You changed your password" : "Ви змінили свій пароль", "Your password was reset by an administrator" : "Ваш пароль був скинутий адміністратором", "Your password was reset" : "Ваш пароль скинуто", - "{actor} changed your email address" : "{actor} змінив вашу email адресу", + "{actor} changed your email address" : "{actor} змінив адресу вашої ел.пошти", "You changed your email address" : "Ви змінили вашу email адресу", "Your email address was changed by an administrator" : "Ваша email адреса змінена адміністратором", "You created app password \"{token}\"" : "Ви створили пароль програми \"{token}\"", "An administrator created app password \"{token}\"" : "Адміністратор створив пароль програми \"{token}\"", - "You deleted app password \"{token}\"" : "Ви видалили пароль програми \"{token}\"", + "You deleted app password \"{token}\"" : "Ви вилучили пароль застосунку \"{token}\"", "You renamed app password \"{token}\" to \"{newToken}\"" : "Ви перейменували пароль програми \"{token}\" на \"{newToken}\"", "You granted filesystem access to app password \"{token}\"" : "Ви надали доступ до файлової системи паролю програми \"{token}\"", "You revoked filesystem access from app password \"{token}\"" : "Ви скасували доступ до файлової системи з паролем програми \"{token}\"", @@ -48,7 +48,7 @@ "Remote wipe was started on %1$s" : "Розпочато віддалене стирання на %1$s", "Remote wipe has finished on %1$s" : "Віддалене стирання на %1$s завершено", "Your <strong>password</strong> or <strong>email</strong> was modified" : "Ваш <strong>пароль</strong> чи <strong>електронна пошта</strong> були змінені", - "Could not remove app." : "Не вдалося видалити додаток.", + "Could not remove app." : "Не вдалося вилучити застосунок.", "Could not update app." : "Не вдалося оновити програму.", "Wrong password" : "Неправильний пароль", "Unable to change personal password" : "Неможливо змінити особистий пароль", @@ -87,8 +87,8 @@ "Unable to set invalid website" : "Не вдалося встановити недійсний веб-сайт", "Some account data was invalid" : "Деякі дані облікового запису недійсні", "In order to verify your Twitter account, post the following tweet on Twitter (please make sure to post it without any line breaks):" : "Щоб підтвердити свій обліковий запис Twitter, опублікуйте наступний твіт у Twitter (переконайтеся, що опубліковано без розривів рядків):", - "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Щоб підтвердити свій веб-сайт, збережіть наведений нижче вміст у кореневій веб-сторінці за адресою '.well-known/CloudIdVerificationCode.txt' (переконайтеся, що повний текст розміщено в один рядок):", - "%1$s changed your password on %2$s." : "%1$s змінив ваш пароль для сервера %2$s.", + "In order to verify your Website, store the following content in your web-root at '.well-known/CloudIdVerificationCode.txt' (please make sure that the complete text is in one line):" : "Щоб підтвердити свій веб-сайт, збережіть наведений нижче вміст у корені вебсервера: '.well-known/CloudIdVerificationCode.txt' (переконайтеся, що повний текст розміщено в один рядок):", + "%1$s changed your password on %2$s." : "%1$s змінив ваш пароль у хмарі %2$s.", "Your password on %s was changed." : "Ваш пароль на сервері %s був змінений.", "Your password on %s was reset by an administrator." : "Ваш пароль на сервері %s був скинутий адміністратором", "Your password on %s was reset." : "Ваш пароль на %s перевстановлено.", @@ -161,25 +161,25 @@ "Remove" : "Вилучити", "Disable" : "Вимкнути", "This app has no minimum Nextcloud version assigned. This will be an error in the future." : "Цій програмі не призначено мінімальної версії Nextcloud. Це буде помилка в майбутньому.", - "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Цьому додатку не призначено максимальну версію Nextcloud. Це буде помилка в майбутньому.", + "This app has no maximum Nextcloud version assigned. This will be an error in the future." : "Для цього застосунку не визначено найвищу версію Nextcloud. Це може викликати помилку в майбутньому.", "This app cannot be installed because the following dependencies are not fulfilled:" : "Цей застосунок не буде встановлено, оскільки такі залежності неможливо виконати:", "View in store" : "Переглянути у крамниці застосунків", "Visit website" : "Перейти на вебсайт", "Report a bug" : "Повідомити про помилку", "User documentation" : "Користувацька документація", "Admin documentation" : "Документація адміністратора", - "Developer documentation" : "Документація для розробників", + "Developer documentation" : "Документація з розробки", "This app is supported via your current Nextcloud subscription." : "Підтримка застосунку через вашу поточну передплату Nextcloud.", "Supported" : "Підтримано", "Featured apps are developed by and within the community. They offer central functionality and are ready for production use." : "Пропоновані програми розробляються спільнотою та в її рамках. Вони пропонують центральну функціональність і готові до виробничого використання.", "Featured" : "Функціональні", "Update to {update}" : "Оновити до {update}", - "All apps are up-to-date." : "Усі додатки оновлені.", + "All apps are up-to-date." : "Усі застосунки оновлено", "Results from other categories" : "Результати з інших категорій", "No apps found for your version" : "Відсутні застосунки для вашої версії", "Disable all" : "Вимкнути все", "Enable all" : "Увімкнути все", - "_%n app has an update available_::_%n apps have an update available_" : ["Для %n застосунків доступне оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення"], + "_%n app has an update available_::_%n apps have an update available_" : ["Для %n застосунку доступне оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення","Для %n застосунків доступні оновлення"], "_Update_::_Update all_" : ["Оновити","Оновити все","Оновити все","Оновити все"], "Marked for remote wipe" : "Позначено для віддаленого стирання", "Device settings" : "Налаштування пристрою", @@ -419,7 +419,7 @@ "Hide" : "Сховати", "Download and enable" : "Завантажити та увімкнути", "Enable untested app" : "Увімкнути непротестований застосунок", - "The app will be downloaded from the App Store" : "Додаток буде завантажено з App Store", + "The app will be downloaded from the App Store" : "Застосунок буде завантажено з App Store", "This app is not marked as compatible with your Nextcloud version. If you continue you will still be able to install the app. Note that the app might not work as expected." : "Відсутня інформація щодо підтримки цього застосунку вашою версією Nextcloud. Ви зможете встановити цей застосунок, проте він може працювати не так, як ви очікуєте.", "Never" : "Ніколи", "An error occurred during the request. Unable to proceed." : "Під час запиту сталася помилка. Неможливо продовжити.", @@ -457,7 +457,7 @@ "Please double check the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">installation guides ↗</a>, and check for any errors or warnings in the <a href=\"%2$s\">log</a>." : "Ще раз перевірте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%1$s\">посібники зі встановлення ↗</a> та перевірте, чи немає помилок чи попереджень у <a href=\"%2$s\">журналі</a>.", "Check the security of your Nextcloud over <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">our security scan ↗</a>." : "Перевірте безпеку вашого Nextcloud <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">скануванням безпеки ↗</a>.", "Version" : "Версія", - "You need to enable the File sharing App." : "Потрібно ввімкнути додаток для обміну файлами.", + "You need to enable the File sharing App." : "Потрібно увімкнути застосунок для обміну файлами.", "As admin you can fine-tune the sharing behavior. Please see the documentation for more information." : "Як адміністратор ви можете точно налаштувати поведінку спільного використання. Будь ласка, перегляньте документацію для отримання додаткової інформації.", "Allow apps to use the Share API" : "Дозволити застосункам використовувати API спільного доступу", "Set default expiration date for shares" : "Установіть термін дії акцій за умовчанням", @@ -506,7 +506,7 @@ "Backend doesn't support password change, but the user's encryption key was updated." : "Бекенд не підтримує зміну пароля, але ключ шифрування користувача був оновлений.", "Could not determine if TLS version of cURL is outdated or not because an error happened during the HTTPS request against https://nextcloud.com. Please check the nextcloud log file for more details." : "Не вдалося визначити, чи TLS-версія cURL застаріла, оскільки сталася помилка під час запиту HTTPS до https://nextcloud.com. Будь ласка, перевірте файл журналу nextcloud для отримання додаткової інформації.", "You need to set your user email before being able to send test emails." : "Перед надсиланням тестових листів ви повинні вказати свою email адресу.", - "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Відкликання цього маркера може запобігти видаленню вашого пристрою, якщо він ще не розпочав очищення.", + "Revoking this token might prevent the wiping of your device if it hasn't started the wipe yet." : "Відкликання цього токена може запобігти стиранню даних на вашому пристрої, якщо процес стирання ще не було розпочато.", "Set as primary mail" : "Встановити як основну пошту", "Change privacy level of email" : "Змінити рівень конфіденційності електронної пошти", "All languages" : "Всі мови", diff --git a/apps/sharebymail/l10n/el.js b/apps/sharebymail/l10n/el.js index b900169d54b..6e9d65691ad 100644 --- a/apps/sharebymail/l10n/el.js +++ b/apps/sharebymail/l10n/el.js @@ -39,6 +39,7 @@ OC.L10N.register( "Password to access »%1$s« shared to you by %2$s" : "Συνθηματικό για πρόσβαση στο »%1$s« διαμοιράστηκε μαζί σας μέσω %2$s", "Password to access »%s«" : "Συνθηματικό για πρόσβαση στο »%s«", "It is protected with the following password:" : "Προστατευμένο με το συνθηματικό:", + "This password will expire at %s" : "Αυτός ο κωδικός πρόσβασης θα λήξει την %s", "%1$s shared »%2$s« with you and wants to add:" : "Ο %1$s διαμοιράστηκε το »%2$s« με εσάς και θέλει να προσθέσει:", "%1$s shared »%2$s« with you and wants to add" : "Ο %1$s διαμοιράστηκε το »%2$s« με εσάς και θέλει να προσθέσει", "»%s« added a note to a file shared with you" : "Ο »%s« πρόσθεσε μια σημείωση στο κοινόχρηστο αρχείο", @@ -50,6 +51,7 @@ OC.L10N.register( "Share provider which allows you to share files by mail" : "Πάροχος διαμοιρασμού που σας επιτρέπει να διαμοιράζεστε αρχεία μέσω mail", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Να επιτρέπεται οι χρήστες να στέλνουν εξατομικευμένο σύνδεσμο σε ένα αρχείο ή φάκελο μέσω mail.", "Send password by mail" : "Αποστολή συνθηματικου με ηλεκτρονική αλληλογραφία", - "Reply to initiator" : "Απάντηση στον αποστολέα" + "Reply to initiator" : "Απάντηση στον αποστολέα", + "Unable to update share by mail config" : "Αδυναμία ενημέρωσης των ρυθμίσεων κοινής χρήσης μέσω mail" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/sharebymail/l10n/el.json b/apps/sharebymail/l10n/el.json index 53fa1cf37f9..5cba01e6db0 100644 --- a/apps/sharebymail/l10n/el.json +++ b/apps/sharebymail/l10n/el.json @@ -37,6 +37,7 @@ "Password to access »%1$s« shared to you by %2$s" : "Συνθηματικό για πρόσβαση στο »%1$s« διαμοιράστηκε μαζί σας μέσω %2$s", "Password to access »%s«" : "Συνθηματικό για πρόσβαση στο »%s«", "It is protected with the following password:" : "Προστατευμένο με το συνθηματικό:", + "This password will expire at %s" : "Αυτός ο κωδικός πρόσβασης θα λήξει την %s", "%1$s shared »%2$s« with you and wants to add:" : "Ο %1$s διαμοιράστηκε το »%2$s« με εσάς και θέλει να προσθέσει:", "%1$s shared »%2$s« with you and wants to add" : "Ο %1$s διαμοιράστηκε το »%2$s« με εσάς και θέλει να προσθέσει", "»%s« added a note to a file shared with you" : "Ο »%s« πρόσθεσε μια σημείωση στο κοινόχρηστο αρχείο", @@ -48,6 +49,7 @@ "Share provider which allows you to share files by mail" : "Πάροχος διαμοιρασμού που σας επιτρέπει να διαμοιράζεστε αρχεία μέσω mail", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Να επιτρέπεται οι χρήστες να στέλνουν εξατομικευμένο σύνδεσμο σε ένα αρχείο ή φάκελο μέσω mail.", "Send password by mail" : "Αποστολή συνθηματικου με ηλεκτρονική αλληλογραφία", - "Reply to initiator" : "Απάντηση στον αποστολέα" + "Reply to initiator" : "Απάντηση στον αποστολέα", + "Unable to update share by mail config" : "Αδυναμία ενημέρωσης των ρυθμίσεων κοινής χρήσης μέσω mail" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/sharebymail/l10n/fr.js b/apps/sharebymail/l10n/fr.js index af2875465bf..f56ab29d496 100644 --- a/apps/sharebymail/l10n/fr.js +++ b/apps/sharebymail/l10n/fr.js @@ -9,17 +9,17 @@ OC.L10N.register( "Unshared from {email}" : "Partage supprimé de {email}", "Unshared from %1$s by %2$s" : "Partage supprimé de %1$s par %2$s", "Unshared from {email} by {actor}" : "Partage supprimé de {email} par {actor}", - "Password for mail share sent to %1$s" : "Le mot de passe pour le partage par email a été envoyé à %1$s", - "Password for mail share sent to {email}" : "Le mot de passe pour le partage par email a été envoyé à {email}", - "Password for mail share sent to you" : "Le mot de passe pour le partage par email vous a été envoyé", - "You shared %1$s with %2$s by mail" : "Vous avez partagé %1$s avec %2$s par email", - "You shared {file} with {email} by mail" : "Vous avez partagé {file} avec {email} par email", - "%3$s shared %1$s with %2$s by mail" : "%3$s a partagé %1$s avec %2$s par email", - "{actor} shared {file} with {email} by mail" : "{actor} a partagé {file} avec {email} par email", - "You unshared %1$s from %2$s by mail" : "Vous avez supprimé le partage %1$s de %2$s par email", - "You unshared {file} from {email} by mail" : "Vous avez supprimé le partage de {file} depuis {email} par email", - "%3$s unshared %1$s from %2$s by mail" : "Fin de partage par %3$s de %1$s depuis %2$s par email", - "{actor} unshared {file} from {email} by mail" : "{actor} a supprimé le partage de {file} depuis {email} par email", + "Password for mail share sent to %1$s" : "Le mot de passe pour le partage par e-mail a été envoyé à %1$s", + "Password for mail share sent to {email}" : "Le mot de passe pour le partage par e-mail a été envoyé à {email}", + "Password for mail share sent to you" : "Le mot de passe pour le partage par e-mail vous a été envoyé", + "You shared %1$s with %2$s by mail" : "Vous avez partagé %1$s avec %2$s par e-mail", + "You shared {file} with {email} by mail" : "Vous avez partagé {file} avec {email} par e-mail", + "%3$s shared %1$s with %2$s by mail" : "%3$s a partagé %1$s avec %2$s par e-mail", + "{actor} shared {file} with {email} by mail" : "{actor} a partagé {file} avec {email} par e-mail", + "You unshared %1$s from %2$s by mail" : "Vous avez supprimé le partage %1$s de %2$s par e-mail", + "You unshared {file} from {email} by mail" : "Vous avez supprimé le partage de {file} depuis {email} par e-mail", + "%3$s unshared %1$s from %2$s by mail" : "Fin de partage par %3$s de %1$s depuis %2$s par e-mail", + "{actor} unshared {file} from {email} by mail" : "{actor} a supprimé le partage de {file} depuis {email} par e-mail", "Password to access %1$s was sent to %2s" : "Le mot de passe pour accèder à %1$s a été envoyé à %2s", "Password to access {file} was sent to {email}" : "Le mot de passe pour accèder à {file} a été envoyé à {email}", "Password to access %1$s was sent to you" : "Le mot de passe pour accèder à %1$s vous a été envoyé", @@ -27,7 +27,7 @@ OC.L10N.register( "Share by mail" : "Partage par e-mail", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué, parce que cet élément est déjà partagé avec l'utilisateur %2$s", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nous ne pouvons pas vous envoyer le mot de passe généré automatiquement. Merci de définir une adresse e-mail valide dans vos paramètres personnels et essayez à nouveau.", - "Failed to send share by email. Got an invalid email address" : "Échec lors de l'envoi du partage par email. L'adresse email est invalide", + "Failed to send share by email. Got an invalid email address" : "Échec lors de l'envoi du partage par e-mail. L'adresse e-mail est invalide", "Failed to send share by email" : "Échec lors de l'envoi du partage par e-mail", "%1$s shared »%2$s« with you" : "%1$s a partagé « %2$s » avec vous", "%1$s shared »%2$s« with you." : "%1$s a partagé « %2$s » avec vous.", @@ -52,6 +52,6 @@ OC.L10N.register( "Allows users to share a personalized link to a file or folder by putting in an email address." : "Autoriser les utilisateurs de partager un lien personnalisé vers un fichier ou un dossier en renseignant une adresse e-mail.", "Send password by mail" : "Envoyer le mot de passe par e-mail", "Reply to initiator" : "Répondre à l'initiateur", - "Unable to update share by mail config" : "Impossible de mettre à jour la configuration du partage par mail" + "Unable to update share by mail config" : "Impossible de mettre à jour la configuration du partage par e-mail" }, "nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;"); diff --git a/apps/sharebymail/l10n/fr.json b/apps/sharebymail/l10n/fr.json index 0e6cffce185..d4807c797b2 100644 --- a/apps/sharebymail/l10n/fr.json +++ b/apps/sharebymail/l10n/fr.json @@ -7,17 +7,17 @@ "Unshared from {email}" : "Partage supprimé de {email}", "Unshared from %1$s by %2$s" : "Partage supprimé de %1$s par %2$s", "Unshared from {email} by {actor}" : "Partage supprimé de {email} par {actor}", - "Password for mail share sent to %1$s" : "Le mot de passe pour le partage par email a été envoyé à %1$s", - "Password for mail share sent to {email}" : "Le mot de passe pour le partage par email a été envoyé à {email}", - "Password for mail share sent to you" : "Le mot de passe pour le partage par email vous a été envoyé", - "You shared %1$s with %2$s by mail" : "Vous avez partagé %1$s avec %2$s par email", - "You shared {file} with {email} by mail" : "Vous avez partagé {file} avec {email} par email", - "%3$s shared %1$s with %2$s by mail" : "%3$s a partagé %1$s avec %2$s par email", - "{actor} shared {file} with {email} by mail" : "{actor} a partagé {file} avec {email} par email", - "You unshared %1$s from %2$s by mail" : "Vous avez supprimé le partage %1$s de %2$s par email", - "You unshared {file} from {email} by mail" : "Vous avez supprimé le partage de {file} depuis {email} par email", - "%3$s unshared %1$s from %2$s by mail" : "Fin de partage par %3$s de %1$s depuis %2$s par email", - "{actor} unshared {file} from {email} by mail" : "{actor} a supprimé le partage de {file} depuis {email} par email", + "Password for mail share sent to %1$s" : "Le mot de passe pour le partage par e-mail a été envoyé à %1$s", + "Password for mail share sent to {email}" : "Le mot de passe pour le partage par e-mail a été envoyé à {email}", + "Password for mail share sent to you" : "Le mot de passe pour le partage par e-mail vous a été envoyé", + "You shared %1$s with %2$s by mail" : "Vous avez partagé %1$s avec %2$s par e-mail", + "You shared {file} with {email} by mail" : "Vous avez partagé {file} avec {email} par e-mail", + "%3$s shared %1$s with %2$s by mail" : "%3$s a partagé %1$s avec %2$s par e-mail", + "{actor} shared {file} with {email} by mail" : "{actor} a partagé {file} avec {email} par e-mail", + "You unshared %1$s from %2$s by mail" : "Vous avez supprimé le partage %1$s de %2$s par e-mail", + "You unshared {file} from {email} by mail" : "Vous avez supprimé le partage de {file} depuis {email} par e-mail", + "%3$s unshared %1$s from %2$s by mail" : "Fin de partage par %3$s de %1$s depuis %2$s par e-mail", + "{actor} unshared {file} from {email} by mail" : "{actor} a supprimé le partage de {file} depuis {email} par e-mail", "Password to access %1$s was sent to %2s" : "Le mot de passe pour accèder à %1$s a été envoyé à %2s", "Password to access {file} was sent to {email}" : "Le mot de passe pour accèder à {file} a été envoyé à {email}", "Password to access %1$s was sent to you" : "Le mot de passe pour accèder à %1$s vous a été envoyé", @@ -25,7 +25,7 @@ "Share by mail" : "Partage par e-mail", "Sharing %1$s failed, because this item is already shared with user %2$s" : "Le partage de %1$s a échoué, parce que cet élément est déjà partagé avec l'utilisateur %2$s", "We cannot send you the auto-generated password. Please set a valid email address in your personal settings and try again." : "Nous ne pouvons pas vous envoyer le mot de passe généré automatiquement. Merci de définir une adresse e-mail valide dans vos paramètres personnels et essayez à nouveau.", - "Failed to send share by email. Got an invalid email address" : "Échec lors de l'envoi du partage par email. L'adresse email est invalide", + "Failed to send share by email. Got an invalid email address" : "Échec lors de l'envoi du partage par e-mail. L'adresse e-mail est invalide", "Failed to send share by email" : "Échec lors de l'envoi du partage par e-mail", "%1$s shared »%2$s« with you" : "%1$s a partagé « %2$s » avec vous", "%1$s shared »%2$s« with you." : "%1$s a partagé « %2$s » avec vous.", @@ -50,6 +50,6 @@ "Allows users to share a personalized link to a file or folder by putting in an email address." : "Autoriser les utilisateurs de partager un lien personnalisé vers un fichier ou un dossier en renseignant une adresse e-mail.", "Send password by mail" : "Envoyer le mot de passe par e-mail", "Reply to initiator" : "Répondre à l'initiateur", - "Unable to update share by mail config" : "Impossible de mettre à jour la configuration du partage par mail" + "Unable to update share by mail config" : "Impossible de mettre à jour la configuration du partage par e-mail" },"pluralForm" :"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;" }
\ No newline at end of file diff --git a/apps/sharebymail/l10n/sk.js b/apps/sharebymail/l10n/sk.js index 5f35094e94b..f35ccf4b775 100644 --- a/apps/sharebymail/l10n/sk.js +++ b/apps/sharebymail/l10n/sk.js @@ -39,6 +39,7 @@ OC.L10N.register( "Password to access »%1$s« shared to you by %2$s" : "Heslo pre prístup k »%1$s« Vám sprístupnil %2$s", "Password to access »%s«" : "Heslo pre prístup k »%s«", "It is protected with the following password:" : "Je chránené nasledovným heslom:", + "This password will expire at %s" : "Platnosť tohto hesla končí v %s.", "%1$s shared »%2$s« with you and wants to add:" : "%1$s vám sprístupnil »%2$s« s poznámkou:", "%1$s shared »%2$s« with you and wants to add" : "%1$s vám sprístupnil »%2$s« s poznámkou", "»%s« added a note to a file shared with you" : "»%s« pridal poznámku k súboru ktorý s Vami zdieľa", @@ -50,6 +51,7 @@ OC.L10N.register( "Share provider which allows you to share files by mail" : "Poskytovateľ zdieľania umožňuje zdieľať súbory pomocou e-mailu", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Povoľuje používateľom zdieľať personalizovaný odkaz na súbor alebo priečinok zadaním e-mailovej adresy.", "Send password by mail" : "Odoslať heslo e-mailom", - "Reply to initiator" : "Odpovedať iniciátorovi" + "Reply to initiator" : "Odpovedať iniciátorovi", + "Unable to update share by mail config" : "Nepodarila sa aktualizovať konfigurácia zdieľania prostredníctvom e-mailu" }, "nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);"); diff --git a/apps/sharebymail/l10n/sk.json b/apps/sharebymail/l10n/sk.json index 350d377e98f..1cc73056c55 100644 --- a/apps/sharebymail/l10n/sk.json +++ b/apps/sharebymail/l10n/sk.json @@ -37,6 +37,7 @@ "Password to access »%1$s« shared to you by %2$s" : "Heslo pre prístup k »%1$s« Vám sprístupnil %2$s", "Password to access »%s«" : "Heslo pre prístup k »%s«", "It is protected with the following password:" : "Je chránené nasledovným heslom:", + "This password will expire at %s" : "Platnosť tohto hesla končí v %s.", "%1$s shared »%2$s« with you and wants to add:" : "%1$s vám sprístupnil »%2$s« s poznámkou:", "%1$s shared »%2$s« with you and wants to add" : "%1$s vám sprístupnil »%2$s« s poznámkou", "»%s« added a note to a file shared with you" : "»%s« pridal poznámku k súboru ktorý s Vami zdieľa", @@ -48,6 +49,7 @@ "Share provider which allows you to share files by mail" : "Poskytovateľ zdieľania umožňuje zdieľať súbory pomocou e-mailu", "Allows users to share a personalized link to a file or folder by putting in an email address." : "Povoľuje používateľom zdieľať personalizovaný odkaz na súbor alebo priečinok zadaním e-mailovej adresy.", "Send password by mail" : "Odoslať heslo e-mailom", - "Reply to initiator" : "Odpovedať iniciátorovi" + "Reply to initiator" : "Odpovedať iniciátorovi", + "Unable to update share by mail config" : "Nepodarila sa aktualizovať konfigurácia zdieľania prostredníctvom e-mailu" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);" }
\ No newline at end of file diff --git a/apps/sharebymail/l10n/uk.js b/apps/sharebymail/l10n/uk.js index 24b465f89d9..19a8d995ebb 100644 --- a/apps/sharebymail/l10n/uk.js +++ b/apps/sharebymail/l10n/uk.js @@ -18,7 +18,7 @@ OC.L10N.register( "{actor} shared {file} with {email} by mail" : "{actor} поділився {file} з {email} поштою", "You unshared %1$s from %2$s by mail" : "Ви скасували доступ %1$s до %2$s поштою", "You unshared {file} from {email} by mail" : "Ви скасували доступ до {file} з {email} поштою", - "%3$s unshared %1$s from %2$s by mail" : "%3$s видалено %1$s %2$s поштою", + "%3$s unshared %1$s from %2$s by mail" : "%3$s вилучив зі спільного доступу %1$s з %2$s поштою", "{actor} unshared {file} from {email} by mail" : "{actor} скасував доступ до {file} з {email} поштою", "Password to access %1$s was sent to %2s" : "Пароль для доступу %1$s надіслано %2s", "Password to access {file} was sent to {email}" : "Пароль для доступу до {file} надіслано на адресу {email}", @@ -49,7 +49,7 @@ OC.L10N.register( "You can choose a different password at any time in the share dialog." : "Ви можете будь-коли вибрати інший пароль у діалоговому вікні спільного доступу.", "Could not find share" : "Не вдалося знайти спільний доступ", "Share provider which allows you to share files by mail" : "Провайдер спільного доступу, який дозволяє обмінюватися файлами поштою", - "Allows users to share a personalized link to a file or folder by putting in an email address." : "Дозволяє користувачам ділитися персональним посиланням на файл або папку, вказавши адресу електронної пошти.", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Дозволяє користувачам ділитися персоналізованими посиланням на файл або каталог через електронну пошту.", "Send password by mail" : "Надіслати пароль поштою", "Reply to initiator" : "Відповідь ініціатору", "Unable to update share by mail config" : "Не вдається оновити конфігурацію спільного доступу за допомогою пошти" diff --git a/apps/sharebymail/l10n/uk.json b/apps/sharebymail/l10n/uk.json index 46d702c0e6f..2a6b6481b7a 100644 --- a/apps/sharebymail/l10n/uk.json +++ b/apps/sharebymail/l10n/uk.json @@ -16,7 +16,7 @@ "{actor} shared {file} with {email} by mail" : "{actor} поділився {file} з {email} поштою", "You unshared %1$s from %2$s by mail" : "Ви скасували доступ %1$s до %2$s поштою", "You unshared {file} from {email} by mail" : "Ви скасували доступ до {file} з {email} поштою", - "%3$s unshared %1$s from %2$s by mail" : "%3$s видалено %1$s %2$s поштою", + "%3$s unshared %1$s from %2$s by mail" : "%3$s вилучив зі спільного доступу %1$s з %2$s поштою", "{actor} unshared {file} from {email} by mail" : "{actor} скасував доступ до {file} з {email} поштою", "Password to access %1$s was sent to %2s" : "Пароль для доступу %1$s надіслано %2s", "Password to access {file} was sent to {email}" : "Пароль для доступу до {file} надіслано на адресу {email}", @@ -47,7 +47,7 @@ "You can choose a different password at any time in the share dialog." : "Ви можете будь-коли вибрати інший пароль у діалоговому вікні спільного доступу.", "Could not find share" : "Не вдалося знайти спільний доступ", "Share provider which allows you to share files by mail" : "Провайдер спільного доступу, який дозволяє обмінюватися файлами поштою", - "Allows users to share a personalized link to a file or folder by putting in an email address." : "Дозволяє користувачам ділитися персональним посиланням на файл або папку, вказавши адресу електронної пошти.", + "Allows users to share a personalized link to a file or folder by putting in an email address." : "Дозволяє користувачам ділитися персоналізованими посиланням на файл або каталог через електронну пошту.", "Send password by mail" : "Надіслати пароль поштою", "Reply to initiator" : "Відповідь ініціатору", "Unable to update share by mail config" : "Не вдається оновити конфігурацію спільного доступу за допомогою пошти" diff --git a/apps/systemtags/l10n/el.js b/apps/systemtags/l10n/el.js index 935e15d8ac9..dccf47881e2 100644 --- a/apps/systemtags/l10n/el.js +++ b/apps/systemtags/l10n/el.js @@ -43,6 +43,8 @@ OC.L10N.register( "%s (invisible)" : "%s (αόρατο)", "<strong>System tags</strong> for a file have been modified" : "<strong>Οι ετικέτες συστήματος</strong> για ένα αρχείο έχουν τροποποιηθεί", "Tags" : "Ετικέτες", + "All tagged %s …" : "Όλα με ετικέτα %s …", + "tagged %s" : "με ετικέτα %s", "Collaborative tags" : "Ετικέτες συνεργασίας", "Collaborative tagging functionality which shares tags among users." : "Λειτουργία προσθήκης ετικετών με συνεργασία που μοιράζεται ετικέτες μεταξύ χρηστών.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Λειτουργία προσθήκης ετικετών με συνεργασία που μοιράζεται ετικέτες μεταξύ χρηστών. Χρήσιμο για ομάδες.\n\t(Εάν είστε πάροχος με πολλαπλές εγκαταστάσεις, συνιστάται να απενεργοποιήσετε αυτήν την εφαρμογή καθώς οι ετικέτες μοιράζονται.)", diff --git a/apps/systemtags/l10n/el.json b/apps/systemtags/l10n/el.json index 4b1b6c95ac2..0cf198fc4b2 100644 --- a/apps/systemtags/l10n/el.json +++ b/apps/systemtags/l10n/el.json @@ -41,6 +41,8 @@ "%s (invisible)" : "%s (αόρατο)", "<strong>System tags</strong> for a file have been modified" : "<strong>Οι ετικέτες συστήματος</strong> για ένα αρχείο έχουν τροποποιηθεί", "Tags" : "Ετικέτες", + "All tagged %s …" : "Όλα με ετικέτα %s …", + "tagged %s" : "με ετικέτα %s", "Collaborative tags" : "Ετικέτες συνεργασίας", "Collaborative tagging functionality which shares tags among users." : "Λειτουργία προσθήκης ετικετών με συνεργασία που μοιράζεται ετικέτες μεταξύ χρηστών.", "Collaborative tagging functionality which shares tags among users. Great for teams.\n\t(If you are a provider with a multi-tenancy installation, it is advised to deactivate this app as tags are shared.)" : "Λειτουργία προσθήκης ετικετών με συνεργασία που μοιράζεται ετικέτες μεταξύ χρηστών. Χρήσιμο για ομάδες.\n\t(Εάν είστε πάροχος με πολλαπλές εγκαταστάσεις, συνιστάται να απενεργοποιήσετε αυτήν την εφαρμογή καθώς οι ετικέτες μοιράζονται.)", diff --git a/apps/systemtags/l10n/uk.js b/apps/systemtags/l10n/uk.js index d8e7b14c4eb..97b63820472 100644 --- a/apps/systemtags/l10n/uk.js +++ b/apps/systemtags/l10n/uk.js @@ -10,19 +10,19 @@ OC.L10N.register( "Added system tag %1$s" : "Додано системний тег %1$s", "%1$s added system tag %2$s" : "%1$s доданий системний тег %2$s", "{actor} added system tag {systemtag}" : "{actor} додав системний тег {systemtag}", - "System tag %1$s removed by the system" : "Системний тег %1$s видалено системою", - "Removed system tag {systemtag}" : "Видалено системний тег {systemtag}", - "Removed system tag %1$s" : "Видалено системний тег %1$s", - "%1$s removed system tag %2$s" : "%1$s видалений системний тег %2$s", - "{actor} removed system tag {systemtag}" : "{actor} видалив системний тег {systemtag}", + "System tag %1$s removed by the system" : "Системну мітку %1$s вилучено системою", + "Removed system tag {systemtag}" : "Вилучено системну мітку {systemtag}", + "Removed system tag %1$s" : "Вилучено системну мітку %1$s", + "%1$s removed system tag %2$s" : "%1$s вилучив системну мітку %2$s", + "{actor} removed system tag {systemtag}" : "{actor} вилучив системну мітку {systemtag}", "You created system tag %1$s" : "Ви створили системний тег %1$s", "You created system tag {systemtag}" : "Ви створили системний тег {systemtag}", "%1$s created system tag %2$s" : "%1$s створений системний тег %2$s ", "{actor} created system tag {systemtag}" : "{actor} створив системний тег {systemtag}", - "You deleted system tag %1$s" : "Ви видалили системний тег %1$s", - "You deleted system tag {systemtag}" : "Ви видалили системний тег {systemtag}", - "%1$s deleted system tag %2$s" : "%1$s видалений системний тег %2$s", - "{actor} deleted system tag {systemtag}" : "{actor} видалив системний тег {systemtag}", + "You deleted system tag %1$s" : "Ви вилучили системну мітку %1$s", + "You deleted system tag {systemtag}" : "Ви вилучили системний тег {systemtag}", + "%1$s deleted system tag %2$s" : "%1$s вилучена системна мітка %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} вилучив системну мітку {systemtag}", "You updated system tag %2$s to %1$s" : "Ви оновили системний тег %2$s до %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ви оновили системний тег {oldsystemtag} на {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s оновлено системний тег %3$s до %2$s", @@ -33,12 +33,12 @@ OC.L10N.register( "You added system tag {systemtag} to {file}" : "Ви додали системний тег {systemtag} до {file}", "%1$s added system tag %3$s to %2$s" : "%1$s додано системний тег %3$s до %2$s", "{actor} added system tag {systemtag} to {file}" : "{actor} додав системний тег {systemtag} до {file}", - "System tag %2$s was removed from %1$s by the system" : "Системний тег %2$s видалено з %1$s системою", - "System tag {systemtag} was removed from {file} by the system" : "Системний тег {systemtag} видалено з {file} системою", - "You removed system tag %2$s from %1$s" : "Ви видалили системний тег %2$s із %1$s", - "You removed system tag {systemtag} from {file}" : "Ви видалили системний тег {systemtag} із {file}", - "%1$s removed system tag %3$s from %2$s" : "%1$s видалено системний тег %3$s з %2$s", - "{actor} removed system tag {systemtag} from {file}" : "{actor} видалив системний тег {systemtag} із {file}", + "System tag %2$s was removed from %1$s by the system" : "Системну мітку %2$s вилучено системою з %1$s", + "System tag {systemtag} was removed from {file} by the system" : "Системну мітку {systemtag} вилучено системою з файлу {file}", + "You removed system tag %2$s from %1$s" : "Ви вилучили системну мітку %2$s із %1$s", + "You removed system tag {systemtag} from {file}" : "Ви вилучили системну мітку {systemtag} із {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s вилучено системну мітку %3$s з %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} вилучив системну мітку {systemtag} із {file}", "%s (restricted)" : "%s(обмежено)", "%s (invisible)" : "%s (невидимий)", "<strong>System tags</strong> for a file have been modified" : "<strong>системні позначки</strong>для файлу було змінено", @@ -62,7 +62,7 @@ OC.L10N.register( "Delete" : "Вилучити", "Reset" : "Скидання", "No files in here" : "Тут немає файлів", - "No entries found in this folder" : "В цій теці нічого немає", + "No entries found in this folder" : "В цьому каталозі нічого немає", "Size" : "Розмір", "Modified" : "Змінено" }, diff --git a/apps/systemtags/l10n/uk.json b/apps/systemtags/l10n/uk.json index 0d7ed1b638d..77b4f4417e7 100644 --- a/apps/systemtags/l10n/uk.json +++ b/apps/systemtags/l10n/uk.json @@ -8,19 +8,19 @@ "Added system tag %1$s" : "Додано системний тег %1$s", "%1$s added system tag %2$s" : "%1$s доданий системний тег %2$s", "{actor} added system tag {systemtag}" : "{actor} додав системний тег {systemtag}", - "System tag %1$s removed by the system" : "Системний тег %1$s видалено системою", - "Removed system tag {systemtag}" : "Видалено системний тег {systemtag}", - "Removed system tag %1$s" : "Видалено системний тег %1$s", - "%1$s removed system tag %2$s" : "%1$s видалений системний тег %2$s", - "{actor} removed system tag {systemtag}" : "{actor} видалив системний тег {systemtag}", + "System tag %1$s removed by the system" : "Системну мітку %1$s вилучено системою", + "Removed system tag {systemtag}" : "Вилучено системну мітку {systemtag}", + "Removed system tag %1$s" : "Вилучено системну мітку %1$s", + "%1$s removed system tag %2$s" : "%1$s вилучив системну мітку %2$s", + "{actor} removed system tag {systemtag}" : "{actor} вилучив системну мітку {systemtag}", "You created system tag %1$s" : "Ви створили системний тег %1$s", "You created system tag {systemtag}" : "Ви створили системний тег {systemtag}", "%1$s created system tag %2$s" : "%1$s створений системний тег %2$s ", "{actor} created system tag {systemtag}" : "{actor} створив системний тег {systemtag}", - "You deleted system tag %1$s" : "Ви видалили системний тег %1$s", - "You deleted system tag {systemtag}" : "Ви видалили системний тег {systemtag}", - "%1$s deleted system tag %2$s" : "%1$s видалений системний тег %2$s", - "{actor} deleted system tag {systemtag}" : "{actor} видалив системний тег {systemtag}", + "You deleted system tag %1$s" : "Ви вилучили системну мітку %1$s", + "You deleted system tag {systemtag}" : "Ви вилучили системний тег {systemtag}", + "%1$s deleted system tag %2$s" : "%1$s вилучена системна мітка %2$s", + "{actor} deleted system tag {systemtag}" : "{actor} вилучив системну мітку {systemtag}", "You updated system tag %2$s to %1$s" : "Ви оновили системний тег %2$s до %1$s", "You updated system tag {oldsystemtag} to {newsystemtag}" : "Ви оновили системний тег {oldsystemtag} на {newsystemtag}", "%1$s updated system tag %3$s to %2$s" : "%1$s оновлено системний тег %3$s до %2$s", @@ -31,12 +31,12 @@ "You added system tag {systemtag} to {file}" : "Ви додали системний тег {systemtag} до {file}", "%1$s added system tag %3$s to %2$s" : "%1$s додано системний тег %3$s до %2$s", "{actor} added system tag {systemtag} to {file}" : "{actor} додав системний тег {systemtag} до {file}", - "System tag %2$s was removed from %1$s by the system" : "Системний тег %2$s видалено з %1$s системою", - "System tag {systemtag} was removed from {file} by the system" : "Системний тег {systemtag} видалено з {file} системою", - "You removed system tag %2$s from %1$s" : "Ви видалили системний тег %2$s із %1$s", - "You removed system tag {systemtag} from {file}" : "Ви видалили системний тег {systemtag} із {file}", - "%1$s removed system tag %3$s from %2$s" : "%1$s видалено системний тег %3$s з %2$s", - "{actor} removed system tag {systemtag} from {file}" : "{actor} видалив системний тег {systemtag} із {file}", + "System tag %2$s was removed from %1$s by the system" : "Системну мітку %2$s вилучено системою з %1$s", + "System tag {systemtag} was removed from {file} by the system" : "Системну мітку {systemtag} вилучено системою з файлу {file}", + "You removed system tag %2$s from %1$s" : "Ви вилучили системну мітку %2$s із %1$s", + "You removed system tag {systemtag} from {file}" : "Ви вилучили системну мітку {systemtag} із {file}", + "%1$s removed system tag %3$s from %2$s" : "%1$s вилучено системну мітку %3$s з %2$s", + "{actor} removed system tag {systemtag} from {file}" : "{actor} вилучив системну мітку {systemtag} із {file}", "%s (restricted)" : "%s(обмежено)", "%s (invisible)" : "%s (невидимий)", "<strong>System tags</strong> for a file have been modified" : "<strong>системні позначки</strong>для файлу було змінено", @@ -60,7 +60,7 @@ "Delete" : "Вилучити", "Reset" : "Скидання", "No files in here" : "Тут немає файлів", - "No entries found in this folder" : "В цій теці нічого немає", + "No entries found in this folder" : "В цьому каталозі нічого немає", "Size" : "Розмір", "Modified" : "Змінено" },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" diff --git a/apps/theming/css/default.css b/apps/theming/css/default.css index e7403ee69cc..19d02a53f9b 100644 --- a/apps/theming/css/default.css +++ b/apps/theming/css/default.css @@ -1,5 +1,6 @@ :root { --color-main-background: #ffffff; + --color-main-background-not-plain: #0082c9; --color-main-background-rgb: 255,255,255; --color-main-background-translucent: rgba(var(--color-main-background-rgb), .97); --color-main-background-blur: rgba(var(--color-main-background-rgb), .8); @@ -53,19 +54,19 @@ --background-invert-if-dark: no; --background-invert-if-bright: invert(100%); --image-main-background: url('/core/img/app-background.jpg'); - --color-primary: #0082c9; + --color-primary: #00639a; --color-primary-text: #ffffff; - --color-primary-hover: #329bd3; - --color-primary-light: #e5f2f9; - --color-primary-light-text: #003450; - --color-primary-light-hover: #dbe7ee; + --color-primary-hover: #3282ae; + --color-primary-light: #e5eff4; + --color-primary-light-text: #00273d; + --color-primary-light-hover: #dbe4e9; --color-primary-text-dark: #ededed; - --color-primary-element: #0082c9; + --color-primary-element: #00639a; --color-primary-element-text: #ffffff; - --color-primary-element-hover: #329bd3; - --color-primary-element-light: #e5f2f9; - --color-primary-element-light-text: #003450; - --color-primary-element-light-hover: #dbe7ee; + --color-primary-element-hover: #3282ae; + --color-primary-element-light: #e5eff4; + --color-primary-element-light-text: #00273d; + --color-primary-element-light-hover: #dbe4e9; --color-primary-element-text-dark: #ededed; --gradient-primary-background: linear-gradient(40deg, var(--color-primary) 0%, var(--color-primary-hover) 100%); } diff --git a/apps/theming/css/settings-admin.css b/apps/theming/css/settings-admin.css index bb154de2737..2b91404ec3b 100644 --- a/apps/theming/css/settings-admin.css +++ b/apps/theming/css/settings-admin.css @@ -89,7 +89,7 @@ margin-top: 10px; margin-bottom: 20px; cursor: pointer; - background-color: var(--color-primary); + background-color: var(--color-main-background-not-plain, var(--color-primary)); background-image: var(--image-background, var(--image-background-plain, url("../../../core/img/app-background.jpg"), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); } #theming #theming-preview #theming-preview-logo { diff --git a/apps/theming/css/settings-admin.scss b/apps/theming/css/settings-admin.scss index 6b37a48622e..706bd37f495 100644 --- a/apps/theming/css/settings-admin.scss +++ b/apps/theming/css/settings-admin.scss @@ -100,7 +100,7 @@ margin-top: 10px; margin-bottom: 20px; cursor: pointer; - background-color: var(--color-primary); + background-color: var(--color-main-background-not-plain, var(--color-primary)); background-image: var(--image-background, var(--image-background-plain, url('../../../core/img/app-background.jpg'), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); #theming-preview-logo { @@ -145,4 +145,4 @@ svg, img { transition: 500ms filter linear; } -}
\ No newline at end of file +} diff --git a/apps/theming/l10n/de.js b/apps/theming/l10n/de.js index 3e5133fa292..0dfa3f967db 100644 --- a/apps/theming/l10n/de.js +++ b/apps/theming/l10n/de.js @@ -50,6 +50,7 @@ OC.L10N.register( "Privacy policy" : "Datenschutzerklärung ", "Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an", "Keyboard shortcuts" : "Tastaturkürzel", + "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.", "Background" : "Hintergrund", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!", diff --git a/apps/theming/l10n/de.json b/apps/theming/l10n/de.json index f0acdc05dd6..20bf8a59131 100644 --- a/apps/theming/l10n/de.json +++ b/apps/theming/l10n/de.json @@ -48,6 +48,7 @@ "Privacy policy" : "Datenschutzerklärung ", "Adjust the Nextcloud theme" : "Passe das Design von Nextcloud an", "Keyboard shortcuts" : "Tastaturkürzel", + "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "In einigen Fällen können Tastenkombinationen Werkzeuge zur Barrierefreiheit beeinträchtigen. Damit du dich richtig auf dein Werkzeug konzentrieren kannst, kannst du hier alle Tastaturkürzel deaktivieren. Dadurch werden auch alle verfügbaren Verknüpfungen in Apps deaktiviert.", "Background" : "Hintergrund", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Der unbeschränkte Zugang ist für uns sehr wichtig. Wir halten uns an Webstandards und prüfen, ob alles auch ohne Maus und unterstützende Software wie Screenreader nutzbar ist. Wir streben die Einhaltung der {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 auf AA-Niveau an, mit dem kontrastreichen Design sogar auf AAA-Niveau.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Wenn du Fehler findest, melde sie bitte im {issuetracker}Problemverfolgungssystem{linkend}. Und wenn du mithelfen willst, trete dem {designteam}Designteam{linkend} bei!", diff --git a/apps/theming/l10n/el.js b/apps/theming/l10n/el.js index 717a31250c3..d98c16aceb6 100644 --- a/apps/theming/l10n/el.js +++ b/apps/theming/l10n/el.js @@ -26,6 +26,7 @@ OC.L10N.register( "No file uploaded" : "Δεν έχει μεταφορτωθεί αρχείο", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Χρησιμοποιείτε ήδη προσαρμοσμένο θέμα. Οι ρυθμίσεις της εφαρμογής Θέματα μπορεί να αντικατασταθούν από αυτό.", "Theming" : "Προσαρμογή θέματος", + "Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα", "Dark theme" : "Σκούρο θέμα", "Enable dark theme" : "Ενεργοποίηση σκούρου θέματος", "Dyslexia font" : "Γραμματοσειρά για δυσλεκτικούς", diff --git a/apps/theming/l10n/el.json b/apps/theming/l10n/el.json index 544bbaa0478..04c13425f91 100644 --- a/apps/theming/l10n/el.json +++ b/apps/theming/l10n/el.json @@ -24,6 +24,7 @@ "No file uploaded" : "Δεν έχει μεταφορτωθεί αρχείο", "You are already using a custom theme. Theming app settings might be overwritten by that." : "Χρησιμοποιείτε ήδη προσαρμοσμένο θέμα. Οι ρυθμίσεις της εφαρμογής Θέματα μπορεί να αντικατασταθούν από αυτό.", "Theming" : "Προσαρμογή θέματος", + "Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα", "Dark theme" : "Σκούρο θέμα", "Enable dark theme" : "Ενεργοποίηση σκούρου θέματος", "Dyslexia font" : "Γραμματοσειρά για δυσλεκτικούς", diff --git a/apps/theming/l10n/hu.js b/apps/theming/l10n/hu.js index 3d533866597..724bfed5625 100644 --- a/apps/theming/l10n/hu.js +++ b/apps/theming/l10n/hu.js @@ -53,10 +53,10 @@ OC.L10N.register( "Background" : "Háttér", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Az akadálymentesítés fontos számunka. A webes szabványokat követjük, és ellenőrizzük, hogy minden használható egér nélkül, illetve akadálymentesítési technológiákkal, például képernyőolvasókkal. Arra törekszünk, hogy a {guidelines}Webes tartalomra vonatkozó akadálymentesítési irányelvek{linkend} 2.1-es változatának AA szinten, a magas kontrasztú témával pedig AAA szinten megfeleljünk.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ha problémákat tapasztal, jelentse a {issuetracker}hibakövetőnkben{linkend}. És ha segíteni szeretne, csatlakozzon a {designteam}dizájn csapatunkhoz{linkend}!", - "Pick from Files" : "Választás a fájlok közül", + "Pick from Files" : "Válasszon a Fájlokból", "Default image" : "Alapértelmezett kép", "Plain background" : "Egyszerű háttér", - "Insert from {productName}" : "Beillesztés innen: {productName}-", + "Insert from {productName}" : "Beillesztés innen: {productName}", "Theme selection is enforced" : "A témaválasztás kényszerített", "Open documentation" : "Dokumentáció megnyitása", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetővé teszik, hogy könnyedén személyre szabja a példány és a támogatott kliensek megjelenését. Ez minden felhasználó számára látható lesz.", diff --git a/apps/theming/l10n/hu.json b/apps/theming/l10n/hu.json index 68fc7bdab9f..e445adf33a0 100644 --- a/apps/theming/l10n/hu.json +++ b/apps/theming/l10n/hu.json @@ -51,10 +51,10 @@ "Background" : "Háttér", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Az akadálymentesítés fontos számunka. A webes szabványokat követjük, és ellenőrizzük, hogy minden használható egér nélkül, illetve akadálymentesítési technológiákkal, például képernyőolvasókkal. Arra törekszünk, hogy a {guidelines}Webes tartalomra vonatkozó akadálymentesítési irányelvek{linkend} 2.1-es változatának AA szinten, a magas kontrasztú témával pedig AAA szinten megfeleljünk.", "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ha problémákat tapasztal, jelentse a {issuetracker}hibakövetőnkben{linkend}. És ha segíteni szeretne, csatlakozzon a {designteam}dizájn csapatunkhoz{linkend}!", - "Pick from Files" : "Választás a fájlok közül", + "Pick from Files" : "Válasszon a Fájlokból", "Default image" : "Alapértelmezett kép", "Plain background" : "Egyszerű háttér", - "Insert from {productName}" : "Beillesztés innen: {productName}-", + "Insert from {productName}" : "Beillesztés innen: {productName}", "Theme selection is enforced" : "A témaválasztás kényszerített", "Open documentation" : "Dokumentáció megnyitása", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "A témák lehetővé teszik, hogy könnyedén személyre szabja a példány és a támogatott kliensek megjelenését. Ez minden felhasználó számára látható lesz.", diff --git a/apps/theming/l10n/sk.js b/apps/theming/l10n/sk.js index 1e62d9c0593..816319e10ce 100644 --- a/apps/theming/l10n/sk.js +++ b/apps/theming/l10n/sk.js @@ -5,6 +5,7 @@ OC.L10N.register( "Admin" : "Správca", "Saved" : "Uložené", "a safe home for all your data" : "bezpečný domov pre všetky vaše dáta", + "Error uploading the file" : "Chyba pri nahrávaní súboru", "Name cannot be empty" : "Názov nemôže byť prázdny", "The given name is too long" : "Zadané meno je príliš dlhé", "The given web address is too long" : "Zadaná web adresa je príliš dlhá", @@ -29,25 +30,37 @@ OC.L10N.register( "Appearance and accessibility" : "Vzhľad a správanie", "Dark theme with high contrast mode" : "Tmavá téma s vysokým kontrastom", "Enable dark high contrast mode" : "Zapnúť režim vysokého kontrastu", + "Similar to the high contrast mode, but with dark colours." : "Podobné ako v režime vysokého kontrastu, ale s tmavými farbami.", "Dark theme" : "Tmavý motív vzhľadu", "Enable dark theme" : "Zapnúť tmavý motív vzhľadu", + "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Tmavý motív pre uľahčenie očiam znížením celkovej svietivosti a jasu.", "System default theme" : "Predvolený vzhľad systému", "Enable the system default" : "Povoliť systémové nastavenia", + "Using the default system appearance." : "Použitie predvoleného vzhľadu systému.", "Dyslexia font" : "Písmo pre dyslektikov", "Enable dyslexia font" : "Povoliť písmo pre dyslektikov", "OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic je slobodný typ písma navrhnutý priamo pre obmedzenie vplyvu niektorých bežných porúch čítania spôsobených dyslexiou.", "High contrast mode" : "Režim vysokého kontrastu", "Enable high contrast mode" : "Zapnúť režim vysokého kontrastu", "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Mód s vysokým kontrastom pre uľahčenie navigácie. Zníži sa síce vizuálna kvalita, ale zvýši sa čitateľnosť.", + "Light theme" : "Svetlá téma", + "Enable the default light theme" : "Povoliť predvolený svetlý motív", + "The default light appearance." : "Predvolený svetlý motív", "Legal notice" : "Právne upozornenie", "Privacy policy" : "Zásady ochrany osobných údajov", "Adjust the Nextcloud theme" : "Upraviť motív vzhľadu Nextcloudu", "Keyboard shortcuts" : "Klávesové skratky", + "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "V niektorých prípadoch môžu klávesové skratky zasahovať do nástrojov dostupnosti. Aby ste mohli správne zaostriť na svoj nástroj, môžete tu vypnúť všetky klávesové skratky. Tým sa tiež zakážu všetky dostupné skratky v aplikáciách.", + "Disable all keyboard shortcuts" : "Vypnúť všetky klávesové skratky", "Background" : "Pozadie", + "Set a custom background" : "Nastaviť vlastné pozadie", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Univerzálny prístup je pre nás veľmi dôležitý. Dodržiavame webové štandardy a kontrolujeme, aby bolo všetko použiteľné aj bez myši a pomocného softvéru, ako sú čítačky obrazovky. Naším cieľom je byť v súlade s {guidelines}pokynmi pre prístup k webovému obsahu {linkend} 2.1 na úrovni AA, v režime vysokého kontrastu dokonca na úrovni AAA.", + "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ak nájdete nejaké problémy, neváhajte ich nahlásiť v {issuetracker}našom nástroji na sledovanie problémov{linkend}. A ak sa chcete zapojiť, pridajte sa k {designteam}nášmu tímu dizajnérov{linkend}!", "Pick from Files" : "Vybrať zo súborov", + "Default image" : "Predvolený obrázok", "Plain background" : "Obyčajné pozadie", "Insert from {productName}" : "Vložiť z {productName}", + "Theme selection is enforced" : "Vynucuje sa výber témy", "Open documentation" : "Otvoriť dokumentáciu", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Zmena vzhľadu umožňuje ľahko upraviť pocit z vašej inštalácie a podporovaných klientov. Toto bude viditeľné pre všetkých klientov.", "Name" : "Názov", diff --git a/apps/theming/l10n/sk.json b/apps/theming/l10n/sk.json index 61bbcb6fd07..b817af9a2bb 100644 --- a/apps/theming/l10n/sk.json +++ b/apps/theming/l10n/sk.json @@ -3,6 +3,7 @@ "Admin" : "Správca", "Saved" : "Uložené", "a safe home for all your data" : "bezpečný domov pre všetky vaše dáta", + "Error uploading the file" : "Chyba pri nahrávaní súboru", "Name cannot be empty" : "Názov nemôže byť prázdny", "The given name is too long" : "Zadané meno je príliš dlhé", "The given web address is too long" : "Zadaná web adresa je príliš dlhá", @@ -27,25 +28,37 @@ "Appearance and accessibility" : "Vzhľad a správanie", "Dark theme with high contrast mode" : "Tmavá téma s vysokým kontrastom", "Enable dark high contrast mode" : "Zapnúť režim vysokého kontrastu", + "Similar to the high contrast mode, but with dark colours." : "Podobné ako v režime vysokého kontrastu, ale s tmavými farbami.", "Dark theme" : "Tmavý motív vzhľadu", "Enable dark theme" : "Zapnúť tmavý motív vzhľadu", + "A dark theme to ease your eyes by reducing the overall luminosity and brightness." : "Tmavý motív pre uľahčenie očiam znížením celkovej svietivosti a jasu.", "System default theme" : "Predvolený vzhľad systému", "Enable the system default" : "Povoliť systémové nastavenia", + "Using the default system appearance." : "Použitie predvoleného vzhľadu systému.", "Dyslexia font" : "Písmo pre dyslektikov", "Enable dyslexia font" : "Povoliť písmo pre dyslektikov", "OpenDyslexic is a free typeface/font designed to mitigate some of the common reading errors caused by dyslexia." : "OpenDyslexic je slobodný typ písma navrhnutý priamo pre obmedzenie vplyvu niektorých bežných porúch čítania spôsobených dyslexiou.", "High contrast mode" : "Režim vysokého kontrastu", "Enable high contrast mode" : "Zapnúť režim vysokého kontrastu", "A high contrast mode to ease your navigation. Visual quality will be reduced but clarity will be increased." : "Mód s vysokým kontrastom pre uľahčenie navigácie. Zníži sa síce vizuálna kvalita, ale zvýši sa čitateľnosť.", + "Light theme" : "Svetlá téma", + "Enable the default light theme" : "Povoliť predvolený svetlý motív", + "The default light appearance." : "Predvolený svetlý motív", "Legal notice" : "Právne upozornenie", "Privacy policy" : "Zásady ochrany osobných údajov", "Adjust the Nextcloud theme" : "Upraviť motív vzhľadu Nextcloudu", "Keyboard shortcuts" : "Klávesové skratky", + "In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps." : "V niektorých prípadoch môžu klávesové skratky zasahovať do nástrojov dostupnosti. Aby ste mohli správne zaostriť na svoj nástroj, môžete tu vypnúť všetky klávesové skratky. Tým sa tiež zakážu všetky dostupné skratky v aplikáciách.", + "Disable all keyboard shortcuts" : "Vypnúť všetky klávesové skratky", "Background" : "Pozadie", + "Set a custom background" : "Nastaviť vlastné pozadie", "Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level." : "Univerzálny prístup je pre nás veľmi dôležitý. Dodržiavame webové štandardy a kontrolujeme, aby bolo všetko použiteľné aj bez myši a pomocného softvéru, ako sú čítačky obrazovky. Naším cieľom je byť v súlade s {guidelines}pokynmi pre prístup k webovému obsahu {linkend} 2.1 na úrovni AA, v režime vysokého kontrastu dokonca na úrovni AAA.", + "If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!" : "Ak nájdete nejaké problémy, neváhajte ich nahlásiť v {issuetracker}našom nástroji na sledovanie problémov{linkend}. A ak sa chcete zapojiť, pridajte sa k {designteam}nášmu tímu dizajnérov{linkend}!", "Pick from Files" : "Vybrať zo súborov", + "Default image" : "Predvolený obrázok", "Plain background" : "Obyčajné pozadie", "Insert from {productName}" : "Vložiť z {productName}", + "Theme selection is enforced" : "Vynucuje sa výber témy", "Open documentation" : "Otvoriť dokumentáciu", "Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users." : "Zmena vzhľadu umožňuje ľahko upraviť pocit z vašej inštalácie a podporovaných klientov. Toto bude viditeľné pre všetkých klientov.", "Name" : "Názov", diff --git a/apps/theming/l10n/uk.js b/apps/theming/l10n/uk.js index 4bc70697ac7..ba917a2a88b 100644 --- a/apps/theming/l10n/uk.js +++ b/apps/theming/l10n/uk.js @@ -21,7 +21,7 @@ OC.L10N.register( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Розмір завантаженого файлу перевищує директиву MAX_FILE_SIZE, зазначену у HTML-формі", "The file was only partially uploaded" : "Файл завантажено лише частково", "No file was uploaded" : "Не вивантажено жодного файлу", - "Missing a temporary folder" : "Відсутня тимчасова тека", + "Missing a temporary folder" : "Відсутній тимчасовий каталог", "Could not write file to disk" : "Неможливо записати файл на диск", "A PHP extension stopped the file upload" : "Розширення PHP призупинило завантаження файлу", "No file uploaded" : "Файл не завантажено", diff --git a/apps/theming/l10n/uk.json b/apps/theming/l10n/uk.json index 84ab56e568b..0b803d6cb1f 100644 --- a/apps/theming/l10n/uk.json +++ b/apps/theming/l10n/uk.json @@ -19,7 +19,7 @@ "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Розмір завантаженого файлу перевищує директиву MAX_FILE_SIZE, зазначену у HTML-формі", "The file was only partially uploaded" : "Файл завантажено лише частково", "No file was uploaded" : "Не вивантажено жодного файлу", - "Missing a temporary folder" : "Відсутня тимчасова тека", + "Missing a temporary folder" : "Відсутній тимчасовий каталог", "Could not write file to disk" : "Неможливо записати файл на диск", "A PHP extension stopped the file upload" : "Розширення PHP призупинило завантаження файлу", "No file uploaded" : "Файл не завантажено", diff --git a/apps/theming/lib/Service/BackgroundService.php b/apps/theming/lib/Service/BackgroundService.php index bbf7bde9e5f..0614fe00357 100644 --- a/apps/theming/lib/Service/BackgroundService.php +++ b/apps/theming/lib/Service/BackgroundService.php @@ -44,6 +44,8 @@ use OCP\PreConditionNotMetException; class BackgroundService { // true when the background is bright and need dark icons public const THEMING_MODE_DARK = 'dark'; + public const DEFAULT_COLOR = '#0082c9'; + public const DEFAULT_ACCESSIBLE_COLOR = '#00639a'; public const SHIPPED_BACKGROUNDS = [ 'anatoly-mikhaltsov-butterfly-wing-scale.jpg' => [ @@ -90,8 +92,7 @@ class BackgroundService { 'kamil-porembinski-clouds.jpg' => [ 'attribution' => 'Clouds (Kamil Porembiński, CC BY-SA)', 'attribution_url' => 'https://www.flickr.com/photos/paszczak000/8715851521/', - // Originally #0082c9 but adjusted for accessibility - 'primary_color' => '#00639a', + 'primary_color' => self::DEFAULT_COLOR, ], 'bernard-spragg-new-zealand-fern.jpg' => [ 'attribution' => 'New zealand fern (Bernard Spragg, CC0)', diff --git a/apps/theming/lib/Themes/DefaultTheme.php b/apps/theming/lib/Themes/DefaultTheme.php index 203e03757c8..413902d7813 100644 --- a/apps/theming/lib/Themes/DefaultTheme.php +++ b/apps/theming/lib/Themes/DefaultTheme.php @@ -27,6 +27,7 @@ namespace OCA\Theming\Themes; use OCA\Theming\AppInfo\Application; use OCA\Theming\ImageManager; use OCA\Theming\ITheme; +use OCA\Theming\Service\BackgroundService; use OCA\Theming\ThemingDefaults; use OCA\Theming\Util; use OCP\App\IAppManager; @@ -41,6 +42,7 @@ class DefaultTheme implements ITheme { public Util $util; public ThemingDefaults $themingDefaults; + public IUserSession $userSession; public IURLGenerator $urlGenerator; public ImageManager $imageManager; public IConfig $config; @@ -50,18 +52,22 @@ class DefaultTheme implements ITheme { public function __construct(Util $util, ThemingDefaults $themingDefaults, + IUserSession $userSession, IURLGenerator $urlGenerator, ImageManager $imageManager, IConfig $config, IL10N $l) { $this->util = $util; $this->themingDefaults = $themingDefaults; + $this->userSession = $userSession; $this->urlGenerator = $urlGenerator; $this->imageManager = $imageManager; $this->config = $config; $this->l = $l; - $this->primaryColor = $this->themingDefaults->getColorPrimary(); + $initialPrimaryColor = $this->themingDefaults->getColorPrimary(); + // Override default color if set to improve accessibility + $this->primaryColor = $initialPrimaryColor === BackgroundService::DEFAULT_COLOR ? BackgroundService::DEFAULT_ACCESSIBLE_COLOR : $initialPrimaryColor; } public function getId(): string { @@ -101,6 +107,7 @@ class DefaultTheme implements ITheme { $variables = [ '--color-main-background' => $colorMainBackground, + '--color-main-background-not-plain' => $this->themingDefaults->getColorPrimary(), '--color-main-background-rgb' => $colorMainBackgroundRGB, '--color-main-background-translucent' => 'rgba(var(--color-main-background-rgb), .97)', '--color-main-background-blur' => 'rgba(var(--color-main-background-rgb), .8)', @@ -221,21 +228,17 @@ class DefaultTheme implements ITheme { } $appManager = Server::get(IAppManager::class); - $userSession = Server::get(IUserSession::class); - $user = $userSession->getUser(); + $user = $this->userSession->getUser(); if ($appManager->isEnabledForUser(Application::APP_ID) && $user !== null) { $themingBackground = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'background', 'default'); if ($themingBackground === 'custom') { - // Custom $variables['--image-main-background'] = "url('" . $this->urlGenerator->linkToRouteAbsolute('theming.userTheme.getBackground') . "')"; - } elseif ($themingBackground !== 'default' && substr($themingBackground, 0, 1) !== '#') { - // Shipped background + } elseif (isset(BackgroundService::SHIPPED_BACKGROUNDS[$themingBackground])) { $variables['--image-main-background'] = "url('" . $this->urlGenerator->linkTo(Application::APP_ID, "/img/background/$themingBackground") . "')"; } elseif (substr($themingBackground, 0, 1) === '#') { - // Color unset($variables['--image-main-background']); - $variables['--color-main-background-plain'] = $this->primaryColor; + $variables['--color-main-background-plain'] = $this->themingDefaults->getColorPrimary(); } } diff --git a/apps/theming/lib/ThemingDefaults.php b/apps/theming/lib/ThemingDefaults.php index 3d7aaee2064..5fa5656d928 100644 --- a/apps/theming/lib/ThemingDefaults.php +++ b/apps/theming/lib/ThemingDefaults.php @@ -40,6 +40,8 @@ */ namespace OCA\Theming; +use OCA\Theming\AppInfo\Application; +use OCA\Theming\Service\BackgroundService; use OCP\App\AppPathNotFoundException; use OCP\App\IAppManager; use OCP\Files\NotFoundException; @@ -49,47 +51,31 @@ use OCP\IConfig; use OCP\IL10N; use OCP\INavigationManager; use OCP\IURLGenerator; +use OCP\IUserSession; class ThemingDefaults extends \OC_Defaults { - /** @var IConfig */ - private $config; - /** @var IL10N */ - private $l; - /** @var ImageManager */ - private $imageManager; - /** @var IURLGenerator */ - private $urlGenerator; - /** @var ICacheFactory */ - private $cacheFactory; - /** @var Util */ - private $util; - /** @var IAppManager */ - private $appManager; - /** @var INavigationManager */ - private $navigationManager; - - /** @var string */ - private $name; - /** @var string */ - private $title; - /** @var string */ - private $entity; - /** @var string */ - private $productName; - /** @var string */ - private $url; - /** @var string */ - private $color; - - /** @var string */ - private $iTunesAppId; - /** @var string */ - private $iOSClientUrl; - /** @var string */ - private $AndroidClientUrl; - /** @var string */ - private $FDroidClientUrl; + private IConfig $config; + private IL10N $l; + private ImageManager $imageManager; + private IUserSession $userSession; + private IURLGenerator $urlGenerator; + private ICacheFactory $cacheFactory; + private Util $util; + private IAppManager $appManager; + private INavigationManager $navigationManager; + + private string $name; + private string $title; + private string $entity; + private string $productName; + private string $url; + private string $color; + + private string $iTunesAppId; + private string $iOSClientUrl; + private string $AndroidClientUrl; + private string $FDroidClientUrl; /** * ThemingDefaults constructor. @@ -97,6 +83,7 @@ class ThemingDefaults extends \OC_Defaults { * @param IConfig $config * @param IL10N $l * @param ImageManager $imageManager + * @param IUserSession $userSession * @param IURLGenerator $urlGenerator * @param ICacheFactory $cacheFactory * @param Util $util @@ -104,6 +91,7 @@ class ThemingDefaults extends \OC_Defaults { */ public function __construct(IConfig $config, IL10N $l, + IUserSession $userSession, IURLGenerator $urlGenerator, ICacheFactory $cacheFactory, Util $util, @@ -115,6 +103,7 @@ class ThemingDefaults extends \OC_Defaults { $this->config = $config; $this->l = $l; $this->imageManager = $imageManager; + $this->userSession = $userSession; $this->urlGenerator = $urlGenerator; $this->cacheFactory = $cacheFactory; $this->util = $util; @@ -229,10 +218,24 @@ class ThemingDefaults extends \OC_Defaults { * @return string */ public function getColorPrimary() { - $color = $this->config->getAppValue('theming', 'color', $this->color); + $user = $this->userSession->getUser(); + $color = $this->config->getAppValue(Application::APP_ID, 'color', ''); + + if ($color === '' && !empty($user)) { + $themingBackground = $this->config->getUserValue($user->getUID(), Application::APP_ID, 'background', 'default'); + if ($themingBackground === 'default') { + $this->increaseCacheBuster(); + return BackgroundService::DEFAULT_COLOR; + } else if (isset(BackgroundService::SHIPPED_BACKGROUNDS[$themingBackground]['primary_color'])) { + $this->increaseCacheBuster(); + return BackgroundService::SHIPPED_BACKGROUNDS[$themingBackground]['primary_color']; + } + } + if (!preg_match('/^\#([0-9a-f]{3}|[0-9a-f]{6})$/i', $color)) { - $color = '#0082c9'; + return BackgroundService::DEFAULT_COLOR; } + return $color; } diff --git a/apps/theming/src/components/BackgroundSettings.vue b/apps/theming/src/components/BackgroundSettings.vue index 359723bcf49..39210569689 100644 --- a/apps/theming/src/components/BackgroundSettings.vue +++ b/apps/theming/src/components/BackgroundSettings.vue @@ -171,7 +171,7 @@ export default { } &.color { - background-color: var(--color-primary); + background-color: var(--color-main-background-not-plain, var(--color-primary)); color: var(--color-primary-text); } diff --git a/apps/theming/tests/Service/ThemesServiceTest.php b/apps/theming/tests/Service/ThemesServiceTest.php index 3be8881669a..5a2907ec073 100644 --- a/apps/theming/tests/Service/ThemesServiceTest.php +++ b/apps/theming/tests/Service/ThemesServiceTest.php @@ -156,7 +156,7 @@ class ThemesServiceTest extends TestCase { ->method('getUserValue') ->with('user', Application::APP_ID, 'enabled-themes', '[]') ->willReturn(json_encode($enabledThemes)); - + $this->assertEquals($expectedEnabled, $this->themesService->disableTheme($this->themes[$toDisable])); } @@ -190,7 +190,7 @@ class ThemesServiceTest extends TestCase { ->method('getUserValue') ->with('user', Application::APP_ID, 'enabled-themes', '[]') ->willReturn(json_encode($enabledThemes)); - + $this->assertEquals($expected, $this->themesService->isEnabled($this->themes[$themeId])); } @@ -281,6 +281,7 @@ class ThemesServiceTest extends TestCase { 'default' => new DefaultTheme( $util, $this->themingDefaults, + $this->userSession, $urlGenerator, $imageManager, $this->config, @@ -289,6 +290,7 @@ class ThemesServiceTest extends TestCase { 'light' => new LightTheme( $util, $this->themingDefaults, + $this->userSession, $urlGenerator, $imageManager, $this->config, @@ -297,6 +299,7 @@ class ThemesServiceTest extends TestCase { 'dark' => new DarkTheme( $util, $this->themingDefaults, + $this->userSession, $urlGenerator, $imageManager, $this->config, @@ -305,6 +308,7 @@ class ThemesServiceTest extends TestCase { 'light-highcontrast' => new HighContrastTheme( $util, $this->themingDefaults, + $this->userSession, $urlGenerator, $imageManager, $this->config, @@ -313,6 +317,7 @@ class ThemesServiceTest extends TestCase { 'dark-highcontrast' => new DarkHighContrastTheme( $util, $this->themingDefaults, + $this->userSession, $urlGenerator, $imageManager, $this->config, @@ -321,6 +326,7 @@ class ThemesServiceTest extends TestCase { 'opendyslexic' => new DyslexiaFont( $util, $this->themingDefaults, + $this->userSession, $urlGenerator, $imageManager, $this->config, diff --git a/apps/theming/tests/Settings/PersonalTest.php b/apps/theming/tests/Settings/PersonalTest.php index 8e121c0a057..0cb289cb86a 100644 --- a/apps/theming/tests/Settings/PersonalTest.php +++ b/apps/theming/tests/Settings/PersonalTest.php @@ -45,6 +45,7 @@ use OCP\AppFramework\Services\IInitialState; use OCP\IConfig; use OCP\IL10N; use OCP\IURLGenerator; +use OCP\IUserSession; use Test\TestCase; class PersonalTest extends TestCase { @@ -128,6 +129,7 @@ class PersonalTest extends TestCase { private function initThemes() { $util = $this->createMock(Util::class); $themingDefaults = $this->createMock(ThemingDefaults::class); + $userSession = $this->createMock(IUserSession::class); $urlGenerator = $this->createMock(IURLGenerator::class); $imageManager = $this->createMock(ImageManager::class); $config = $this->createMock(IConfig::class); @@ -141,6 +143,7 @@ class PersonalTest extends TestCase { 'default' => new DefaultTheme( $util, $themingDefaults, + $userSession, $urlGenerator, $imageManager, $config, @@ -149,6 +152,7 @@ class PersonalTest extends TestCase { 'light' => new LightTheme( $util, $themingDefaults, + $userSession, $urlGenerator, $imageManager, $config, @@ -157,6 +161,7 @@ class PersonalTest extends TestCase { 'dark' => new DarkTheme( $util, $themingDefaults, + $userSession, $urlGenerator, $imageManager, $config, @@ -165,6 +170,7 @@ class PersonalTest extends TestCase { 'light-highcontrast' => new HighContrastTheme( $util, $themingDefaults, + $userSession, $urlGenerator, $imageManager, $config, @@ -173,6 +179,7 @@ class PersonalTest extends TestCase { 'dark-highcontrast' => new DarkHighContrastTheme( $util, $themingDefaults, + $userSession, $urlGenerator, $imageManager, $config, @@ -181,6 +188,7 @@ class PersonalTest extends TestCase { 'opendyslexic' => new DyslexiaFont( $util, $themingDefaults, + $userSession, $urlGenerator, $imageManager, $config, diff --git a/apps/theming/tests/Themes/DefaultThemeTest.php b/apps/theming/tests/Themes/DefaultThemeTest.php index 84430360897..c1de2810396 100644 --- a/apps/theming/tests/Themes/DefaultThemeTest.php +++ b/apps/theming/tests/Themes/DefaultThemeTest.php @@ -32,6 +32,7 @@ use OCP\Files\IAppData; use OCP\IConfig; use OCP\IL10N; use OCP\IURLGenerator; +use OCP\IUserSession; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -52,6 +53,7 @@ class DefaultThemeTest extends TestCase { protected function setUp(): void { $this->themingDefaults = $this->createMock(ThemingDefaults::class); + $this->userSession = $this->createMock(IUserSession::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->imageManager = $this->createMock(ImageManager::class); $this->config = $this->createMock(IConfig::class); @@ -85,6 +87,7 @@ class DefaultThemeTest extends TestCase { $this->defaultTheme = new DefaultTheme( $util, $this->themingDefaults, + $this->userSession, $this->urlGenerator, $this->imageManager, $this->config, diff --git a/apps/theming/tests/Themes/DyslexiaFontTest.php b/apps/theming/tests/Themes/DyslexiaFontTest.php index 30472aeb6f2..77eb77a2818 100644 --- a/apps/theming/tests/Themes/DyslexiaFontTest.php +++ b/apps/theming/tests/Themes/DyslexiaFontTest.php @@ -56,6 +56,7 @@ class DyslexiaFontTest extends TestCase { protected function setUp(): void { $this->themingDefaults = $this->createMock(ThemingDefaults::class); + $this->userSession = $this->createMock(IUserSession::class); $this->imageManager = $this->createMock(ImageManager::class); $this->config = $this->createMock(IConfig::class); $this->l10n = $this->createMock(IL10N::class); @@ -93,6 +94,7 @@ class DyslexiaFontTest extends TestCase { $this->dyslexiaFont = new DyslexiaFont( $util, $this->themingDefaults, + $this->userSession, $this->urlGenerator, $this->imageManager, $this->config, @@ -142,7 +144,7 @@ class DyslexiaFontTest extends TestCase { /** * @dataProvider dataTestGetCustomCss - * + * * Ensure the fonts are always loaded from the web root * despite having url rewriting enabled or not * @@ -155,7 +157,7 @@ class DyslexiaFontTest extends TestCase { ->method('getSystemValue') ->with('htaccess.IgnoreFrontController', false) ->willReturn($prettyUrlsEnabled); - + $this->assertStringContainsString("'$webRoot/apps/theming/fonts/OpenDyslexic-Regular.woff'", $this->dyslexiaFont->getCustomCss()); $this->assertStringNotContainsString('index.php', $this->dyslexiaFont->getCustomCss()); } diff --git a/apps/theming/tests/ThemingDefaultsTest.php b/apps/theming/tests/ThemingDefaultsTest.php index 20c153f1e96..5aa36211053 100644 --- a/apps/theming/tests/ThemingDefaultsTest.php +++ b/apps/theming/tests/ThemingDefaultsTest.php @@ -46,6 +46,7 @@ use OCP\IConfig; use OCP\IL10N; use OCP\INavigationManager; use OCP\IURLGenerator; +use OCP\IUserSession; use Test\TestCase; class ThemingDefaultsTest extends TestCase { @@ -53,6 +54,8 @@ class ThemingDefaultsTest extends TestCase { private $config; /** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */ private $l10n; + /** @var IUserSession|\PHPUnit\Framework\MockObject\MockObject */ + private $userSession; /** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */ private $urlGenerator; /** @var \OC_Defaults|\PHPUnit\Framework\MockObject\MockObject */ @@ -78,6 +81,7 @@ class ThemingDefaultsTest extends TestCase { parent::setUp(); $this->config = $this->createMock(IConfig::class); $this->l10n = $this->createMock(IL10N::class); + $this->userSession = $this->createMock(IUserSession::class); $this->urlGenerator = $this->createMock(IURLGenerator::class); $this->cacheFactory = $this->createMock(ICacheFactory::class); $this->cache = $this->createMock(ICache::class); @@ -93,6 +97,7 @@ class ThemingDefaultsTest extends TestCase { $this->template = new ThemingDefaults( $this->config, $this->l10n, + $this->userSession, $this->urlGenerator, $this->cacheFactory, $this->util, @@ -419,7 +424,7 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'color', $this->defaults->getColorPrimary()) + ->with('theming', 'color', null) ->willReturn($this->defaults->getColorPrimary()); $this->assertEquals($this->defaults->getColorPrimary(), $this->template->getColorPrimary()); @@ -429,7 +434,7 @@ class ThemingDefaultsTest extends TestCase { $this->config ->expects($this->once()) ->method('getAppValue') - ->with('theming', 'color', $this->defaults->getColorPrimary()) + ->with('theming', 'color', null) ->willReturn('#fff'); $this->assertEquals('#fff', $this->template->getColorPrimary()); @@ -542,7 +547,7 @@ class ThemingDefaultsTest extends TestCase { ->method('getAppValue') ->withConsecutive( ['theming', 'cachebuster', '0'], - ['theming', 'color', $this->defaults->getColorPrimary()], + ['theming', 'color', null], )->willReturnOnConsecutiveCalls( '15', $this->defaults->getColorPrimary(), diff --git a/apps/twofactor_backupcodes/l10n/cs.js b/apps/twofactor_backupcodes/l10n/cs.js index 3b8731d8bf9..c9c36a12bd6 100644 --- a/apps/twofactor_backupcodes/l10n/cs.js +++ b/apps/twofactor_backupcodes/l10n/cs.js @@ -1,14 +1,14 @@ OC.L10N.register( "twofactor_backupcodes", { - "You created two-factor backup codes for your account" : "Vytvořili jste záložní kódy dvoufázového ověření pro váš účet", + "You created two-factor backup codes for your account" : "Vytvořili jste záložní kódy pro dvoufázové ověřování se pro svůj účet", "Second-factor backup codes" : "Záložní kódy pro dvoufázové ověřování", "Generate backup codes" : "Vytvořit záložní kódy", - "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Zapnuli jste si dvouúrovňové ověřování, ale doposud nenechali vytvořit záložní kódy. Ty jsou potřebné pro obnovení přístupu k vašemu účtu v případě, že ztratíte druhý faktor.", + "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Zapnuli jste si dvoufázové ověřování, ale doposud nenechali vytvořit záložní kódy. Ty jsou potřebné pro obnovení přístupu k vašemu účtu v případě, že ztratíte druhý faktor.", "Backup code" : "Záložní kód", "Use backup code" : "Použít záložní kód", "Two factor backup codes" : "Záložní kódy pro dvoufázové ověřování", - "A two-factor auth backup codes provider" : "Poskytovatel záložních kódů pro dvoustupňové ověřování", + "A two-factor auth backup codes provider" : "Poskytovatel záložních kódů pro dvoufázové ověřování", "Backup codes have been generated. {used} of {total} codes have been used." : "Záložní kódy byly vytvořeny. Využito {used} z {total} kódů.", "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Zde jsou vaše záložní kódy. Kódy si uložte a/nebo vytiskněte, protože už je nebude možné zobrazit znovu.", "Save backup codes" : "Uložit záložní kódy", diff --git a/apps/twofactor_backupcodes/l10n/cs.json b/apps/twofactor_backupcodes/l10n/cs.json index 492a91274fc..4d6e81e76c5 100644 --- a/apps/twofactor_backupcodes/l10n/cs.json +++ b/apps/twofactor_backupcodes/l10n/cs.json @@ -1,12 +1,12 @@ { "translations": { - "You created two-factor backup codes for your account" : "Vytvořili jste záložní kódy dvoufázového ověření pro váš účet", + "You created two-factor backup codes for your account" : "Vytvořili jste záložní kódy pro dvoufázové ověřování se pro svůj účet", "Second-factor backup codes" : "Záložní kódy pro dvoufázové ověřování", "Generate backup codes" : "Vytvořit záložní kódy", - "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Zapnuli jste si dvouúrovňové ověřování, ale doposud nenechali vytvořit záložní kódy. Ty jsou potřebné pro obnovení přístupu k vašemu účtu v případě, že ztratíte druhý faktor.", + "You enabled two-factor authentication but did not generate backup codes yet. They are needed to restore access to your account in case you lose your second factor." : "Zapnuli jste si dvoufázové ověřování, ale doposud nenechali vytvořit záložní kódy. Ty jsou potřebné pro obnovení přístupu k vašemu účtu v případě, že ztratíte druhý faktor.", "Backup code" : "Záložní kód", "Use backup code" : "Použít záložní kód", "Two factor backup codes" : "Záložní kódy pro dvoufázové ověřování", - "A two-factor auth backup codes provider" : "Poskytovatel záložních kódů pro dvoustupňové ověřování", + "A two-factor auth backup codes provider" : "Poskytovatel záložních kódů pro dvoufázové ověřování", "Backup codes have been generated. {used} of {total} codes have been used." : "Záložní kódy byly vytvořeny. Využito {used} z {total} kódů.", "These are your backup codes. Please save and/or print them as you will not be able to read the codes again later" : "Zde jsou vaše záložní kódy. Kódy si uložte a/nebo vytiskněte, protože už je nebude možné zobrazit znovu.", "Save backup codes" : "Uložit záložní kódy", diff --git a/apps/updatenotification/l10n/el.js b/apps/updatenotification/l10n/el.js index a89b79eb8ea..a1005f02c39 100644 --- a/apps/updatenotification/l10n/el.js +++ b/apps/updatenotification/l10n/el.js @@ -17,6 +17,7 @@ OC.L10N.register( "Apps missing compatible version" : "Εφαρμογές χωρίς συμβατή έκδοση", "View in store" : "Προβολή στο κέντρο εφαρμογών", "Apps with compatible version" : "Εφαρμογές με συμβατή έκδοση", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Παρακαλούμε λάβετε υπόψη ότι ο web updater δεν συνιστάται για περισσότερους από 100 χρήστες! Παρακαλούμε χρησιμοποιήστε αντ' αυτού το πρόγραμμα ενημέρωσης γραμμής εντολών!", "Open updater" : "Άνοιγμα εφαρμογής ενημέρωσης", "Download now" : "Λήψη τώρα", "Please use the command line updater to update." : "Παρακαλούμε κάντε ενημέρωση μέσω γραμμής εντολών.", @@ -24,6 +25,7 @@ OC.L10N.register( "The update check is not yet finished. Please refresh the page." : "Ο έλεγχος ενημερώσεων δεν τελείωσε ακόμη. Παρακαλώ ανανεώστε την σελίδα.", "Your version is up to date." : "Έχετε την τελευταία έκδοση.", "A non-default update server is in use to be checked for updates:" : "Ένας μή-προεπιλεγμένος διακομιστής είναι σε χρήση για έλεγχο ενημερώσεων:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Μπορείτε να αλλάξετε το κανάλι ενημέρωσης παρακάτω, το οποίο επηρεάζει επίσης τη σελίδα διαχείρισης εφαρμογών. Π.χ. μετά την αλλαγή στο κανάλι beta, θα σας προσφέρονται ενημερώσεις εφαρμογών beta στη σελίδα διαχείρισης εφαρμογών.", "Update channel:" : "Ενημέρωση καναλιού:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Μπορείτε πάντα να ενημερώσετε σε μια νεότερη έκδοση. Αλλά δεν μπορείτε ποτέ να υποβαθμίσετε σε μια πιο σταθερή έκδοση.", "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:", diff --git a/apps/updatenotification/l10n/el.json b/apps/updatenotification/l10n/el.json index cc90116d172..befcae963f4 100644 --- a/apps/updatenotification/l10n/el.json +++ b/apps/updatenotification/l10n/el.json @@ -15,6 +15,7 @@ "Apps missing compatible version" : "Εφαρμογές χωρίς συμβατή έκδοση", "View in store" : "Προβολή στο κέντρο εφαρμογών", "Apps with compatible version" : "Εφαρμογές με συμβατή έκδοση", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Παρακαλούμε λάβετε υπόψη ότι ο web updater δεν συνιστάται για περισσότερους από 100 χρήστες! Παρακαλούμε χρησιμοποιήστε αντ' αυτού το πρόγραμμα ενημέρωσης γραμμής εντολών!", "Open updater" : "Άνοιγμα εφαρμογής ενημέρωσης", "Download now" : "Λήψη τώρα", "Please use the command line updater to update." : "Παρακαλούμε κάντε ενημέρωση μέσω γραμμής εντολών.", @@ -22,6 +23,7 @@ "The update check is not yet finished. Please refresh the page." : "Ο έλεγχος ενημερώσεων δεν τελείωσε ακόμη. Παρακαλώ ανανεώστε την σελίδα.", "Your version is up to date." : "Έχετε την τελευταία έκδοση.", "A non-default update server is in use to be checked for updates:" : "Ένας μή-προεπιλεγμένος διακομιστής είναι σε χρήση για έλεγχο ενημερώσεων:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Μπορείτε να αλλάξετε το κανάλι ενημέρωσης παρακάτω, το οποίο επηρεάζει επίσης τη σελίδα διαχείρισης εφαρμογών. Π.χ. μετά την αλλαγή στο κανάλι beta, θα σας προσφέρονται ενημερώσεις εφαρμογών beta στη σελίδα διαχείρισης εφαρμογών.", "Update channel:" : "Ενημέρωση καναλιού:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Μπορείτε πάντα να ενημερώσετε σε μια νεότερη έκδοση. Αλλά δεν μπορείτε ποτέ να υποβαθμίσετε σε μια πιο σταθερή έκδοση.", "Notify members of the following groups about available updates:" : "Να ενημερωθούν τα μέλη των παρακάτω ομάδων σχετικά με τις διαθέσιμες ενημερώσεις:", diff --git a/apps/updatenotification/l10n/eu.js b/apps/updatenotification/l10n/eu.js index 7490da909a0..95909e44ca0 100644 --- a/apps/updatenotification/l10n/eu.js +++ b/apps/updatenotification/l10n/eu.js @@ -33,7 +33,7 @@ OC.L10N.register( "The selected update channel makes dedicated notifications for the server obsolete." : "Aukeratutako eguneraketa kanala zerbitzariaren jakinarazpen dedikatuak zaharkitzen ditu.", "The selected update channel does not support updates of the server." : "Hautatutako eguneraketa kanalak ez ditu zerbitzariaren eguneraketak onartzen.", "A new version is available: <strong>{newVersionString}</strong>" : "Bertsio berri bat dago eskuragarri: <strong>{newVersionString}</strong>", - "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Kontuan izan bertsio berri baten ondoren eguneratzea lehen bertsio txikia edo geroago bakarrik agertzen dela. Denboran zehar tartekatuta zabaltzen ditugu bertsio berriak gure erabiltzaileentzat eta batzuetan bertsio bat saltatu egiten dugu, arazoak aurkitzen direnenan. Lortu informazio gehiago eguneratzeei eta kanalak askatzeari buruz {esteka} helbidean ", + "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Kontuan izan bertsio berri baten ondoren eguneratzea lehen bertsio txikia edo geroago bakarrik agertzen dela. Denboran zehar tartekatuta zabaltzen ditugu bertsio berriak gure erabiltzaileentzat eta batzuetan bertsio bat saltatu egiten dugu, arazoak aurkitzen direnean. Lortu informazio gehiago eguneratzeei eta kanalak askatzeari buruz {link} helbidean ", "Checked on {lastCheckedDate}" : "{lastCheckedDate}-n egiaztatuta", "Checking apps for compatible versions" : "Bertsio bateragarrientzat aplikaziorik dagoen egiaztatzen", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Ziurtatu config.php-k ez duela <samp> app store gaitua </samp>faltsu gisa ezartzen.", diff --git a/apps/updatenotification/l10n/eu.json b/apps/updatenotification/l10n/eu.json index 9a341daae9b..023ad07aef5 100644 --- a/apps/updatenotification/l10n/eu.json +++ b/apps/updatenotification/l10n/eu.json @@ -31,7 +31,7 @@ "The selected update channel makes dedicated notifications for the server obsolete." : "Aukeratutako eguneraketa kanala zerbitzariaren jakinarazpen dedikatuak zaharkitzen ditu.", "The selected update channel does not support updates of the server." : "Hautatutako eguneraketa kanalak ez ditu zerbitzariaren eguneraketak onartzen.", "A new version is available: <strong>{newVersionString}</strong>" : "Bertsio berri bat dago eskuragarri: <strong>{newVersionString}</strong>", - "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Kontuan izan bertsio berri baten ondoren eguneratzea lehen bertsio txikia edo geroago bakarrik agertzen dela. Denboran zehar tartekatuta zabaltzen ditugu bertsio berriak gure erabiltzaileentzat eta batzuetan bertsio bat saltatu egiten dugu, arazoak aurkitzen direnenan. Lortu informazio gehiago eguneratzeei eta kanalak askatzeari buruz {esteka} helbidean ", + "Note that after a new release the update only shows up after the first minor release or later. We roll out new versions spread out over time to our users and sometimes skip a version when issues are found. Learn more about updates and release channels at {link}" : "Kontuan izan bertsio berri baten ondoren eguneratzea lehen bertsio txikia edo geroago bakarrik agertzen dela. Denboran zehar tartekatuta zabaltzen ditugu bertsio berriak gure erabiltzaileentzat eta batzuetan bertsio bat saltatu egiten dugu, arazoak aurkitzen direnean. Lortu informazio gehiago eguneratzeei eta kanalak askatzeari buruz {link} helbidean ", "Checked on {lastCheckedDate}" : "{lastCheckedDate}-n egiaztatuta", "Checking apps for compatible versions" : "Bertsio bateragarrientzat aplikaziorik dagoen egiaztatzen", "Please make sure your config.php does not set <samp>appstoreenabled</samp> to false." : "Ziurtatu config.php-k ez duela <samp> app store gaitua </samp>faltsu gisa ezartzen.", diff --git a/apps/updatenotification/l10n/sk.js b/apps/updatenotification/l10n/sk.js index 892303b6f6c..6f8ae63e67f 100644 --- a/apps/updatenotification/l10n/sk.js +++ b/apps/updatenotification/l10n/sk.js @@ -17,6 +17,7 @@ OC.L10N.register( "Apps missing compatible version" : "Aplikácie s chýbajúcou kompatibilnou verziou", "View in store" : "Zobraziť v obchode", "Apps with compatible version" : "Aplikácie s kompatibilnou verziou", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Upozorňujeme, že webový aktualizátor sa neodporúča pre viac ako 100 používateľov! Namiesto toho použite nástroj na aktualizáciu príkazového riadku!", "Open updater" : "Otvoriť aktualizátor", "Download now" : "Stiahnuť teraz", "Please use the command line updater to update." : "Použite prosím aktualizáciu cez príkazový riadok.", @@ -24,6 +25,7 @@ OC.L10N.register( "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku.", "Your version is up to date." : "Vaša verzia je atuálna.", "A non-default update server is in use to be checked for updates:" : "Pre kontrolu aktualizácií sa používa iný než predvolený server:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Nižšie môžete zmeniť aktualizačný kanál, ktorý ovplyvní aj stránku správy aplikácií. napr. po prepnutí na beta kanál sa vám na stránke správy aplikácií ponúknu aktualizácie beta aplikácií.", "Update channel:" : "Aktualizačný kanál:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Vždy môžete aktualizovať na novšiu verziu, ale nikdy nemôžete prejsť na nižšiu, stabilnejšiu verziu.", "Notify members of the following groups about available updates:" : "Upozorňovať členov nasledujúcich skupín o dostupných aktualizáciach:", diff --git a/apps/updatenotification/l10n/sk.json b/apps/updatenotification/l10n/sk.json index 902a219ea8e..ae2356b4df3 100644 --- a/apps/updatenotification/l10n/sk.json +++ b/apps/updatenotification/l10n/sk.json @@ -15,6 +15,7 @@ "Apps missing compatible version" : "Aplikácie s chýbajúcou kompatibilnou verziou", "View in store" : "Zobraziť v obchode", "Apps with compatible version" : "Aplikácie s kompatibilnou verziou", + "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Upozorňujeme, že webový aktualizátor sa neodporúča pre viac ako 100 používateľov! Namiesto toho použite nástroj na aktualizáciu príkazového riadku!", "Open updater" : "Otvoriť aktualizátor", "Download now" : "Stiahnuť teraz", "Please use the command line updater to update." : "Použite prosím aktualizáciu cez príkazový riadok.", @@ -22,6 +23,7 @@ "The update check is not yet finished. Please refresh the page." : "Kontrola aktualizácií ešte neskončila. Obnovte prosím stránku.", "Your version is up to date." : "Vaša verzia je atuálna.", "A non-default update server is in use to be checked for updates:" : "Pre kontrolu aktualizácií sa používa iný než predvolený server:", + "You can change the update channel below which also affects the apps management page. E.g. after switching to the beta channel, beta app updates will be offered to you in the apps management page." : "Nižšie môžete zmeniť aktualizačný kanál, ktorý ovplyvní aj stránku správy aplikácií. napr. po prepnutí na beta kanál sa vám na stránke správy aplikácií ponúknu aktualizácie beta aplikácií.", "Update channel:" : "Aktualizačný kanál:", "You can always update to a newer version. But you can never downgrade to a more stable version." : "Vždy môžete aktualizovať na novšiu verziu, ale nikdy nemôžete prejsť na nižšiu, stabilnejšiu verziu.", "Notify members of the following groups about available updates:" : "Upozorňovať členov nasledujúcich skupín o dostupných aktualizáciach:", diff --git a/apps/updatenotification/l10n/uk.js b/apps/updatenotification/l10n/uk.js index cb8ddafc2f2..1b512ced5da 100644 --- a/apps/updatenotification/l10n/uk.js +++ b/apps/updatenotification/l10n/uk.js @@ -14,7 +14,7 @@ OC.L10N.register( "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Відображає сповіщення про оновлення для Nextcloud і надає SSO для програми оновлення.", "Update" : "Оновлення", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Ваша версія більше не підтримується. Будь ласка, оновіться якнайшвидше до версії, на яку поширюється підтримка.", - "Apps missing compatible version" : "У додатках відсутня сумісна версія", + "Apps missing compatible version" : "У застосунках відсутня сумісна версія", "View in store" : "Переглянути у крамниці застосунків", "Apps with compatible version" : "Програми з сумісною версією", "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Будь ласка, зверніть увагу, що веб-оновлювач не рекомендується, якщо кількість користувачів перевищує 100! Натомість використовуйте засіб оновлення командного рядка!", @@ -46,8 +46,8 @@ OC.L10N.register( "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Остання стабільна версія. Він підходить для регулярного використання та завжди оновлюється до останньої основної версії.", "Beta" : "Бета", "A pre-release version only for testing new features, not for production environments." : "Попередня версія лише для тестування нових функцій, а не для робочих середовищ.", - "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> додаток не має сумісної версії для цієї версії Nextcloud.","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud.","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud.","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud."], + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> застосункок не сумісний з цією версією Nextcloud.","<strong>%n</strong> застосунки не сумісні з цією версією Nextcloud.","<strong>%n</strong> застосунків не сумісні з цією версією Nextcloud.","<strong>%n</strong> застосунків не сумісні з цією версією Nextcloud."], "<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "<strong>Усі</strong> програми мають сумісну версію для цієї версії Nextcloud", - "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> додаток не має сумісної версії для цієї версії Nextcloud","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud"] + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> застосунок не має сумісної версії для вашої версії Nextcloud","<strong>%n</strong> застосунки не мають сумісної версії для вашої версії Nextcloud","<strong>%n</strong> застосунків не мають сумісної версії для вашої версії Nextcloud","<strong>%n</strong> застосунків не мають сумісної версії для вашої версії Nextcloud"] }, "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/updatenotification/l10n/uk.json b/apps/updatenotification/l10n/uk.json index a9f1e93bf32..c5dbb0c6162 100644 --- a/apps/updatenotification/l10n/uk.json +++ b/apps/updatenotification/l10n/uk.json @@ -12,7 +12,7 @@ "Displays update notifications for Nextcloud and provides the SSO for the updater." : "Відображає сповіщення про оновлення для Nextcloud і надає SSO для програми оновлення.", "Update" : "Оновлення", "The version you are running is not maintained anymore. Please make sure to update to a supported version as soon as possible." : "Ваша версія більше не підтримується. Будь ласка, оновіться якнайшвидше до версії, на яку поширюється підтримка.", - "Apps missing compatible version" : "У додатках відсутня сумісна версія", + "Apps missing compatible version" : "У застосунках відсутня сумісна версія", "View in store" : "Переглянути у крамниці застосунків", "Apps with compatible version" : "Програми з сумісною версією", "Please note that the web updater is not recommended with more than 100 users! Please use the command line updater instead!" : "Будь ласка, зверніть увагу, що веб-оновлювач не рекомендується, якщо кількість користувачів перевищує 100! Натомість використовуйте засіб оновлення командного рядка!", @@ -44,8 +44,8 @@ "The most recent stable version. It is suited for regular use and will always update to the latest major version." : "Остання стабільна версія. Він підходить для регулярного використання та завжди оновлюється до останньої основної версії.", "Beta" : "Бета", "A pre-release version only for testing new features, not for production environments." : "Попередня версія лише для тестування нових функцій, а не для робочих середовищ.", - "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> додаток не має сумісної версії для цієї версії Nextcloud.","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud.","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud.","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud."], + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available._::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available._" : ["<strong>%n</strong> застосункок не сумісний з цією версією Nextcloud.","<strong>%n</strong> застосунки не сумісні з цією версією Nextcloud.","<strong>%n</strong> застосунків не сумісні з цією версією Nextcloud.","<strong>%n</strong> застосунків не сумісні з цією версією Nextcloud."], "<strong>All</strong> apps have a compatible version for this Nextcloud version available" : "<strong>Усі</strong> програми мають сумісну версію для цієї версії Nextcloud", - "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> додаток не має сумісної версії для цієї версії Nextcloud","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud","<strong>%n</strong> програми не мають сумісної версії для цієї версії Nextcloud"] + "_<strong>%n</strong> app has no compatible version for this Nextcloud version available_::_<strong>%n</strong> apps have no compatible version for this Nextcloud version available_" : ["<strong>%n</strong> застосунок не має сумісної версії для вашої версії Nextcloud","<strong>%n</strong> застосунки не мають сумісної версії для вашої версії Nextcloud","<strong>%n</strong> застосунків не мають сумісної версії для вашої версії Nextcloud","<strong>%n</strong> застосунків не мають сумісної версії для вашої версії Nextcloud"] },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/user_ldap/l10n/el.js b/apps/user_ldap/l10n/el.js index b8373964041..fe02038dc07 100644 --- a/apps/user_ldap/l10n/el.js +++ b/apps/user_ldap/l10n/el.js @@ -60,6 +60,10 @@ OC.L10N.register( "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], "LDAP/AD integration" : "LDAP/AD ενσωμάτωση ", + "_%n group found_::_%n groups found_" : ["βρέθηκε %n ομάδα","βρέθηκαν %n ομάδες"], + "> 1000 groups found" : "Βρέθηκαν > 1000 ομάδες", + "> 1000 users found" : "Βρέθηκαν > 1000 χρήστες", + "_%n user found_::_%n users found_" : ["βρέθηκε %n χρήστης","βρέθηκαν %n χρήστες"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλώ προσδιορίστε στις προηγμένες ρυθμίσεις LDAP", "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού", "Invalid Host" : "Άκυρος εξυπηρετητής", @@ -178,6 +182,7 @@ OC.L10N.register( "\"$home\" Placeholder Field" : "\"$home\" Πεδίο Δέσμευσης", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "Το $home σε μια ρύθμιση εξωτερικού χώρου αποθήκευσης θα αντικατασταθεί με την τιμή του καθορισμένου χαρακτηριστικού", "Internal Username" : "Εσωτερικό Όνομα Χρήστη", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Από προεπιλογή, το εσωτερικό όνομα χρήστη θα δημιουργηθεί από το χαρακτηριστικό UUID. Αυτό διασφαλίζει ότι το όνομα χρήστη είναι μοναδικό και οι χαρακτήρες δεν χρειάζεται να μετατραπούν. Το εσωτερικό όνομα χρήστη έχει τον περιορισμό ότι επιτρέπονται μόνο αυτοί οι χαρακτήρες: [a-zA-Z0-9_.@-]. Άλλοι χαρακτήρες αντικαθίστανται με την ASCII αντιστοιχία τους ή απλώς παραλείπονται. Σε περίπτωση σύγκρουσης προστίθεται/αυξάνεται ένας αριθμός. Το εσωτερικό όνομα χρήστη χρησιμοποιείται για την εσωτερική αναγνώριση ενός χρήστη. Είναι επίσης το προεπιλεγμένο όνομα για τον αρχικό φάκελο του χρήστη. Αποτελεί επίσης μέρος των απομακρυσμένων διευθύνσεων URL, για παράδειγμα για όλες τις υπηρεσίες DAV. Με αυτή τη ρύθμιση, η προεπιλεγμένη συμπεριφορά μπορεί να παρακαμφθεί. Οι αλλαγές θα έχουν αποτέλεσμα μόνο σε πρόσφατα αντιστοιχισμένους (προστιθέμενους) χρήστες LDAP. Αφήστε το κενό για προεπιλεγμένη συμπεριφορά.", "Internal Username Attribute:" : "Ιδιότητα Εσωτερικού Ονόματος Χρήστη:", "Override UUID detection" : "Παράκαμψη ανίχνευσης UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Από προεπιλογή, το χαρακτηριστικό UUID εντοπίζεται αυτόματα. Το χαρακτηριστικό UUID χρησιμοποιείται για την αναγνώριση χωρίς αμφιβολία χρηστών και ομάδων LDAP. Επίσης, το εσωτερικό όνομα χρήστη θα δημιουργηθεί με βάση το UUID, εφόσον δεν ορίζεται διαφορετικά ανωτέρω. Μπορείτε να παρακάμψετε τη ρύθμιση και να ορίσετε ένα χαρακτηριστικό της επιλογής σας. Θα πρέπει να βεβαιωθείτε ότι το χαρακτηριστικό της επιλογής σας μπορεί να ληφθεί για τους χρήστες και τις ομάδες και ότι είναι μοναδικό. Αφήστε το κενό για την προεπιλεγμένη λειτουργία. Οι αλλαγές θα έχουν ισχύ μόνο σε πρόσφατα αντιστοιχισμένους (προστιθέμενους) χρήστες και ομάδες LDAP.", diff --git a/apps/user_ldap/l10n/el.json b/apps/user_ldap/l10n/el.json index d31d5ce0542..ef1fc78ddc6 100644 --- a/apps/user_ldap/l10n/el.json +++ b/apps/user_ldap/l10n/el.json @@ -58,6 +58,10 @@ "Your password will expire today." : "Το συνθηματικό σας λήγει σήμερα.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Το συνθηματικό σας θα λήξει σε %n ημέρα.","Το συνθηματικό σας θα λήξει σε %n ημέρες."], "LDAP/AD integration" : "LDAP/AD ενσωμάτωση ", + "_%n group found_::_%n groups found_" : ["βρέθηκε %n ομάδα","βρέθηκαν %n ομάδες"], + "> 1000 groups found" : "Βρέθηκαν > 1000 ομάδες", + "> 1000 users found" : "Βρέθηκαν > 1000 χρήστες", + "_%n user found_::_%n users found_" : ["βρέθηκε %n χρήστης","βρέθηκαν %n χρήστες"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Δεν ήταν δυνατή η ανίχνευση της ιδιότητας του εμφανιζόμενου ονόματος χρήστη . Παρακαλώ προσδιορίστε στις προηγμένες ρυθμίσεις LDAP", "Could not find the desired feature" : "Αδυναμία εύρεσης επιθυμητού χαρακτηριστικού", "Invalid Host" : "Άκυρος εξυπηρετητής", @@ -176,6 +180,7 @@ "\"$home\" Placeholder Field" : "\"$home\" Πεδίο Δέσμευσης", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "Το $home σε μια ρύθμιση εξωτερικού χώρου αποθήκευσης θα αντικατασταθεί με την τιμή του καθορισμένου χαρακτηριστικού", "Internal Username" : "Εσωτερικό Όνομα Χρήστη", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "Από προεπιλογή, το εσωτερικό όνομα χρήστη θα δημιουργηθεί από το χαρακτηριστικό UUID. Αυτό διασφαλίζει ότι το όνομα χρήστη είναι μοναδικό και οι χαρακτήρες δεν χρειάζεται να μετατραπούν. Το εσωτερικό όνομα χρήστη έχει τον περιορισμό ότι επιτρέπονται μόνο αυτοί οι χαρακτήρες: [a-zA-Z0-9_.@-]. Άλλοι χαρακτήρες αντικαθίστανται με την ASCII αντιστοιχία τους ή απλώς παραλείπονται. Σε περίπτωση σύγκρουσης προστίθεται/αυξάνεται ένας αριθμός. Το εσωτερικό όνομα χρήστη χρησιμοποιείται για την εσωτερική αναγνώριση ενός χρήστη. Είναι επίσης το προεπιλεγμένο όνομα για τον αρχικό φάκελο του χρήστη. Αποτελεί επίσης μέρος των απομακρυσμένων διευθύνσεων URL, για παράδειγμα για όλες τις υπηρεσίες DAV. Με αυτή τη ρύθμιση, η προεπιλεγμένη συμπεριφορά μπορεί να παρακαμφθεί. Οι αλλαγές θα έχουν αποτέλεσμα μόνο σε πρόσφατα αντιστοιχισμένους (προστιθέμενους) χρήστες LDAP. Αφήστε το κενό για προεπιλεγμένη συμπεριφορά.", "Internal Username Attribute:" : "Ιδιότητα Εσωτερικού Ονόματος Χρήστη:", "Override UUID detection" : "Παράκαμψη ανίχνευσης UUID", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "Από προεπιλογή, το χαρακτηριστικό UUID εντοπίζεται αυτόματα. Το χαρακτηριστικό UUID χρησιμοποιείται για την αναγνώριση χωρίς αμφιβολία χρηστών και ομάδων LDAP. Επίσης, το εσωτερικό όνομα χρήστη θα δημιουργηθεί με βάση το UUID, εφόσον δεν ορίζεται διαφορετικά ανωτέρω. Μπορείτε να παρακάμψετε τη ρύθμιση και να ορίσετε ένα χαρακτηριστικό της επιλογής σας. Θα πρέπει να βεβαιωθείτε ότι το χαρακτηριστικό της επιλογής σας μπορεί να ληφθεί για τους χρήστες και τις ομάδες και ότι είναι μοναδικό. Αφήστε το κενό για την προεπιλεγμένη λειτουργία. Οι αλλαγές θα έχουν ισχύ μόνο σε πρόσφατα αντιστοιχισμένους (προστιθέμενους) χρήστες και ομάδες LDAP.", diff --git a/apps/user_ldap/l10n/fr.js b/apps/user_ldap/l10n/fr.js index 50422323f92..a6ecdc324a1 100644 --- a/apps/user_ldap/l10n/fr.js +++ b/apps/user_ldap/l10n/fr.js @@ -67,7 +67,7 @@ OC.L10N.register( "Invalid Host" : "Hôte non valide", "LDAP user and group backend" : "Utilisateur LDAP et infrastructure de groupe", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Cette application autorise les administrateurs à connecter Nextcloud à un annuaire LDAP.", - "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Cette application permet aux administrateurs de connecter Nextcloud à un répertoire d'utilisateurs LDAP pour l'authentification et le provisionnement des utilisateurs, groupes et des attributs d'utilisateurs. Les administrateurs peuvent configurer cette application pour se connecter à un ou plusieurs répertoires LDAP ou Active Directories via une interface LDAP. Les attributs tels que le quota utilisateur, l'email, les images d'avatar, les adhésions de groupe et plus peuvent être envoyés sur Nextcloud à partir d'un répertoire avec les requêtes et les filtres appropriés.\n\nUn utilisateur se connecte à Nextcloud avec ses identifiants LDAP ou AD et obtient l'accès sur la base d'une demande d'authentification gérée par le serveur LDAP ou AD. Nextcloud ne stocke pas les mots de passe LDAP ou AD, mais ces informations d'identification sont utilisées pour authentifier un utilisateur et Nextcloud utilise ensuite une session pour l'ID utilisateur. De plus amples informations sont disponibles dans la documentation LDAP User and Group Backend.", + "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Cette application permet aux administrateurs de connecter Nextcloud à un répertoire d'utilisateurs LDAP pour l'authentification et le provisionnement des utilisateurs, groupes et des attributs d'utilisateurs. Les administrateurs peuvent configurer cette application pour se connecter à un ou plusieurs répertoires LDAP ou Active Directories via une interface LDAP. Les attributs tels que le quota utilisateur, l'e-mail, les images d'avatar, les adhésions de groupe et plus peuvent être envoyés sur Nextcloud à partir d'un répertoire avec les requêtes et les filtres appropriés.\n\nUn utilisateur se connecte à Nextcloud avec ses identifiants LDAP ou AD et obtient l'accès sur la base d'une demande d'authentification gérée par le serveur LDAP ou AD. Nextcloud ne stocke pas les mots de passe LDAP ou AD, mais ces informations d'identification sont utilisées pour authentifier un utilisateur et Nextcloud utilise ensuite une session pour l'ID utilisateur. De plus amples informations sont disponibles dans la documentation LDAP User and Group Backend.", "Test Configuration" : "Tester la configuration", "Help" : "Aide", "Groups meeting these criteria are available in %s:" : "Les groupes respectant ces critères sont disponibles dans %s :", @@ -173,7 +173,7 @@ OC.L10N.register( "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laissez vide pour appliquer le quota par défaut de l'utilisateur. Sinon, spécifiez un attribut LDAP / AD.", "Quota Default" : "Quota par défaut", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Remplacez le quota par défaut des utilisateurs LDAP qui ne disposent pas d'un quota dans le champ Quota.", - "Email Field" : "Champ Email", + "Email Field" : "Champ E-mail", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Définissez le courrier électronique de l'utilisateur à partir de leur attribut LDAP. Laissez le champ vide pour appliquer le comportement par défaut.", "User Home Folder Naming Rule" : "Règle de nommage du répertoire utilisateur", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide pour le nom d’utilisateur (par défaut). Sinon, spécifiez un attribut LDAP/AD.", diff --git a/apps/user_ldap/l10n/fr.json b/apps/user_ldap/l10n/fr.json index db8bf10af2e..6f3759727b7 100644 --- a/apps/user_ldap/l10n/fr.json +++ b/apps/user_ldap/l10n/fr.json @@ -65,7 +65,7 @@ "Invalid Host" : "Hôte non valide", "LDAP user and group backend" : "Utilisateur LDAP et infrastructure de groupe", "This application enables administrators to connect Nextcloud to an LDAP-based user directory." : "Cette application autorise les administrateurs à connecter Nextcloud à un annuaire LDAP.", - "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Cette application permet aux administrateurs de connecter Nextcloud à un répertoire d'utilisateurs LDAP pour l'authentification et le provisionnement des utilisateurs, groupes et des attributs d'utilisateurs. Les administrateurs peuvent configurer cette application pour se connecter à un ou plusieurs répertoires LDAP ou Active Directories via une interface LDAP. Les attributs tels que le quota utilisateur, l'email, les images d'avatar, les adhésions de groupe et plus peuvent être envoyés sur Nextcloud à partir d'un répertoire avec les requêtes et les filtres appropriés.\n\nUn utilisateur se connecte à Nextcloud avec ses identifiants LDAP ou AD et obtient l'accès sur la base d'une demande d'authentification gérée par le serveur LDAP ou AD. Nextcloud ne stocke pas les mots de passe LDAP ou AD, mais ces informations d'identification sont utilisées pour authentifier un utilisateur et Nextcloud utilise ensuite une session pour l'ID utilisateur. De plus amples informations sont disponibles dans la documentation LDAP User and Group Backend.", + "This application enables administrators to connect Nextcloud to an LDAP-based user directory for authentication and provisioning users, groups and user attributes. Admins can configure this application to connect to one or more LDAP directories or Active Directories via an LDAP interface. Attributes such as user quota, email, avatar pictures, group memberships and more can be pulled into Nextcloud from a directory with the appropriate queries and filters.\n\nA user logs into Nextcloud with their LDAP or AD credentials, and is granted access based on an authentication request handled by the LDAP or AD server. Nextcloud does not store LDAP or AD passwords, rather these credentials are used to authenticate a user and then Nextcloud uses a session for the user ID. More information is available in the LDAP User and Group Backend documentation." : "Cette application permet aux administrateurs de connecter Nextcloud à un répertoire d'utilisateurs LDAP pour l'authentification et le provisionnement des utilisateurs, groupes et des attributs d'utilisateurs. Les administrateurs peuvent configurer cette application pour se connecter à un ou plusieurs répertoires LDAP ou Active Directories via une interface LDAP. Les attributs tels que le quota utilisateur, l'e-mail, les images d'avatar, les adhésions de groupe et plus peuvent être envoyés sur Nextcloud à partir d'un répertoire avec les requêtes et les filtres appropriés.\n\nUn utilisateur se connecte à Nextcloud avec ses identifiants LDAP ou AD et obtient l'accès sur la base d'une demande d'authentification gérée par le serveur LDAP ou AD. Nextcloud ne stocke pas les mots de passe LDAP ou AD, mais ces informations d'identification sont utilisées pour authentifier un utilisateur et Nextcloud utilise ensuite une session pour l'ID utilisateur. De plus amples informations sont disponibles dans la documentation LDAP User and Group Backend.", "Test Configuration" : "Tester la configuration", "Help" : "Aide", "Groups meeting these criteria are available in %s:" : "Les groupes respectant ces critères sont disponibles dans %s :", @@ -171,7 +171,7 @@ "Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute." : "Laissez vide pour appliquer le quota par défaut de l'utilisateur. Sinon, spécifiez un attribut LDAP / AD.", "Quota Default" : "Quota par défaut", "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Remplacez le quota par défaut des utilisateurs LDAP qui ne disposent pas d'un quota dans le champ Quota.", - "Email Field" : "Champ Email", + "Email Field" : "Champ E-mail", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Définissez le courrier électronique de l'utilisateur à partir de leur attribut LDAP. Laissez le champ vide pour appliquer le comportement par défaut.", "User Home Folder Naming Rule" : "Règle de nommage du répertoire utilisateur", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Laisser vide pour le nom d’utilisateur (par défaut). Sinon, spécifiez un attribut LDAP/AD.", diff --git a/apps/user_ldap/l10n/sk.js b/apps/user_ldap/l10n/sk.js index 7e020dfe5e7..7912014a26d 100644 --- a/apps/user_ldap/l10n/sk.js +++ b/apps/user_ldap/l10n/sk.js @@ -60,6 +60,10 @@ OC.L10N.register( "Your password will expire today." : "Vaše heslo expiruje dnes.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."], "LDAP/AD integration" : "Integrácia s LDAP/AD", + "_%n group found_::_%n groups found_" : ["%n nájdená skupina","%n nájdené skupiny","%n nájdených skupín","%n nájdených skupín"], + "> 1000 groups found" : "> 1000 nájdených skupín", + "> 1000 users found" : "> 1000 nájdených užívateľov", + "_%n user found_::_%n users found_" : ["%n nájdený užívateľ","%n nájdený užívatelia","%n nájdených užívateľov","%n nájdených užívateľov"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepodarilo sa zistiť atribút pre zobrazenie mena používateľa. Zadajte ho sami v rozšírených nastaveniach LDAP.", "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", @@ -178,6 +182,7 @@ OC.L10N.register( "\"$home\" Placeholder Field" : "Výplňová kolónka „$home“", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$ home bude v nastavení externého úložiska nahradená hodnotou zadaného atribútu ", "Internal Username" : "Interné používateľské meno", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "V predvolenom nastavení sa interné užívateľské meno vytvorí z atribútu UUID. Zabezpečuje jedinečnosť užívateľského mena a znaky nie je potrebné konvertovať. Interné užívateľské meno má obmedzenia, ktoré povoľujú iba tieto znaky: [a-zA-Z0-9 _. @ -]. Ostatné znaky sa nahradia zodpovedajúcimi znakmi ASCII alebo sa jednoducho vynechajú. Pri konfliktoch bude pridané/zvýšené číslo. Interné užívateľské meno sa používa na internú identifikáciu užívateľa. Je to tiež predvolený názov domovského priečinka užívateľa. Je tiež súčasťou URL, napríklad pre všetky služby * DAV. Týmto nastavením môže byť predvolené správanie zmenené. Zmeny majú vplyv iba na novo namapovaných (pridaných) užívateľov LDAP. Nechajte prázdne ak chcete nechať predvolené nastavenie.", "Internal Username Attribute:" : "Atribút interného používateľského mena:", "Override UUID detection" : "Prepísať UUID detekciu", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "V predvolenom nastavení sa atribút UUID deteguje automaticky. Atribút UUID sa používa na jednoznačnú identifikáciu používateľov a skupín z LDAPu. Naviac sa na základe UUID vytvára aj interné používateľské meno, ak nie je nastavené inak. Môžete predvolené nastavenie prepísať a použiť atribút ktorý si sami zvolíte. Musíte sa ale ubezpečiť, že atribút, ktorý vyberiete, bude uvedený pri používateľoch aj pri skupinách a bude jedinečný. Ak voľbu ponecháte prázdnu, použije sa predvolené správanie. Zmena bude mať vplyv len na novo namapovaných (pridaných) používateľov a skupiny z LDAPu.", diff --git a/apps/user_ldap/l10n/sk.json b/apps/user_ldap/l10n/sk.json index abd385b26c7..23234d8d0ec 100644 --- a/apps/user_ldap/l10n/sk.json +++ b/apps/user_ldap/l10n/sk.json @@ -58,6 +58,10 @@ "Your password will expire today." : "Vaše heslo expiruje dnes.", "_Your password will expire within %n day._::_Your password will expire within %n days._" : ["Vaše heslo expiruje o %n deň.","Vaše heslo expiruje o %n dni.","Vaše heslo expiruje o %n dní.","Vaše heslo expiruje o %n dní."], "LDAP/AD integration" : "Integrácia s LDAP/AD", + "_%n group found_::_%n groups found_" : ["%n nájdená skupina","%n nájdené skupiny","%n nájdených skupín","%n nájdených skupín"], + "> 1000 groups found" : "> 1000 nájdených skupín", + "> 1000 users found" : "> 1000 nájdených užívateľov", + "_%n user found_::_%n users found_" : ["%n nájdený užívateľ","%n nájdený užívatelia","%n nájdených užívateľov","%n nájdených užívateľov"], "Could not detect user display name attribute. Please specify it yourself in advanced LDAP settings." : "Nepodarilo sa zistiť atribút pre zobrazenie mena používateľa. Zadajte ho sami v rozšírených nastaveniach LDAP.", "Could not find the desired feature" : "Nemožno nájsť požadovanú funkciu", "Invalid Host" : "Neplatný hostiteľ", @@ -176,6 +180,7 @@ "\"$home\" Placeholder Field" : "Výplňová kolónka „$home“", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$ home bude v nastavení externého úložiska nahradená hodnotou zadaného atribútu ", "Internal Username" : "Interné používateľské meno", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "V predvolenom nastavení sa interné užívateľské meno vytvorí z atribútu UUID. Zabezpečuje jedinečnosť užívateľského mena a znaky nie je potrebné konvertovať. Interné užívateľské meno má obmedzenia, ktoré povoľujú iba tieto znaky: [a-zA-Z0-9 _. @ -]. Ostatné znaky sa nahradia zodpovedajúcimi znakmi ASCII alebo sa jednoducho vynechajú. Pri konfliktoch bude pridané/zvýšené číslo. Interné užívateľské meno sa používa na internú identifikáciu užívateľa. Je to tiež predvolený názov domovského priečinka užívateľa. Je tiež súčasťou URL, napríklad pre všetky služby * DAV. Týmto nastavením môže byť predvolené správanie zmenené. Zmeny majú vplyv iba na novo namapovaných (pridaných) užívateľov LDAP. Nechajte prázdne ak chcete nechať predvolené nastavenie.", "Internal Username Attribute:" : "Atribút interného používateľského mena:", "Override UUID detection" : "Prepísať UUID detekciu", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "V predvolenom nastavení sa atribút UUID deteguje automaticky. Atribút UUID sa používa na jednoznačnú identifikáciu používateľov a skupín z LDAPu. Naviac sa na základe UUID vytvára aj interné používateľské meno, ak nie je nastavené inak. Môžete predvolené nastavenie prepísať a použiť atribút ktorý si sami zvolíte. Musíte sa ale ubezpečiť, že atribút, ktorý vyberiete, bude uvedený pri používateľoch aj pri skupinách a bude jedinečný. Ak voľbu ponecháte prázdnu, použije sa predvolené správanie. Zmena bude mať vplyv len na novo namapovaných (pridaných) používateľov a skupiny z LDAPu.", diff --git a/apps/user_ldap/l10n/uk.js b/apps/user_ldap/l10n/uk.js index d55bc81c951..2981549f2dd 100644 --- a/apps/user_ldap/l10n/uk.js +++ b/apps/user_ldap/l10n/uk.js @@ -80,7 +80,7 @@ OC.L10N.register( "Selected groups" : "Обрані групи", "Edit LDAP Query" : "Редагувати запит LDAP", "LDAP Filter:" : "LDAP фільтр:", - "The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.", + "The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s сервера.", "Verify settings and count the groups" : "Перевірити налаштування та порахувати групи", "When logging in, %s will find the user based on the following attributes:" : "Під час входу в систему %s знайде користувача за такими атрибутами:", "LDAP/AD Username:" : "Ім'я користувача LDAP/AD:", @@ -94,7 +94,7 @@ OC.L10N.register( "%s. Server:" : "%s. Сервер:", "Add a new configuration" : "Додати нову конфігурацію", "Copy current configuration into new directory binding" : "Скопіюйте поточну конфігурацію в новий каталог", - "Delete the current configuration" : "Видалити поточну конфігурацію", + "Delete the current configuration" : "Вилучити поточну конфігурацію", "Host" : "Хост", "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Ви можете не вказувати протокол, якщо вам не потрібен SSL. Якщо так, починайте з ldaps://", "Port" : "Порт", @@ -112,7 +112,7 @@ OC.L10N.register( "Manually enter LDAP filters (recommended for large directories)" : "Вручну введіть фільтри LDAP (рекомендується для великих каталогів)", "Listing and searching for users is constrained by these criteria:" : "Перелік і пошук користувачів обмежені такими критеріями:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Найпоширенішими класами об’єктів для користувачів є organizationalPerson, person, user і inetOrgPerson. Якщо ви не впевнені, який клас об’єктів вибрати, зверніться до свого адміністратора каталогу.", - "The filter specifies which LDAP users shall have access to the %s instance." : "Фільтр визначає, які користувачі LDAP повинні мати доступ до примірника %s.", + "The filter specifies which LDAP users shall have access to the %s instance." : "Фільтр визначає, які користувачі LDAP повинні мати доступ до сервера %s.", "Verify settings and count users" : "Перевірити налаштування та порахувати користувачів", "Saving" : "Збереження", "Back" : "Назад", @@ -177,12 +177,12 @@ OC.L10N.register( "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Перевизначити квоту за замовчуванням для користувачів LDAP, які не мають квоти, встановленої в полі квоти.", "Email Field" : "Поле E-mail", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Установіть електронну пошту користувача з його атрибута LDAP. Залиште поле порожнім для поведінки за умовчанням.", - "User Home Folder Naming Rule" : "Правило іменування домашньої теки користувача", + "User Home Folder Naming Rule" : "Правило іменування домашнього каталогу користувача", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Залиште порожнім для імені користувача (за замовчуванням). В іншому випадку вкажіть атрибут LDAP/AD.", "\"$home\" Placeholder Field" : "Поле заповнювача \"$home\".", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home у конфігурації зовнішнього сховища буде замінено на значення вказаного атрибута", "Internal Username" : "Внутрішня Ім'я користувача", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашньої папки користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.", "Internal Username Attribute:" : "Внутрішня Ім'я користувача, Атрибут:", "Override UUID detection" : "Перекрити вивід UUID ", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "За замовчуванням ownCloud визначає атрибут UUID автоматично. Цей атрибут використовується для того, щоб достовірно ідентифікувати користувачів і групи LDAP. Також на підставі атрибута UUID створюється внутрішнє ім'я користувача, якщо вище не вказано інакше. Ви можете перевизначити це налаштування та вказати свій атрибут за вибором. Ви повинні упевнитися, що обраний вами атрибут може бути вибраний для користувачів і груп, а також те, що він унікальний. Залиште поле порожнім для поведінки за замовчуванням. Зміни вступлять в силу тільки для нових підключених (доданих) користувачів і груп LDAP.", @@ -192,6 +192,6 @@ OC.L10N.register( "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Імена користувачів використовуються для зберігання та призначення метаданих. Для точної ідентифікації та розпізнавання користувачів кожен користувач LDAP матиме внутрішнє ім’я користувача. Для цього потрібне зіставлення імені користувача з користувачем LDAP. Створене ім’я користувача зіставляється з UUID користувача LDAP. Крім того, DN також кешується, щоб зменшити взаємодію LDAP, але він не використовується для ідентифікації. Якщо DN змінюється, зміни будуть знайдені. Внутрішнє ім'я користувача використовується всюди. Очищення зіставлення залишить залишки всюди. Очищення зіставлення не залежить від конфігурації, воно впливає на всі конфігурації LDAP! Ніколи не очищайте зіставлення у виробничому середовищі, лише на стадії тестування чи експерименту.", "Clear Username-LDAP User Mapping" : "Очистити картографію Імен користувачів-LDAP", "Clear Groupname-LDAP Group Mapping" : "Очистити картографію Імен груп-LDAP", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашньої папки користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб *DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням." + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб *DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням." }, "nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);"); diff --git a/apps/user_ldap/l10n/uk.json b/apps/user_ldap/l10n/uk.json index 5b1330d61aa..4b697024c11 100644 --- a/apps/user_ldap/l10n/uk.json +++ b/apps/user_ldap/l10n/uk.json @@ -78,7 +78,7 @@ "Selected groups" : "Обрані групи", "Edit LDAP Query" : "Редагувати запит LDAP", "LDAP Filter:" : "LDAP фільтр:", - "The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s примірника.", + "The filter specifies which LDAP groups shall have access to the %s instance." : "Фільтр визначає, які LDAP групи повинні мати доступ до %s сервера.", "Verify settings and count the groups" : "Перевірити налаштування та порахувати групи", "When logging in, %s will find the user based on the following attributes:" : "Під час входу в систему %s знайде користувача за такими атрибутами:", "LDAP/AD Username:" : "Ім'я користувача LDAP/AD:", @@ -92,7 +92,7 @@ "%s. Server:" : "%s. Сервер:", "Add a new configuration" : "Додати нову конфігурацію", "Copy current configuration into new directory binding" : "Скопіюйте поточну конфігурацію в новий каталог", - "Delete the current configuration" : "Видалити поточну конфігурацію", + "Delete the current configuration" : "Вилучити поточну конфігурацію", "Host" : "Хост", "You can omit the protocol, unless you require SSL. If so, start with ldaps://" : "Ви можете не вказувати протокол, якщо вам не потрібен SSL. Якщо так, починайте з ldaps://", "Port" : "Порт", @@ -110,7 +110,7 @@ "Manually enter LDAP filters (recommended for large directories)" : "Вручну введіть фільтри LDAP (рекомендується для великих каталогів)", "Listing and searching for users is constrained by these criteria:" : "Перелік і пошук користувачів обмежені такими критеріями:", "The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin." : "Найпоширенішими класами об’єктів для користувачів є organizationalPerson, person, user і inetOrgPerson. Якщо ви не впевнені, який клас об’єктів вибрати, зверніться до свого адміністратора каталогу.", - "The filter specifies which LDAP users shall have access to the %s instance." : "Фільтр визначає, які користувачі LDAP повинні мати доступ до примірника %s.", + "The filter specifies which LDAP users shall have access to the %s instance." : "Фільтр визначає, які користувачі LDAP повинні мати доступ до сервера %s.", "Verify settings and count users" : "Перевірити налаштування та порахувати користувачів", "Saving" : "Збереження", "Back" : "Назад", @@ -175,12 +175,12 @@ "Override default quota for LDAP users who do not have a quota set in the Quota Field." : "Перевизначити квоту за замовчуванням для користувачів LDAP, які не мають квоти, встановленої в полі квоти.", "Email Field" : "Поле E-mail", "Set the user's email from their LDAP attribute. Leave it empty for default behaviour." : "Установіть електронну пошту користувача з його атрибута LDAP. Залиште поле порожнім для поведінки за умовчанням.", - "User Home Folder Naming Rule" : "Правило іменування домашньої теки користувача", + "User Home Folder Naming Rule" : "Правило іменування домашнього каталогу користувача", "Leave empty for username (default). Otherwise, specify an LDAP/AD attribute." : "Залиште порожнім для імені користувача (за замовчуванням). В іншому випадку вкажіть атрибут LDAP/AD.", "\"$home\" Placeholder Field" : "Поле заповнювача \"$home\".", "$home in an external storage configuration will be replaced with the value of the specified attribute" : "$home у конфігурації зовнішнього сховища буде замінено на значення вказаного атрибута", "Internal Username" : "Внутрішня Ім'я користувача", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашньої папки користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.", + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням.", "Internal Username Attribute:" : "Внутрішня Ім'я користувача, Атрибут:", "Override UUID detection" : "Перекрити вивід UUID ", "By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups." : "За замовчуванням ownCloud визначає атрибут UUID автоматично. Цей атрибут використовується для того, щоб достовірно ідентифікувати користувачів і групи LDAP. Також на підставі атрибута UUID створюється внутрішнє ім'я користувача, якщо вище не вказано інакше. Ви можете перевизначити це налаштування та вказати свій атрибут за вибором. Ви повинні упевнитися, що обраний вами атрибут може бути вибраний для користувачів і груп, а також те, що він унікальний. Залиште поле порожнім для поведінки за замовчуванням. Зміни вступлять в силу тільки для нових підключених (доданих) користувачів і груп LDAP.", @@ -190,6 +190,6 @@ "Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage." : "Імена користувачів використовуються для зберігання та призначення метаданих. Для точної ідентифікації та розпізнавання користувачів кожен користувач LDAP матиме внутрішнє ім’я користувача. Для цього потрібне зіставлення імені користувача з користувачем LDAP. Створене ім’я користувача зіставляється з UUID користувача LDAP. Крім того, DN також кешується, щоб зменшити взаємодію LDAP, але він не використовується для ідентифікації. Якщо DN змінюється, зміни будуть знайдені. Внутрішнє ім'я користувача використовується всюди. Очищення зіставлення залишить залишки всюди. Очищення зіставлення не залежить від конфігурації, воно впливає на всі конфігурації LDAP! Ніколи не очищайте зіставлення у виробничому середовищі, лише на стадії тестування чи експерименту.", "Clear Username-LDAP User Mapping" : "Очистити картографію Імен користувачів-LDAP", "Clear Groupname-LDAP Group Mapping" : "Очистити картографію Імен груп-LDAP", - "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашньої папки користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб *DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням." + "By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all *DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior." : "За замовчуванням внутрішнє ім’я користувача буде створено з атрибута UUID. Це гарантує, що ім’я користувача є унікальним і символи не потрібно конвертувати. Внутрішнє ім’я користувача має обмеження щодо дозволених лише таких символів: [a-zA-Z0-9_.@-]. Інші символи замінюються відповідністю ASCII або просто пропускаються. При зіткненнях число буде додано/збільшено. Внутрішнє ім’я користувача використовується для внутрішньої ідентифікації користувача. Це також назва за замовчуванням для домашнього каталогу користувача. Це також частина віддалених URL-адрес, наприклад, для всіх служб *DAV. За допомогою цього параметра поведінку за замовчуванням можна змінити. Зміни діятимуть лише для нещодавно зіставлених (доданих) користувачів LDAP. Залиште поле порожнім для поведінки за замовчуванням." },"pluralForm" :"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);" }
\ No newline at end of file diff --git a/apps/user_status/l10n/ca.js b/apps/user_status/l10n/ca.js index 7bcf33baf25..85a54be70d7 100644 --- a/apps/user_status/l10n/ca.js +++ b/apps/user_status/l10n/ca.js @@ -3,27 +3,27 @@ OC.L10N.register( { "Recent statuses" : "Estats recents", "In a meeting" : "En una reunió", - "Commuting" : "Trajecte", - "Out sick" : "Fora malalt", - "Vacationing" : "Vacances", - "Working remotely" : "Treballant a distància", + "Commuting" : "En desplaçament", + "Out sick" : "No disponible per malaltia", + "Vacationing" : "De vacances", + "Working remotely" : "Treballant en remot", "In a call" : "En una trucada", "User status" : "Estat de l'usuari", "View profile" : "Visualitza el perfil", - "Clear status after" : "Esborra l'estat després", + "Clear status after" : "Esborra l'estat després de", "What is your status?" : "Quin és el vostre estat?", - "Set status" : "Estableix l'estat", + "Set status" : "Indica l'estat", "Online status" : "Estat en línia", "Status message" : "Missatge d'estat", - "Clear status message" : "Esborrar el missatge d'estat", - "Set status message" : "Estableix un missatge d'estat", + "Clear status message" : "Esborra el missatge d'estat", + "Set status message" : "Indica el missatge d'estat", "There was an error saving the status" : "S'ha produït un error en desar l'estat", "There was an error clearing the status" : "S'ha produït un error en esborrar l'estat", - "No recent status changes" : "No hi ha canvis d'estat recents", + "No recent status changes" : "No hi ha cap canvi d'estat recent", "Away" : "Absent", "Do not disturb" : "No molesteu", "{status}, {timestamp}" : "{status}, {timestamp}", - "Don't clear" : "No esborrar", + "Don't clear" : "No l'esborris", "Today" : "Avui", "This week" : "Aquesta setmana", "Online" : "En línia", @@ -33,9 +33,9 @@ OC.L10N.register( "30 minutes" : "30 minuts", "1 hour" : "1 hora", "4 hours" : "4 hores", - "Mute all notifications" : "Silenciar totes les notificacions", - "Appear offline" : "Apareix com \"desconnectat\"", - "Clear status message after" : "Esborra el missatge d'estat després", - "What's your status?" : "Quin és el teu estat?" + "Mute all notifications" : "Silencia totes les notificacions", + "Appear offline" : "Apareix fora de línia", + "Clear status message after" : "Esborra el missatge d'estat després de", + "What's your status?" : "Quin és el vostre estat?" }, "nplurals=2; plural=(n != 1);"); diff --git a/apps/user_status/l10n/ca.json b/apps/user_status/l10n/ca.json index 461e8eb0999..5ebf9f10566 100644 --- a/apps/user_status/l10n/ca.json +++ b/apps/user_status/l10n/ca.json @@ -1,27 +1,27 @@ { "translations": { "Recent statuses" : "Estats recents", "In a meeting" : "En una reunió", - "Commuting" : "Trajecte", - "Out sick" : "Fora malalt", - "Vacationing" : "Vacances", - "Working remotely" : "Treballant a distància", + "Commuting" : "En desplaçament", + "Out sick" : "No disponible per malaltia", + "Vacationing" : "De vacances", + "Working remotely" : "Treballant en remot", "In a call" : "En una trucada", "User status" : "Estat de l'usuari", "View profile" : "Visualitza el perfil", - "Clear status after" : "Esborra l'estat després", + "Clear status after" : "Esborra l'estat després de", "What is your status?" : "Quin és el vostre estat?", - "Set status" : "Estableix l'estat", + "Set status" : "Indica l'estat", "Online status" : "Estat en línia", "Status message" : "Missatge d'estat", - "Clear status message" : "Esborrar el missatge d'estat", - "Set status message" : "Estableix un missatge d'estat", + "Clear status message" : "Esborra el missatge d'estat", + "Set status message" : "Indica el missatge d'estat", "There was an error saving the status" : "S'ha produït un error en desar l'estat", "There was an error clearing the status" : "S'ha produït un error en esborrar l'estat", - "No recent status changes" : "No hi ha canvis d'estat recents", + "No recent status changes" : "No hi ha cap canvi d'estat recent", "Away" : "Absent", "Do not disturb" : "No molesteu", "{status}, {timestamp}" : "{status}, {timestamp}", - "Don't clear" : "No esborrar", + "Don't clear" : "No l'esborris", "Today" : "Avui", "This week" : "Aquesta setmana", "Online" : "En línia", @@ -31,9 +31,9 @@ "30 minutes" : "30 minuts", "1 hour" : "1 hora", "4 hours" : "4 hores", - "Mute all notifications" : "Silenciar totes les notificacions", - "Appear offline" : "Apareix com \"desconnectat\"", - "Clear status message after" : "Esborra el missatge d'estat després", - "What's your status?" : "Quin és el teu estat?" + "Mute all notifications" : "Silencia totes les notificacions", + "Appear offline" : "Apareix fora de línia", + "Clear status message after" : "Esborra el missatge d'estat després de", + "What's your status?" : "Quin és el vostre estat?" },"pluralForm" :"nplurals=2; plural=(n != 1);" }
\ No newline at end of file diff --git a/apps/user_status/l10n/ru.js b/apps/user_status/l10n/ru.js index 28a181e9188..ae9d9305883 100644 --- a/apps/user_status/l10n/ru.js +++ b/apps/user_status/l10n/ru.js @@ -7,7 +7,7 @@ OC.L10N.register( "Out sick" : "Болею", "Vacationing" : "В отпуске", "Working remotely" : "Удалённая работа", - "In a call" : "Вызывать", + "In a call" : "В звонке", "User status" : "Статус пользователя", "View profile" : "Открыть профиль", "Clear status after" : "Удалить статус через", diff --git a/apps/user_status/l10n/ru.json b/apps/user_status/l10n/ru.json index 380a4ba6b98..cd953dec497 100644 --- a/apps/user_status/l10n/ru.json +++ b/apps/user_status/l10n/ru.json @@ -5,7 +5,7 @@ "Out sick" : "Болею", "Vacationing" : "В отпуске", "Working remotely" : "Удалённая работа", - "In a call" : "Вызывать", + "In a call" : "В звонке", "User status" : "Статус пользователя", "View profile" : "Открыть профиль", "Clear status after" : "Удалить статус через", diff --git a/apps/weather_status/l10n/sk.js b/apps/weather_status/l10n/sk.js index 115e2e29ea1..37e071efd21 100644 --- a/apps/weather_status/l10n/sk.js +++ b/apps/weather_status/l10n/sk.js @@ -21,6 +21,18 @@ OC.L10N.register( "{temperature} {unit} partly cloudy" : "{temperature} {unit} čiastočne zamračené", "{temperature} {unit} foggy later today" : "{temperature} {unit} hmlisto, neskôr v priebehu dňa", "{temperature} {unit} foggy" : "{temperature} {unit} hmlisto", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} dnes neskôr slabé zrážky", + "{temperature} {unit} light rainfall" : "{temperature} {unit} slabé zrážky", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} srážky, neskôr v priebehu dňa", + "{temperature} {unit} rainfall" : "{temperature} {unit} zrážky", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} silné zrážky, neskôr v priebehu dňa", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} silné zrážky", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} dažďové prehánky dnes", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} dažďové prehánky", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} dnes slabé dažďové prehánky", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} slabé dažďové prehánky", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} silné dažďové prehánky, neskôr v priebehu dňa", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} silné dažďové prehánky", "More weather for {adr}" : "Viac o počasí pre {adr}", "Loading weather" : "Načítava sa počasie", "Remove from favorites" : "Odstrániť z obľúbených", diff --git a/apps/weather_status/l10n/sk.json b/apps/weather_status/l10n/sk.json index bb48b57283c..85f5d5f0e73 100644 --- a/apps/weather_status/l10n/sk.json +++ b/apps/weather_status/l10n/sk.json @@ -19,6 +19,18 @@ "{temperature} {unit} partly cloudy" : "{temperature} {unit} čiastočne zamračené", "{temperature} {unit} foggy later today" : "{temperature} {unit} hmlisto, neskôr v priebehu dňa", "{temperature} {unit} foggy" : "{temperature} {unit} hmlisto", + "{temperature} {unit} light rainfall later today" : "{temperature} {unit} dnes neskôr slabé zrážky", + "{temperature} {unit} light rainfall" : "{temperature} {unit} slabé zrážky", + "{temperature} {unit} rainfall later today" : "{temperature} {unit} srážky, neskôr v priebehu dňa", + "{temperature} {unit} rainfall" : "{temperature} {unit} zrážky", + "{temperature} {unit} heavy rainfall later today" : "{temperature} {unit} silné zrážky, neskôr v priebehu dňa", + "{temperature} {unit} heavy rainfall" : "{temperature} {unit} silné zrážky", + "{temperature} {unit} rainfall showers later today" : "{temperature} {unit} dažďové prehánky dnes", + "{temperature} {unit} rainfall showers" : "{temperature} {unit} dažďové prehánky", + "{temperature} {unit} light rainfall showers later today" : "{temperature} {unit} dnes slabé dažďové prehánky", + "{temperature} {unit} light rainfall showers" : "{temperature} {unit} slabé dažďové prehánky", + "{temperature} {unit} heavy rainfall showers later today" : "{temperature} {unit} silné dažďové prehánky, neskôr v priebehu dňa", + "{temperature} {unit} heavy rainfall showers" : "{temperature} {unit} silné dažďové prehánky", "More weather for {adr}" : "Viac o počasí pre {adr}", "Loading weather" : "Načítava sa počasie", "Remove from favorites" : "Odstrániť z obľúbených", diff --git a/apps/weather_status/l10n/uk.js b/apps/weather_status/l10n/uk.js index 02983a44936..24a6062538d 100644 --- a/apps/weather_status/l10n/uk.js +++ b/apps/weather_status/l10n/uk.js @@ -7,7 +7,7 @@ OC.L10N.register( "Error" : "Помилка", "Weather status" : "Прогноз погоди", "Weather status in your dashboard" : "Статус погоди на вашій інформаційній панелі", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Статус погоди інтегрований у програму Dashboard. Позиція користувача може бути визначена автоматично або вручну. Потім відображається прогноз на 6 годин. Цей статус також можна інтегрувати в інші місця, як-от додаток Календар.", + "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Статус погоди інтегрований до застосунку з панеллю віджетів (Dashboard). Розташування користувача може визначатися автоматично або вручну. В застосунку показується прогноз на 6 годин.\nСтатус може показуватися й інших застосунках, як-от у \"Календарі\".", "Detect location" : "Визначити місцезнаходження", "Set custom address" : "Встановити власну адресу", "Favorites" : "Улюблене", diff --git a/apps/weather_status/l10n/uk.json b/apps/weather_status/l10n/uk.json index 9726e3112d3..b0d695589f7 100644 --- a/apps/weather_status/l10n/uk.json +++ b/apps/weather_status/l10n/uk.json @@ -5,7 +5,7 @@ "Error" : "Помилка", "Weather status" : "Прогноз погоди", "Weather status in your dashboard" : "Статус погоди на вашій інформаційній панелі", - "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Статус погоди інтегрований у програму Dashboard. Позиція користувача може бути визначена автоматично або вручну. Потім відображається прогноз на 6 годин. Цей статус також можна інтегрувати в інші місця, як-от додаток Календар.", + "Weather status integrated in the Dashboard app.\n User's position can be automatically determined or manually defined. A 6 hours forecast is then displayed.\n This status can also be integrated in other places like the Calendar app." : "Статус погоди інтегрований до застосунку з панеллю віджетів (Dashboard). Розташування користувача може визначатися автоматично або вручну. В застосунку показується прогноз на 6 годин.\nСтатус може показуватися й інших застосунках, як-от у \"Календарі\".", "Detect location" : "Визначити місцезнаходження", "Set custom address" : "Встановити власну адресу", "Favorites" : "Улюблене", diff --git a/apps/workflowengine/l10n/cs.js b/apps/workflowengine/l10n/cs.js index 9956f6bb378..ed20480967a 100644 --- a/apps/workflowengine/l10n/cs.js +++ b/apps/workflowengine/l10n/cs.js @@ -4,7 +4,7 @@ OC.L10N.register( "The given operator is invalid" : "Zadaný operátor není platný", "The given regular expression is invalid" : "Zadaný regulární výraz není platný", "The given file size is invalid" : "Zadaná velikost souboru není platná", - "The given tag id is invalid" : "Zadaný identifikátor značky není platný", + "The given tag id is invalid" : "Zadaný identifikátor štítku není platný", "The given IP range is invalid" : "Zadaný rozsah IP adres není platný", "The given IP range is not valid for IPv4" : "Zadaný rozsah IP adres není pro IPv4 platný", "The given IP range is not valid for IPv6" : "Zadaný rozsah IP adres není pro IPv6 platný", @@ -106,8 +106,8 @@ OC.L10N.register( "matches IPv6" : "odpovídá IPv6", "does not match IPv6" : "neodpovídá IPv6", "File system tag" : "Štítek souborového systému", - "is tagged with" : "je označeno jako", - "is not tagged with" : "není označeno", + "is tagged with" : "je označeno štítkem", + "is not tagged with" : "není označeno štítkem", "Request URL" : "URL požadavku", "Request time" : "Čas požadavku", "between" : "mezi", diff --git a/apps/workflowengine/l10n/cs.json b/apps/workflowengine/l10n/cs.json index bfb5d2470cd..5e8d1f84a64 100644 --- a/apps/workflowengine/l10n/cs.json +++ b/apps/workflowengine/l10n/cs.json @@ -2,7 +2,7 @@ "The given operator is invalid" : "Zadaný operátor není platný", "The given regular expression is invalid" : "Zadaný regulární výraz není platný", "The given file size is invalid" : "Zadaná velikost souboru není platná", - "The given tag id is invalid" : "Zadaný identifikátor značky není platný", + "The given tag id is invalid" : "Zadaný identifikátor štítku není platný", "The given IP range is invalid" : "Zadaný rozsah IP adres není platný", "The given IP range is not valid for IPv4" : "Zadaný rozsah IP adres není pro IPv4 platný", "The given IP range is not valid for IPv6" : "Zadaný rozsah IP adres není pro IPv6 platný", @@ -104,8 +104,8 @@ "matches IPv6" : "odpovídá IPv6", "does not match IPv6" : "neodpovídá IPv6", "File system tag" : "Štítek souborového systému", - "is tagged with" : "je označeno jako", - "is not tagged with" : "není označeno", + "is tagged with" : "je označeno štítkem", + "is not tagged with" : "není označeno štítkem", "Request URL" : "URL požadavku", "Request time" : "Čas požadavku", "between" : "mezi", diff --git a/apps/workflowengine/l10n/el.js b/apps/workflowengine/l10n/el.js index f9891f42532..cb3d2237105 100644 --- a/apps/workflowengine/l10n/el.js +++ b/apps/workflowengine/l10n/el.js @@ -54,6 +54,7 @@ OC.L10N.register( "Images" : "Εικόνες", "Office documents" : "Έγγραφα γραφείου", "PDF documents" : "Έγγραφα PDF", + "Custom MIME type" : "Προσαρμοσμένος τύπος MIME", "Custom mimetype" : "Προσαρμοσμένος τύπος mime", "Select a tag" : "Επιλογή ετικέτας", "No results" : "Κανένα αποτέλεσμα", diff --git a/apps/workflowengine/l10n/el.json b/apps/workflowengine/l10n/el.json index 0e8cdb90512..a91a226066c 100644 --- a/apps/workflowengine/l10n/el.json +++ b/apps/workflowengine/l10n/el.json @@ -52,6 +52,7 @@ "Images" : "Εικόνες", "Office documents" : "Έγγραφα γραφείου", "PDF documents" : "Έγγραφα PDF", + "Custom MIME type" : "Προσαρμοσμένος τύπος MIME", "Custom mimetype" : "Προσαρμοσμένος τύπος mime", "Select a tag" : "Επιλογή ετικέτας", "No results" : "Κανένα αποτέλεσμα", diff --git a/apps/workflowengine/l10n/sk.js b/apps/workflowengine/l10n/sk.js index 8955d8423e5..2a11cbd46b1 100644 --- a/apps/workflowengine/l10n/sk.js +++ b/apps/workflowengine/l10n/sk.js @@ -54,6 +54,7 @@ OC.L10N.register( "Images" : "Obrázky", "Office documents" : "Dokumenty Office", "PDF documents" : "Dokumenty PDF", + "Custom MIME type" : "Vlastný typ MIME", "Custom mimetype" : "Vlastné typy mime", "Select a tag" : "Vyber štítok", "No results" : "Žiadne výsledky", diff --git a/apps/workflowengine/l10n/sk.json b/apps/workflowengine/l10n/sk.json index 385ccd76d76..46d2f1ea5a2 100644 --- a/apps/workflowengine/l10n/sk.json +++ b/apps/workflowengine/l10n/sk.json @@ -52,6 +52,7 @@ "Images" : "Obrázky", "Office documents" : "Dokumenty Office", "PDF documents" : "Dokumenty PDF", + "Custom MIME type" : "Vlastný typ MIME", "Custom mimetype" : "Vlastné typy mime", "Select a tag" : "Vyber štítok", "No results" : "Žiadne výsledky", diff --git a/apps/workflowengine/l10n/uk.js b/apps/workflowengine/l10n/uk.js index 4abbb51a5f7..b6d39181e8a 100644 --- a/apps/workflowengine/l10n/uk.js +++ b/apps/workflowengine/l10n/uk.js @@ -23,12 +23,13 @@ OC.L10N.register( "Someone" : "Хтось", "Operation #%s does not exist" : "Операція №%s не існує", "Operation %s does not exist" : "Операція %s не існує", + "Check %s does not exist" : "Перевірка %s не існує", "Check %s is invalid" : "Чек %s недійсний", "Check #%s does not exist" : "Перевірка №%s не існує", "Check %s is invalid or does not exist" : "Чек %s недійсний або не існує", "Flow" : "Процеси", "Nextcloud workflow engine" : "Керування робочими процесами у Nextcloud", - "Folder" : "Папка", + "Folder" : "Каталог", "Images" : "Зображення", "No results" : "Немає результатів", "%s (invisible)" : "%s (невидимий)", diff --git a/apps/workflowengine/l10n/uk.json b/apps/workflowengine/l10n/uk.json index 7b356b53821..3f536e55d25 100644 --- a/apps/workflowengine/l10n/uk.json +++ b/apps/workflowengine/l10n/uk.json @@ -21,12 +21,13 @@ "Someone" : "Хтось", "Operation #%s does not exist" : "Операція №%s не існує", "Operation %s does not exist" : "Операція %s не існує", + "Check %s does not exist" : "Перевірка %s не існує", "Check %s is invalid" : "Чек %s недійсний", "Check #%s does not exist" : "Перевірка №%s не існує", "Check %s is invalid or does not exist" : "Чек %s недійсний або не існує", "Flow" : "Процеси", "Nextcloud workflow engine" : "Керування робочими процесами у Nextcloud", - "Folder" : "Папка", + "Folder" : "Каталог", "Images" : "Зображення", "No results" : "Немає результатів", "%s (invisible)" : "%s (невидимий)", diff --git a/build/psalm-baseline.xml b/build/psalm-baseline.xml index ac4a7fafcdf..61d1a7061ef 100644 --- a/build/psalm-baseline.xml +++ b/build/psalm-baseline.xml @@ -148,9 +148,6 @@ <code>null</code> <code>null</code> </NullableReturnStatement> - <RedundantCast occurrences="1"> - <code>(int)$calendarId</code> - </RedundantCast> <UndefinedFunction occurrences="4"> <code>Uri\split($principalUri)</code> <code>Uri\split($row['principaluri'])</code> diff --git a/core/css/guest.css b/core/css/guest.css index 3883d66000e..c0a24e0d70c 100644 --- a/core/css/guest.css +++ b/core/css/guest.css @@ -23,7 +23,7 @@ body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; color: var(--color-text); text-align: center; - background-color: var(--color-primary); + background-color: var(--color-main-background-not-plain, var(--color-primary)); background-image: var(--image-background, var(--image-background-plain, url('../../../core/img/app-background.jpg'), linear-gradient(40deg, #0082c9 0%, #30b6ff 100%))); background-attachment: fixed; min-height: 100%; /* fix sticky footer */ diff --git a/core/l10n/da.js b/core/l10n/da.js index 78de0546fb1..abd4f5c8535 100644 --- a/core/l10n/da.js +++ b/core/l10n/da.js @@ -116,6 +116,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Din datamappe og filer er sandsynligvis tilgængelige fra internettet. .htaccess-filen virker ikke. Det anbefales kraftigt, at du konfigurerer din webserver, så databiblioteket ikke længere er tilgængeligt, eller flytter databiblioteket uden for webserverens dokumentrod.", "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" er ikke konfigureret til at være lig med \"{expected}\". Dette er en potentiel sikkerhedsrisiko, og vi anbefaler at du justerer denne indstilling.", "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" er ikke konfigureret til at være lig med \"{expected}\". Dette er en potentiel sikkerhedsrisiko, og vi anbefaler at du justerer denne indstilling.", + "The \"{header}\" HTTP header does not contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" mangler \"{expected}\". Dette er en potentiel sikkerhedsrisiko. Det er anbefalet at du justerer denne indstilling.", "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the {linkstart}W3C Recommendation ↗{linkend}." : "HTTP-headeren \"{header}\" er ikke indstillet til \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" eller \"{val5}\". Dette kan lække henvisningsoplysninger. Se {linkstart}W3C-anbefalingen ↗{linkend}.", "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the {linkstart}security tips ↗{linkend}." : "HTTP-headeren \"Strict-Transport-Security\" er ikke indstillet til mindst \"{seconds}\" sekunder. For øget sikkerhed anbefales det at aktivere HSTS som beskrevet i {linkstart}sikkerhedstip ↗{linkend}.", "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the {linkstart}security tips ↗{linkend}." : "Adgang til webstedet usikkert via HTTP. Du rådes kraftigt til at konfigurere din server til at kræve HTTPS i stedet, som beskrevet i {linkstart}sikkerhedstip ↗{linkend}.", @@ -144,6 +145,8 @@ OC.L10N.register( "Please contact your administrator." : "Kontakt venligst din administrator.", "An internal error occurred." : "Der opstod en intern fejl.", "Please try again or contact your administrator." : "Kontakt venligst din administrator.", + "Log in to {productName}" : "Log in på {productName}", + "Account name or email" : "Brugernavn eller e-mail", "Password" : "Adgangskode", "Wrong username or password." : "Forkert brugernavn eller adgangskode", "User disabled" : "Bruger deaktiveret", @@ -177,6 +180,7 @@ OC.L10N.register( "Keep your colleagues and friends in one place without leaking their private info." : "Saml dine kollegaer og venner på et sted ude at lække deres private informationer.", "Simple email app nicely integrated with Files, Contacts and Calendar." : "Simpel email-app som er integreret med Filer, Kontakter og Kalender.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chat, video kald, skærmdeling, online møder og web konferencer - i din browser og med mobil apps.", + "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Samarbejdsdokumenter, regneark og præsentationer, bygget på Collabora Online.", "Forgot password?" : "Glemt adgangskode?", "Log in with a device" : "Log in med en enhed", "Back" : "Tilbage", diff --git a/core/l10n/da.json b/core/l10n/da.json index fbefc11b2bb..8595d0f60c4 100644 --- a/core/l10n/da.json +++ b/core/l10n/da.json @@ -114,6 +114,7 @@ "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Din datamappe og filer er sandsynligvis tilgængelige fra internettet. .htaccess-filen virker ikke. Det anbefales kraftigt, at du konfigurerer din webserver, så databiblioteket ikke længere er tilgængeligt, eller flytter databiblioteket uden for webserverens dokumentrod.", "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" er ikke konfigureret til at være lig med \"{expected}\". Dette er en potentiel sikkerhedsrisiko, og vi anbefaler at du justerer denne indstilling.", "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" er ikke konfigureret til at være lig med \"{expected}\". Dette er en potentiel sikkerhedsrisiko, og vi anbefaler at du justerer denne indstilling.", + "The \"{header}\" HTTP header does not contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "HTTP-hovedet \"{header}\" mangler \"{expected}\". Dette er en potentiel sikkerhedsrisiko. Det er anbefalet at du justerer denne indstilling.", "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the {linkstart}W3C Recommendation ↗{linkend}." : "HTTP-headeren \"{header}\" er ikke indstillet til \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" eller \"{val5}\". Dette kan lække henvisningsoplysninger. Se {linkstart}W3C-anbefalingen ↗{linkend}.", "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the {linkstart}security tips ↗{linkend}." : "HTTP-headeren \"Strict-Transport-Security\" er ikke indstillet til mindst \"{seconds}\" sekunder. For øget sikkerhed anbefales det at aktivere HSTS som beskrevet i {linkstart}sikkerhedstip ↗{linkend}.", "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the {linkstart}security tips ↗{linkend}." : "Adgang til webstedet usikkert via HTTP. Du rådes kraftigt til at konfigurere din server til at kræve HTTPS i stedet, som beskrevet i {linkstart}sikkerhedstip ↗{linkend}.", @@ -142,6 +143,8 @@ "Please contact your administrator." : "Kontakt venligst din administrator.", "An internal error occurred." : "Der opstod en intern fejl.", "Please try again or contact your administrator." : "Kontakt venligst din administrator.", + "Log in to {productName}" : "Log in på {productName}", + "Account name or email" : "Brugernavn eller e-mail", "Password" : "Adgangskode", "Wrong username or password." : "Forkert brugernavn eller adgangskode", "User disabled" : "Bruger deaktiveret", @@ -175,6 +178,7 @@ "Keep your colleagues and friends in one place without leaking their private info." : "Saml dine kollegaer og venner på et sted ude at lække deres private informationer.", "Simple email app nicely integrated with Files, Contacts and Calendar." : "Simpel email-app som er integreret med Filer, Kontakter og Kalender.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Chat, video kald, skærmdeling, online møder og web konferencer - i din browser og med mobil apps.", + "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Samarbejdsdokumenter, regneark og præsentationer, bygget på Collabora Online.", "Forgot password?" : "Glemt adgangskode?", "Log in with a device" : "Log in med en enhed", "Back" : "Tilbage", diff --git a/core/l10n/el.js b/core/l10n/el.js index 7f061b570d5..3a792783947 100644 --- a/core/l10n/el.js +++ b/core/l10n/el.js @@ -206,6 +206,8 @@ OC.L10N.register( "(all selected)" : "(όλα τα επιλεγμένα)", "({count} selected)" : "({count} επιλέχθηκαν)", "Error loading file exists template" : "Σφάλμα κατά την φόρτωση του προτύπου \"αρχείο υπάρχει\"", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "Pending" : "Εκκρεμεί", "Copy to {folder}" : "Αντιγραφή σε {folder}", "Move to {folder}" : "Μετακίνηση σε {folder}", diff --git a/core/l10n/el.json b/core/l10n/el.json index 047a7886092..3d507eb2da5 100644 --- a/core/l10n/el.json +++ b/core/l10n/el.json @@ -204,6 +204,8 @@ "(all selected)" : "(όλα τα επιλεγμένα)", "({count} selected)" : "({count} επιλέχθηκαν)", "Error loading file exists template" : "Σφάλμα κατά την φόρτωση του προτύπου \"αρχείο υπάρχει\"", + "Show list view" : "Προβολή λίστας", + "Show grid view" : "Προβολή πλέγματος", "Pending" : "Εκκρεμεί", "Copy to {folder}" : "Αντιγραφή σε {folder}", "Move to {folder}" : "Μετακίνηση σε {folder}", diff --git a/core/l10n/fr.js b/core/l10n/fr.js index b9c84fc70c2..31449b314b6 100644 --- a/core/l10n/fr.js +++ b/core/l10n/fr.js @@ -79,7 +79,7 @@ OC.L10N.register( "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "La tâche cron n'a pu s'exécuter via CLI. Ces erreurs techniques sont apparues :", "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "La dernière tâche de fond a été exécutée {relativeTime}. Quelque chose s'est mal passé. {linkstart}Vérifier le réglage des tâches de fond ↗{linkend}.", "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {linkstart}https://nextcloud.com/enterprise{linkend}." : "Ceci est la version communautaire non prise en charge de Nextcloud. Compte tenu de la taille de cette instance, la performance, la fiabilité et la scalabilité ne peuvent être garanties. Les notifications push sont limitées pour éviter de surcharger notre service gratuit. Apprenez-en davantage sur les bénéfices de la version 'Nextcloud Entreprise' sur {linkstart}https://nextcloud.com/enterprise{linkend}.", - "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs points finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", + "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs points finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de stockages externes, les notifications de mises à jour ou l'installation d'applications tierces, ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par e-mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Pas de mémoire cache configurée. Pour améliorer les performances, merci de configurer un memcache, si disponible. Des informations sont disponibles dans la {linkstart}documentation ↗{linkend}.", "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Aucune source appropriée pour l'aléatoire n'a été trouvée par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Des informations complémentaires peuvent être trouvées dans la {linkstart}documentation ↗{linkend}.", "You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Vous disposez actuellement de PHP {version}. Mettez à niveau votre version de PHP pour bénéficier des {linkstart}améliorations de performance et de correctifs de sécurité fournis par le groupe PHP ↗{linkend} dès que votre distribution les supporte.", @@ -314,7 +314,7 @@ OC.L10N.register( "Create an <strong>admin account</strong>" : "Créer un <strong>compte administrateur</strong>", "Username" : "Nom d'utilisateur", "Show password" : "Afficher le mot de passe", - "Toggle password visibility" : "Activer/désactiver la visibilité du mot de passe", + "Toggle password visibility" : "Activer/Désactiver la visibilité du mot de passe", "Storage & database" : "Stockage & base de données", "Data folder" : "Répertoire des données", "Configure the database" : "Configurer la base de données", @@ -386,7 +386,7 @@ OC.L10N.register( "The theme %s has been disabled." : "Le thème %s a été désactivé.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Veuillez vous assurer qu'une copie de sauvegarde de la base de données, du dossier de configuration (config) et du dossier de données (data) a été réalisée avant de commencer.", "Start update" : "Démarrer la mise à jour", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Afin d'éviter les timeouts avec les installations de volume conséquent, vous pouvez exécuter la commande suivante depuis le répertoire d'installation :", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Afin d'éviter les timeout avec les installations de volume conséquent, vous pouvez exécuter la commande suivante depuis le répertoire d'installation :", "Detailed logs" : "Journaux détaillés", "Update needed" : "Mise à jour nécessaire", "Please use the command line updater because you have a big instance with more than 50 users." : "Veuillez utiliser la mise à jour en ligne de commande car votre instance est volumineuse avec plus de 50 utilisateurs.", @@ -398,7 +398,7 @@ OC.L10N.register( "This page will refresh itself when the instance is available again." : "Cette page se rafraîchira d'elle-même lorsque le serveur sera de nouveau disponible.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Veuillez contacter votre administrateur système si ce message persiste ou apparaît de façon inattendue.", "[%d / %d]: Checking table %s" : "[%d / %d] : Vérification de la table %s", - "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs point finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs point finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de stockages externes, les notifications de mises à jour ou l'installation d'applications tierces, ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par e-mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Nextcloud 20 est la dernière version prenant en charge PHP 7.2. Nextcloud 21 nécessite au moins PHP 7.3.", "The PHP OPcache module is not loaded. {linkstart}For better performance it is recommended ↗{linkend} to load it into your PHP installation." : "Le module PHP OPcache n'est pas chargé. {linkstart}Pour de meilleures performances, il est recommandé ↗{linkend} de le charger dans votre installation php.", "The PHP OPcache module is not properly configured. {linkstart}For better performance it is recommended ↗{linkend} to use the following settings in the <code>php.ini</code>:" : "Le module PHP OPcache n'est pas bien configuré. {linkstart}Pour de meilleures performances, il est recommandé ↗{linkend} d'utiliser les paramètres suivants dans le fichier <code>php.ini</code>:", @@ -415,7 +415,7 @@ OC.L10N.register( "Settings menu" : "Menu des paramètres", "The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.", "Setup two-factor authentication" : "Paramétrer l'authentification à double facteur", - "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas prise en charge et les notifications instantanées ne sont pas disponibles.", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas prise en charge et les notifications push ne sont pas disponibles.", "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Il s'agit de la version communautaire non prise en charge de Nextcloud. Compte tenu de la taille de cette instance, les performances, la fiabilité et l'extensibilité ne peuvent être garanties. Les notifications push ont été désactivées pour éviter de surcharger notre service gratuit. Apprenez-en plus sur les avantages de Nextcloud Enterprise sur nextcloud.com/enterprise.", "You haven't added any info yet" : "Vous n'avez pas encore ajouté de données", "{user} hasn't added any info yet" : "{user} n'a pas encore ajouté de données" diff --git a/core/l10n/fr.json b/core/l10n/fr.json index dcb1dc6944c..c5438422323 100644 --- a/core/l10n/fr.json +++ b/core/l10n/fr.json @@ -77,7 +77,7 @@ "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "La tâche cron n'a pu s'exécuter via CLI. Ces erreurs techniques sont apparues :", "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "La dernière tâche de fond a été exécutée {relativeTime}. Quelque chose s'est mal passé. {linkstart}Vérifier le réglage des tâches de fond ↗{linkend}.", "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {linkstart}https://nextcloud.com/enterprise{linkend}." : "Ceci est la version communautaire non prise en charge de Nextcloud. Compte tenu de la taille de cette instance, la performance, la fiabilité et la scalabilité ne peuvent être garanties. Les notifications push sont limitées pour éviter de surcharger notre service gratuit. Apprenez-en davantage sur les bénéfices de la version 'Nextcloud Entreprise' sur {linkstart}https://nextcloud.com/enterprise{linkend}.", - "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs points finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", + "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs points finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de stockages externes, les notifications de mises à jour ou l'installation d'applications tierces, ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par e-mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Pas de mémoire cache configurée. Pour améliorer les performances, merci de configurer un memcache, si disponible. Des informations sont disponibles dans la {linkstart}documentation ↗{linkend}.", "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Aucune source appropriée pour l'aléatoire n'a été trouvée par PHP, ce qui est fortement déconseillé pour des raisons de sécurité. Des informations complémentaires peuvent être trouvées dans la {linkstart}documentation ↗{linkend}.", "You are currently running PHP {version}. Upgrade your PHP version to take advantage of {linkstart}performance and security updates provided by the PHP Group ↗{linkend} as soon as your distribution supports it." : "Vous disposez actuellement de PHP {version}. Mettez à niveau votre version de PHP pour bénéficier des {linkstart}améliorations de performance et de correctifs de sécurité fournis par le groupe PHP ↗{linkend} dès que votre distribution les supporte.", @@ -312,7 +312,7 @@ "Create an <strong>admin account</strong>" : "Créer un <strong>compte administrateur</strong>", "Username" : "Nom d'utilisateur", "Show password" : "Afficher le mot de passe", - "Toggle password visibility" : "Activer/désactiver la visibilité du mot de passe", + "Toggle password visibility" : "Activer/Désactiver la visibilité du mot de passe", "Storage & database" : "Stockage & base de données", "Data folder" : "Répertoire des données", "Configure the database" : "Configurer la base de données", @@ -384,7 +384,7 @@ "The theme %s has been disabled." : "Le thème %s a été désactivé.", "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Veuillez vous assurer qu'une copie de sauvegarde de la base de données, du dossier de configuration (config) et du dossier de données (data) a été réalisée avant de commencer.", "Start update" : "Démarrer la mise à jour", - "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Afin d'éviter les timeouts avec les installations de volume conséquent, vous pouvez exécuter la commande suivante depuis le répertoire d'installation :", + "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Afin d'éviter les timeout avec les installations de volume conséquent, vous pouvez exécuter la commande suivante depuis le répertoire d'installation :", "Detailed logs" : "Journaux détaillés", "Update needed" : "Mise à jour nécessaire", "Please use the command line updater because you have a big instance with more than 50 users." : "Veuillez utiliser la mise à jour en ligne de commande car votre instance est volumineuse avec plus de 50 utilisateurs.", @@ -396,7 +396,7 @@ "This page will refresh itself when the instance is available again." : "Cette page se rafraîchira d'elle-même lorsque le serveur sera de nouveau disponible.", "Contact your system administrator if this message persists or appeared unexpectedly." : "Veuillez contacter votre administrateur système si ce message persiste ou apparaît de façon inattendue.", "[%d / %d]: Checking table %s" : "[%d / %d] : Vérification de la table %s", - "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs point finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de supports de stockage distants, les notifications de mises à jour ou l'installation d'applications tierces ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", + "This server has no working Internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the Internet to enjoy all features." : "Ce serveur ne peut se connecter à Internet : plusieurs point finaux ne peuvent être atteints. Cela signifie que certaines fonctionnalités, telles que le montage de stockages externes, les notifications de mises à jour ou l'installation d'applications tierces, ne fonctionneront pas. L'accès aux fichiers à distance, ainsi que l'envoi de notifications par e-mail peuvent aussi être indisponibles. Il est recommandé d'activer la connexion internet pour ce serveur si vous souhaitez disposer de l'ensemble des fonctionnalités offertes.", "Nextcloud 20 is the last release supporting PHP 7.2. Nextcloud 21 requires at least PHP 7.3." : "Nextcloud 20 est la dernière version prenant en charge PHP 7.2. Nextcloud 21 nécessite au moins PHP 7.3.", "The PHP OPcache module is not loaded. {linkstart}For better performance it is recommended ↗{linkend} to load it into your PHP installation." : "Le module PHP OPcache n'est pas chargé. {linkstart}Pour de meilleures performances, il est recommandé ↗{linkend} de le charger dans votre installation php.", "The PHP OPcache module is not properly configured. {linkstart}For better performance it is recommended ↗{linkend} to use the following settings in the <code>php.ini</code>:" : "Le module PHP OPcache n'est pas bien configuré. {linkstart}Pour de meilleures performances, il est recommandé ↗{linkend} d'utiliser les paramètres suivants dans le fichier <code>php.ini</code>:", @@ -413,7 +413,7 @@ "Settings menu" : "Menu des paramètres", "The password is wrong. Try again." : "Le mot de passe est incorrect. Veuillez réessayer.", "Setup two-factor authentication" : "Paramétrer l'authentification à double facteur", - "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas prise en charge et les notifications instantanées ne sont pas disponibles.", + "This community release of Nextcloud is unsupported and instant notifications are unavailable." : "Cette version communautaire de Nextcloud n'est pas prise en charge et les notifications push ne sont pas disponibles.", "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications have been disabled to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at nextcloud.com/enterprise." : "Il s'agit de la version communautaire non prise en charge de Nextcloud. Compte tenu de la taille de cette instance, les performances, la fiabilité et l'extensibilité ne peuvent être garanties. Les notifications push ont été désactivées pour éviter de surcharger notre service gratuit. Apprenez-en plus sur les avantages de Nextcloud Enterprise sur nextcloud.com/enterprise.", "You haven't added any info yet" : "Vous n'avez pas encore ajouté de données", "{user} hasn't added any info yet" : "{user} n'a pas encore ajouté de données" diff --git a/core/l10n/hu.js b/core/l10n/hu.js index 26864d557a7..3f55de6a62a 100644 --- a/core/l10n/hu.js +++ b/core/l10n/hu.js @@ -116,6 +116,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Az adatkönyvtárai és a fájljai valószínűleg elérhetőek az internetről. A .htaccess fájl nem működik. Erősen javasolt, hogy a webkiszolgálót úgy állítsa be, hogy az adatkönyvtár tartalma ne legyen közvetlenül elérhető, vagy helyezze át a könyvtárat a kiszolgálási területen kívülre.", "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem erre van állítva: „{expected}”. Ez egy lehetséges biztonsági és adatvédelmi kockázat, ezért javasolt, hogy módosítsa megfelelően a beállítást.", "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem erre van állítva: „{expected}”. Egyes szolgáltatások esetleg nem fognak megfelelően működni, ezért javasolt, hogy módosítsa megfelelően a beállítást.", + "The \"{header}\" HTTP header does not contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem tartalmazza ezt: „{expected}”. Ez egy lehetséges biztonsági és adatvédelmi kockázat, ezért javasolt, hogy módosítsa megfelelően a beállítást.", "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the {linkstart}W3C Recommendation ↗{linkend}." : "A „{header}” HTTP-fejléc értéke nem a következők egyiket: „{val1}”, „{val2}”, „{val3}”, „{val4}” vagy „{val5}”. Ez kiszivárogtathatja a hivatkozói információkat. Lásd a {linkstart}W3C ajánlást ↗{linkend}.", "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the {linkstart}security tips ↗{linkend}." : "A „Strict-Transport-Security” HTTP-fejléc nincs beállítva legalább „{seconds}” másodpercre. A fokozott biztonság érdekében ajánlott engedélyezni a HSTS-t a {linkstart}biztonsági tippek ↗{linkend} leírása szerint.", "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the {linkstart}security tips ↗{linkend}." : "A webhely elérése nem biztonságos HTTP-n keresztül. Javasoljuk, hogy úgy állítsa be a kiszolgálót, hogy követelje meg a HTTPS-t, amint azt a {linkstart}biztonsági tippek ↗{linkend} leírják.", @@ -179,6 +180,7 @@ OC.L10N.register( "Keep your colleagues and friends in one place without leaking their private info." : "Tartsa egy helyen kollégáit és barátait, anélkül hogy kiszivárogtatná a személyes adataikat.", "Simple email app nicely integrated with Files, Contacts and Calendar." : "Egyszerű e-mail alkalmazás, amely szépen integrálódik a Fájlok, Névjegyek és Naptár alkalmazásba.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Csevegés, videóhívások, képernyőmegosztás, online megbeszélések és webes konferencia – a böngészőjében és mobilalkalmazásokkal.", + "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Közösen szerkeszthető dokumentumok, táblázatok és bemutatók, a Collabora Online-ra építve.", "Forgot password?" : "Elfelejtett jelszó?", "Log in with a device" : "Bejelentkezés eszközzel", "Back" : "Vissza", diff --git a/core/l10n/hu.json b/core/l10n/hu.json index 7916d58ada0..59aec2c5d24 100644 --- a/core/l10n/hu.json +++ b/core/l10n/hu.json @@ -114,6 +114,7 @@ "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Az adatkönyvtárai és a fájljai valószínűleg elérhetőek az internetről. A .htaccess fájl nem működik. Erősen javasolt, hogy a webkiszolgálót úgy állítsa be, hogy az adatkönyvtár tartalma ne legyen közvetlenül elérhető, vagy helyezze át a könyvtárat a kiszolgálási területen kívülre.", "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem erre van állítva: „{expected}”. Ez egy lehetséges biztonsági és adatvédelmi kockázat, ezért javasolt, hogy módosítsa megfelelően a beállítást.", "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem erre van állítva: „{expected}”. Egyes szolgáltatások esetleg nem fognak megfelelően működni, ezért javasolt, hogy módosítsa megfelelően a beállítást.", + "The \"{header}\" HTTP header does not contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "A(z) „{header}” HTTP-fejléc nem tartalmazza ezt: „{expected}”. Ez egy lehetséges biztonsági és adatvédelmi kockázat, ezért javasolt, hogy módosítsa megfelelően a beállítást.", "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the {linkstart}W3C Recommendation ↗{linkend}." : "A „{header}” HTTP-fejléc értéke nem a következők egyiket: „{val1}”, „{val2}”, „{val3}”, „{val4}” vagy „{val5}”. Ez kiszivárogtathatja a hivatkozói információkat. Lásd a {linkstart}W3C ajánlást ↗{linkend}.", "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the {linkstart}security tips ↗{linkend}." : "A „Strict-Transport-Security” HTTP-fejléc nincs beállítva legalább „{seconds}” másodpercre. A fokozott biztonság érdekében ajánlott engedélyezni a HSTS-t a {linkstart}biztonsági tippek ↗{linkend} leírása szerint.", "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the {linkstart}security tips ↗{linkend}." : "A webhely elérése nem biztonságos HTTP-n keresztül. Javasoljuk, hogy úgy állítsa be a kiszolgálót, hogy követelje meg a HTTPS-t, amint azt a {linkstart}biztonsági tippek ↗{linkend} leírják.", @@ -177,6 +178,7 @@ "Keep your colleagues and friends in one place without leaking their private info." : "Tartsa egy helyen kollégáit és barátait, anélkül hogy kiszivárogtatná a személyes adataikat.", "Simple email app nicely integrated with Files, Contacts and Calendar." : "Egyszerű e-mail alkalmazás, amely szépen integrálódik a Fájlok, Névjegyek és Naptár alkalmazásba.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Csevegés, videóhívások, képernyőmegosztás, online megbeszélések és webes konferencia – a böngészőjében és mobilalkalmazásokkal.", + "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Közösen szerkeszthető dokumentumok, táblázatok és bemutatók, a Collabora Online-ra építve.", "Forgot password?" : "Elfelejtett jelszó?", "Log in with a device" : "Bejelentkezés eszközzel", "Back" : "Vissza", diff --git a/core/l10n/sk.js b/core/l10n/sk.js index f8b672777bf..b348f65a3ec 100644 --- a/core/l10n/sk.js +++ b/core/l10n/sk.js @@ -26,6 +26,7 @@ OC.L10N.register( "Invalid app password" : "Neplatné heslo aplikácie", "Could not complete login" : "Nie je možné dokončiť prihlásenie", "Your login token is invalid or has expired" : "Váš prihlasovací token je neplatný alebo jeho platnosť skončila", + "This community release of Nextcloud is unsupported and push notifications are limited." : "Toto komunitné vydanie Nextcloud nie je podporované a push upozornenia nie sú k dispozícii.", "Login" : "Prihlásiť sa", "Password reset is disabled" : "Obnovenie hesla nie je povolené", "Could not reset password because the token is expired" : "Nepodarilo sa obnoviť heslo, pretože platnosť tokenu uplynula", @@ -77,6 +78,7 @@ OC.L10N.register( "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "Vaša inštalácia nemá nastavenú žiadnu predvolenú oblasť predvolby telefónu. Toto je potrebné na overenie telefónnych čísel v nastaveniach profilu bez kódu krajiny. Ak chcete povoliť čísla bez kódu krajiny, pridajte do svojho konfiguračného súboru „default_phone_region“ s príslušným {linkstart} kódom ISO 3166-1 ↗ {linkend} regiónu.", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nebolo možné spustiť cron úlohu na pozadí pomocou CLI. Toto sú chyby:", "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "Posledné spustenie úlohy na pozadí prebehlo {relativeTime}. Zdá sa, že niečo nie je v poriadku. {linkstart} Skontrolujte nastavenia úlohy na pozadí ↗{linkend}.", + "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {linkstart}https://nextcloud.com/enterprise{linkend}." : "Toto je nepodporovaná komunitná verzia Nextcloud. Vzhľadom na veľkosť tejto inštancie nemožno zaručiť výkon, spoľahlivosť a škálovateľnosť. Push notifikácie boli deaktivované, aby sa predišlo preťaženiu našej bezplatnej služby. Získajte viac informácií o výhodách Nextcloud Enterprise na {linkstart}https://nextcloud.com/enterprise{linkend}.", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Tento server nemá funkčné internetové pripojenie: Nie je možné dosiahnuť viacero koncových bodov. To znamená, že niektoré funkcie, ako je pripojenie externého úložiska, upozornenia na aktualizácie alebo inštalácia aplikácií tretích strán, nebudú fungovať. Tiež nemusí fungovať vzdialený prístup k súborom a odosielanie e -mailov s upozorneniami. Ak chcete využívať všetky funkcie, vytvorte z tohto servera pripojenie na internet.", "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie je nakonfigurovaná vyrovnávacia pamäť. Ak chcete zvýšiť výkon, nakonfigurujte prosím memcache ak je to možné. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.", "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Použiteľný zdroj náhodnosti pre PHP nebol nájdený, čo nie je odporúčané z bezpečnostných dôvodov. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.", @@ -97,6 +99,7 @@ OC.L10N.register( "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "V tejto inštancii chýbajú niektoré odporúčané moduly PHP.\nAk chcete zlepšiť výkon a kompatibilitu, dôrazne odporúčame, aby ste ich nainštalovali.", "The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "PHP modul „imagick“ nie je povolený, hoci tematická aplikácia áno. Aby generovanie favicon správne fungovalo, musíte nainštalovať a povoliť tento modul.", "The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "PHP moduly \"gmp\" a/alebo \"bcmath\" nie sú povolené. Ak používate autentifikáciu WebAuthn bez hesla, tieto moduly sú povinné.", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá sa, že používate 32-bitovú verziu PHP. Nextcloud potrebuje 64-bit, aby fungoval dobre. Inovujte svoj OS a PHP na 64-bitové! Ďalšie podrobnosti nájdete na {linkstart}stránke dokumentácie↗{linkend}.", "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Modul php-imagick nemá podporu SVG. Pre lepšiu kompatibilitu sa odporúča nainštalovať ho.", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Niektorým stĺpcom v databáze chýba konverzia na big int. Vzhľadom na to, že zmena typov stĺpcov na veľkých tabuľkách by mohla chvíľu trvať, neboli zmenené automaticky. Spustením príkazu „occ db: convert-filecache-bigint“ budú zmeny aplikované manuálne. Túto operáciu je potrebné vykonať v čase, keď je inštancia offline. Ďalšie informácie nájdete na {linkstart} dokumentačnej stránke ↗{linkend}.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Ako databáza je použitá SQLite. Pre väčšie inštalácie odporúčame prejsť na inú databázu.", @@ -113,6 +116,7 @@ OC.L10N.register( "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Váš dátový adresár a súbory sú pravdepodobne prístupné z internetu. Súbor .htaccess nefunguje. Dôrazne odporúčame nakonfigurovať webový server tak, aby k dátovému adresáru už nebol prístupný, alebo presunúť dátový adresár mimo koreňa dokumentov webového servera.", "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.", "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.", + "The \"{header}\" HTTP header does not contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" neobsahuje \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie adekvátne upraviť.", "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the {linkstart}W3C Recommendation ↗{linkend}." : "Hlavička HTTP „{header}“ nie je nastavená na „{val1}“, „{val2}“, „{val3}“, „{val4}“ alebo „{val5}“. To môže spôsobiť únik referer informácie. Prečítajte si {linkstart} odporúčanie W3C ↗{linkend}.", "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the {linkstart}security tips ↗{linkend}." : "Hlavička HTTP „Strict-Transport-Security“ nie je nastavená na minimálne „{seconds}“ sekúnd. Kvôli zvýšenému zabezpečeniu sa odporúča povoliť HSTS, ako je popísané v {linkstart} bezpečnostných tipoch ↗{linkend}.", "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the {linkstart}security tips ↗{linkend}." : "Prístup na túto stránku sa uskutočňuje prostredníctvom nezabezpečeného protokolu HTTP. Dôrazne sa odporúča nastaviť server tak, aby namiesto toho vyžadoval protokol HTTPS, ako je uvedené v {linkstart} bezpečnostných tipoch ↗{linkend}.", @@ -133,12 +137,16 @@ OC.L10N.register( "Continue to {productName}" : "Pokračovať na {productName}", "_The update was successful. Redirecting you to {productName} in %n second._::_The update was successful. Redirecting you to {productName} in %n seconds._" : ["Aktualizácia prebehla úspešne. O %n sekundu budete presmerovaní na {productName}.","Aktualizácia prebehla úspešne. O %n sekundy budete presmerovaní na {productName}.","Aktualizácia prebehla úspešne. O %n sekúnd budete presmerovaní na {productName}.","Aktualizácia prebehla úspešne. O %n sekúnd budete presmerovaní na {productName}."], "More apps" : "Viac aplikácií", + "Currently open" : "V súčasnosti otvorené", + "_{count} notification_::_{count} notifications_" : ["{count} upozornenie","{count} upozornenia","{count} upozornení","{count} upozornenia"], "Log in" : "Prihlásiť sa", "Logging in …" : "Prihlasujem ...", "Server side authentication failed!" : "Autentifikácia na serveri zlyhala!", "Please contact your administrator." : "Kontaktujte prosím vášho administrátora.", "An internal error occurred." : "Došlo k vnútornej chybe.", "Please try again or contact your administrator." : "Skúste to znovu, alebo sa obráťte na vášho administrátora.", + "Log in to {productName}" : "Prihlásiť sa do {productName}", + "Account name or email" : "Názov účtu alebo e-mail", "Password" : "Heslo", "Wrong username or password." : "Nesprávne používateľské meno alebo heslo.", "User disabled" : "Používateľ zakázaný", @@ -172,6 +180,7 @@ OC.L10N.register( "Keep your colleagues and friends in one place without leaking their private info." : "Udržujte si údaje o svojich kolegoch a priateľoch na jednom mieste bez hrozby úniku ich súkromných informácií tretím stranám.", "Simple email app nicely integrated with Files, Contacts and Calendar." : "Jednoduchá apka pre čítanie e-mailov, prepojená so Súbormi, Kontaktami a Kalendárom.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Četovanie, videohovory, zdieľanie obrazovky, online stretnutia a webové konferencie - vo vašom prehliadači a pomocou mobilných aplikácií.", + "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Kolaboratívne dokumenty, tabuľky a prezentácie postavené na Collabora Online.", "Forgot password?" : "Zabudli ste heslo?", "Log in with a device" : "Prihlásiť sa pomocou zariadenia", "Back" : "Späť", @@ -181,6 +190,7 @@ OC.L10N.register( "You have not added any info yet" : "Zatiaľ ste nepridali žiadne informácie", "{user} has not added any info yet" : "{user} zatiaľ nepridal žiadne informácie", "Error opening the user status modal, try hard refreshing the page" : "Chyba pri otváraní modálneho okna stavu používateľa, skúste stránku obnoviť", + "Search starts once you start typing" : "Vyhľadávanie sa spustí, keď začnete písať", "Reset search" : "Vynuluj vyhľadávanie", "Start search" : "Začať vyhľadávať", "Search for {name} only" : "Hľadať iba {name}", @@ -334,6 +344,7 @@ OC.L10N.register( "%s's homepage" : "Domovská stránka užívateľa %s", "Contacts" : "Kontakty", "Contacts menu" : "Menu kontaktov", + "Open settings menu" : "Otvoriť menu s nastavením", "Confirm your password" : "Potvrďte svoje heslo", "Connect to your account" : "Pripojte sa k svojmu účtu", "Please log in before granting %1$s access to your %2$s account." : "Skôr než udelíte prístup pre %1$s do vášho účtu %2$s je potrebné sa prihlásiť.", diff --git a/core/l10n/sk.json b/core/l10n/sk.json index 8b73faee06d..b866b8aa1ab 100644 --- a/core/l10n/sk.json +++ b/core/l10n/sk.json @@ -24,6 +24,7 @@ "Invalid app password" : "Neplatné heslo aplikácie", "Could not complete login" : "Nie je možné dokončiť prihlásenie", "Your login token is invalid or has expired" : "Váš prihlasovací token je neplatný alebo jeho platnosť skončila", + "This community release of Nextcloud is unsupported and push notifications are limited." : "Toto komunitné vydanie Nextcloud nie je podporované a push upozornenia nie sú k dispozícii.", "Login" : "Prihlásiť sa", "Password reset is disabled" : "Obnovenie hesla nie je povolené", "Could not reset password because the token is expired" : "Nepodarilo sa obnoviť heslo, pretože platnosť tokenu uplynula", @@ -75,6 +76,7 @@ "Your installation has no default phone region set. This is required to validate phone numbers in the profile settings without a country code. To allow numbers without a country code, please add \"default_phone_region\" with the respective {linkstart}ISO 3166-1 code ↗{linkend} of the region to your config file." : "Vaša inštalácia nemá nastavenú žiadnu predvolenú oblasť predvolby telefónu. Toto je potrebné na overenie telefónnych čísel v nastaveniach profilu bez kódu krajiny. Ak chcete povoliť čísla bez kódu krajiny, pridajte do svojho konfiguračného súboru „default_phone_region“ s príslušným {linkstart} kódom ISO 3166-1 ↗ {linkend} regiónu.", "It was not possible to execute the cron job via CLI. The following technical errors have appeared:" : "Nebolo možné spustiť cron úlohu na pozadí pomocou CLI. Toto sú chyby:", "Last background job execution ran {relativeTime}. Something seems wrong. {linkstart}Check the background job settings ↗{linkend}." : "Posledné spustenie úlohy na pozadí prebehlo {relativeTime}. Zdá sa, že niečo nie je v poriadku. {linkstart} Skontrolujte nastavenia úlohy na pozadí ↗{linkend}.", + "This is the unsupported community build of Nextcloud. Given the size of this instance, performance, reliability and scalability cannot be guaranteed. Push notifications are limited to avoid overloading our free service. Learn more about the benefits of Nextcloud Enterprise at {linkstart}https://nextcloud.com/enterprise{linkend}." : "Toto je nepodporovaná komunitná verzia Nextcloud. Vzhľadom na veľkosť tejto inštancie nemožno zaručiť výkon, spoľahlivosť a škálovateľnosť. Push notifikácie boli deaktivované, aby sa predišlo preťaženiu našej bezplatnej služby. Získajte viac informácií o výhodách Nextcloud Enterprise na {linkstart}https://nextcloud.com/enterprise{linkend}.", "This server has no working internet connection: Multiple endpoints could not be reached. This means that some of the features like mounting external storage, notifications about updates or installation of third-party apps will not work. Accessing files remotely and sending of notification emails might not work, either. Establish a connection from this server to the internet to enjoy all features." : "Tento server nemá funkčné internetové pripojenie: Nie je možné dosiahnuť viacero koncových bodov. To znamená, že niektoré funkcie, ako je pripojenie externého úložiska, upozornenia na aktualizácie alebo inštalácia aplikácií tretích strán, nebudú fungovať. Tiež nemusí fungovať vzdialený prístup k súborom a odosielanie e -mailov s upozorneniami. Ak chcete využívať všetky funkcie, vytvorte z tohto servera pripojenie na internet.", "No memory cache has been configured. To enhance performance, please configure a memcache, if available. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Nie je nakonfigurovaná vyrovnávacia pamäť. Ak chcete zvýšiť výkon, nakonfigurujte prosím memcache ak je to možné. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.", "No suitable source for randomness found by PHP which is highly discouraged for security reasons. Further information can be found in the {linkstart}documentation ↗{linkend}." : "Použiteľný zdroj náhodnosti pre PHP nebol nájdený, čo nie je odporúčané z bezpečnostných dôvodov. Viac informácií nájdete v {linkstart}dokumentácii ↗{linkend}.", @@ -95,6 +97,7 @@ "This instance is missing some recommended PHP modules. For improved performance and better compatibility it is highly recommended to install them." : "V tejto inštancii chýbajú niektoré odporúčané moduly PHP.\nAk chcete zlepšiť výkon a kompatibilitu, dôrazne odporúčame, aby ste ich nainštalovali.", "The PHP module \"imagick\" is not enabled although the theming app is. For favicon generation to work correctly, you need to install and enable this module." : "PHP modul „imagick“ nie je povolený, hoci tematická aplikácia áno. Aby generovanie favicon správne fungovalo, musíte nainštalovať a povoliť tento modul.", "The PHP modules \"gmp\" and/or \"bcmath\" are not enabled. If you use WebAuthn passwordless authentication, these modules are required." : "PHP moduly \"gmp\" a/alebo \"bcmath\" nie sú povolené. Ak používate autentifikáciu WebAuthn bez hesla, tieto moduly sú povinné.", + "It seems like you are running a 32-bit PHP version. Nextcloud needs 64-bit to run well. Please upgrade your OS and PHP to 64-bit! For further details read {linkstart}the documentation page about this ↗{linkend}." : "Zdá sa, že používate 32-bitovú verziu PHP. Nextcloud potrebuje 64-bit, aby fungoval dobre. Inovujte svoj OS a PHP na 64-bitové! Ďalšie podrobnosti nájdete na {linkstart}stránke dokumentácie↗{linkend}.", "Module php-imagick in this instance has no SVG support. For better compatibility it is recommended to install it." : "Modul php-imagick nemá podporu SVG. Pre lepšiu kompatibilitu sa odporúča nainštalovať ho.", "Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically. By running \"occ db:convert-filecache-bigint\" those pending changes could be applied manually. This operation needs to be made while the instance is offline. For further details read {linkstart}the documentation page about this ↗{linkend}." : "Niektorým stĺpcom v databáze chýba konverzia na big int. Vzhľadom na to, že zmena typov stĺpcov na veľkých tabuľkách by mohla chvíľu trvať, neboli zmenené automaticky. Spustením príkazu „occ db: convert-filecache-bigint“ budú zmeny aplikované manuálne. Túto operáciu je potrebné vykonať v čase, keď je inštancia offline. Ďalšie informácie nájdete na {linkstart} dokumentačnej stránke ↗{linkend}.", "SQLite is currently being used as the backend database. For larger installations we recommend that you switch to a different database backend." : "Ako databáza je použitá SQLite. Pre väčšie inštalácie odporúčame prejsť na inú databázu.", @@ -111,6 +114,7 @@ "Your data directory and files are probably accessible from the internet. The .htaccess file is not working. It is strongly recommended that you configure your web server so that the data directory is no longer accessible, or move the data directory outside the web server document root." : "Váš dátový adresár a súbory sú pravdepodobne prístupné z internetu. Súbor .htaccess nefunguje. Dôrazne odporúčame nakonfigurovať webový server tak, aby k dátovému adresáru už nebol prístupný, alebo presunúť dátový adresár mimo koreňa dokumentov webového servera.", "The \"{header}\" HTTP header is not set to \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.", "The \"{header}\" HTTP header is not set to \"{expected}\". Some features might not work correctly, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" nie je nakonfigurovaná tak, aby sa rovnala \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie upraviť.", + "The \"{header}\" HTTP header does not contain \"{expected}\". This is a potential security or privacy risk, as it is recommended to adjust this setting accordingly." : "Hlavička HTTP \"{header}\" neobsahuje \"{expected}\". Toto je potenciálne riziko pre bezpečnosť alebo ochranu osobných údajov a preto odporúčame toto nastavenie adekvátne upraviť.", "The \"{header}\" HTTP header is not set to \"{val1}\", \"{val2}\", \"{val3}\", \"{val4}\" or \"{val5}\". This can leak referer information. See the {linkstart}W3C Recommendation ↗{linkend}." : "Hlavička HTTP „{header}“ nie je nastavená na „{val1}“, „{val2}“, „{val3}“, „{val4}“ alebo „{val5}“. To môže spôsobiť únik referer informácie. Prečítajte si {linkstart} odporúčanie W3C ↗{linkend}.", "The \"Strict-Transport-Security\" HTTP header is not set to at least \"{seconds}\" seconds. For enhanced security, it is recommended to enable HSTS as described in the {linkstart}security tips ↗{linkend}." : "Hlavička HTTP „Strict-Transport-Security“ nie je nastavená na minimálne „{seconds}“ sekúnd. Kvôli zvýšenému zabezpečeniu sa odporúča povoliť HSTS, ako je popísané v {linkstart} bezpečnostných tipoch ↗{linkend}.", "Accessing site insecurely via HTTP. You are strongly advised to set up your server to require HTTPS instead, as described in the {linkstart}security tips ↗{linkend}." : "Prístup na túto stránku sa uskutočňuje prostredníctvom nezabezpečeného protokolu HTTP. Dôrazne sa odporúča nastaviť server tak, aby namiesto toho vyžadoval protokol HTTPS, ako je uvedené v {linkstart} bezpečnostných tipoch ↗{linkend}.", @@ -131,12 +135,16 @@ "Continue to {productName}" : "Pokračovať na {productName}", "_The update was successful. Redirecting you to {productName} in %n second._::_The update was successful. Redirecting you to {productName} in %n seconds._" : ["Aktualizácia prebehla úspešne. O %n sekundu budete presmerovaní na {productName}.","Aktualizácia prebehla úspešne. O %n sekundy budete presmerovaní na {productName}.","Aktualizácia prebehla úspešne. O %n sekúnd budete presmerovaní na {productName}.","Aktualizácia prebehla úspešne. O %n sekúnd budete presmerovaní na {productName}."], "More apps" : "Viac aplikácií", + "Currently open" : "V súčasnosti otvorené", + "_{count} notification_::_{count} notifications_" : ["{count} upozornenie","{count} upozornenia","{count} upozornení","{count} upozornenia"], "Log in" : "Prihlásiť sa", "Logging in …" : "Prihlasujem ...", "Server side authentication failed!" : "Autentifikácia na serveri zlyhala!", "Please contact your administrator." : "Kontaktujte prosím vášho administrátora.", "An internal error occurred." : "Došlo k vnútornej chybe.", "Please try again or contact your administrator." : "Skúste to znovu, alebo sa obráťte na vášho administrátora.", + "Log in to {productName}" : "Prihlásiť sa do {productName}", + "Account name or email" : "Názov účtu alebo e-mail", "Password" : "Heslo", "Wrong username or password." : "Nesprávne používateľské meno alebo heslo.", "User disabled" : "Používateľ zakázaný", @@ -170,6 +178,7 @@ "Keep your colleagues and friends in one place without leaking their private info." : "Udržujte si údaje o svojich kolegoch a priateľoch na jednom mieste bez hrozby úniku ich súkromných informácií tretím stranám.", "Simple email app nicely integrated with Files, Contacts and Calendar." : "Jednoduchá apka pre čítanie e-mailov, prepojená so Súbormi, Kontaktami a Kalendárom.", "Chatting, video calls, screensharing, online meetings and web conferencing – in your browser and with mobile apps." : "Četovanie, videohovory, zdieľanie obrazovky, online stretnutia a webové konferencie - vo vašom prehliadači a pomocou mobilných aplikácií.", + "Collaborative documents, spreadsheets and presentations, built on Collabora Online." : "Kolaboratívne dokumenty, tabuľky a prezentácie postavené na Collabora Online.", "Forgot password?" : "Zabudli ste heslo?", "Log in with a device" : "Prihlásiť sa pomocou zariadenia", "Back" : "Späť", @@ -179,6 +188,7 @@ "You have not added any info yet" : "Zatiaľ ste nepridali žiadne informácie", "{user} has not added any info yet" : "{user} zatiaľ nepridal žiadne informácie", "Error opening the user status modal, try hard refreshing the page" : "Chyba pri otváraní modálneho okna stavu používateľa, skúste stránku obnoviť", + "Search starts once you start typing" : "Vyhľadávanie sa spustí, keď začnete písať", "Reset search" : "Vynuluj vyhľadávanie", "Start search" : "Začať vyhľadávať", "Search for {name} only" : "Hľadať iba {name}", @@ -332,6 +342,7 @@ "%s's homepage" : "Domovská stránka užívateľa %s", "Contacts" : "Kontakty", "Contacts menu" : "Menu kontaktov", + "Open settings menu" : "Otvoriť menu s nastavením", "Confirm your password" : "Potvrďte svoje heslo", "Connect to your account" : "Pripojte sa k svojmu účtu", "Please log in before granting %1$s access to your %2$s account." : "Skôr než udelíte prístup pre %1$s do vášho účtu %2$s je potrebné sa prihlásiť.", diff --git a/core/l10n/uk.js b/core/l10n/uk.js index 898df89dc24..72b8361a641 100644 --- a/core/l10n/uk.js +++ b/core/l10n/uk.js @@ -10,7 +10,7 @@ OC.L10N.register( "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Розмір завантаженого файлу перевищує директиву MAX_FILE_SIZE, зазначену у HTML-формі", "The file was only partially uploaded" : "Файл завантажено лише частково", "No file was uploaded" : "Не вивантажено жодного файлу", - "Missing a temporary folder" : "Відсутня тека для тимчасових файлів", + "Missing a temporary folder" : "Відсутній каталог тимчасових файлів", "Could not write file to disk" : "Неможливо записати файл на диск", "A PHP extension stopped the file upload" : "Розширення PHP призупинило завантаження файлу", "Invalid file provided" : "Надано невірний файл", @@ -48,7 +48,7 @@ OC.L10N.register( "Repair warning:" : "Застереження щодо відновлення:", "Repair error:" : "Помилка під час відновлення:", "Please use the command line updater because automatic updating is disabled in the config.php." : "Просимо запустити процес оновлення з командного рядка, оскільки автоматичне оновлення вимкнено у файлі config.php.", - "Turned on maintenance mode" : "Увімкнено режим технічного обслуговування", + "Turned on maintenance mode" : "Активовано режим технічного обслуговування", "Turned off maintenance mode" : "Вимкнено режим технічного обслуговування", "Maintenance mode is kept active" : "Режим обслуговування залишається активним", "Updating database schema" : "Оновлення схеми бази даних", @@ -65,7 +65,7 @@ OC.L10N.register( "Already up to date" : "Вже актуально", "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Ваш вебсервер не налаштований як треба для синхронізації файлів, схоже інтерфейс WebDAV поламаний.", "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ваш веб-сервер неправильно налаштовано для вирішення \"{url}\". Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.", - "Your web server is not properly set up to resolve \"{url}\". This is most likely related to a web server configuration that was not updated to deliver this folder directly. Please compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx at it's {linkstart}documentation page ↗{linkend}. On Nginx those are typically the lines starting with \"location ~\" that need an update." : "Ваш веб-сервер неправильно налаштовано для вирішення \"{url}\". Швидше за все, це пов’язано з конфігурацією веб-сервера, який не було оновлено для безпосередньої доставки цієї папки. Будь ласка, порівняйте свою конфігурацію з надісланими правилами перезапису в \".htaccess\" для Apache або наданими в документації для Nginx на його {linkstart}сторінці документації ↗{linkend}. У Nginx зазвичай це рядки, що починаються з «location ~», які потребують оновлення.", + "Your web server is not properly set up to resolve \"{url}\". This is most likely related to a web server configuration that was not updated to deliver this folder directly. Please compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx at it's {linkstart}documentation page ↗{linkend}. On Nginx those are typically the lines starting with \"location ~\" that need an update." : "Ваш веб-сервер неправильно налаштовано для вирішення \"{url}\". Швидше за все, це пов’язано з конфігурацією вебсервера, який не було оновлено для безпосередньої доставки цього каталогу. Будь ласка, порівняйте свою конфігурацію з надісланими правилами перезапису в \".htaccess\" для Apache або наданими в документації для Nginx на його {linkstart}сторінці документації ↗{linkend}. У Nginx зазвичай це рядки, що починаються з \"location ~\", які потребують оновлення.", "Your web server is not properly set up to deliver .woff2 files. This is typically an issue with the Nginx configuration. For Nextcloud 15 it needs an adjustement to also deliver .woff2 files. Compare your Nginx configuration to the recommended configuration in our {linkstart}documentation ↗{linkend}." : "Ваш веб-сервер неправильно налаштовано для доставки файлів .woff2. Зазвичай це проблема з конфігурацією Nginx. Для Nextcloud 15 потрібно налаштувати, щоб також надавати файли .woff2. Порівняйте свою конфігурацію Nginx із рекомендованою конфігурацією в нашій {linkstart}документації ↗{linkend}.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не налаштований правильно для отримання змінних системного оточення. Запит getenv(\"PATH\") повертає пусті результати.", "Please check the {linkstart}installation documentation ↗{linkend} for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Будь ласка, перевірте {linkstart}документацію щодо встановлення ↗{linkend}, щоб отримати примітки щодо конфігурації PHP і конфігурацію PHP вашого сервера, особливо якщо використовується php-fpm.", @@ -158,7 +158,7 @@ OC.L10N.register( "Your connection is not secure" : "Ваше зʼєднання не захищене", "Passwordless authentication is only available over a secure connection." : "Авторизація без пароля можлива лише при безпечному з'єднанні.", "Reset password" : "Перевстановити пароль", - "A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Повідомлення про зміну пароля надіслано на електронну адресу цього облікового запису. Якщо ви не отримали його, перевірте папки спаму/сміття або зверніться по допомогу до місцевого адміністратора.", + "A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Повідомлення про зміну пароля надіслано на електронну адресу цього облікового запису. Якщо ви не отримали його, перевірте \"Спам\" чи \"Кошик або зверніться по допомогу до адміністратора.", "If it is not there ask your local administrator." : "У разі відсутності зверніться до адміністратора системи", "Couldn't send reset email. Please contact your administrator." : "Не можу надіслати електронного листа для перевстановлення пароля. Будь ласка, сконтактуйте з адміністратором.", "Password cannot be changed. Please contact your administrator." : "Пароль не можна змінити. Будь ласка, зверніться до свого адміністратора.", @@ -193,10 +193,10 @@ OC.L10N.register( "Search starts once you start typing" : "Пошук починається, коли ви починаєте вводити текст", "Reset search" : "Повторити пошук", "Start search" : "Розпочати пошук", - "Search for {name} only" : "Шукати лише {name}", + "Search for {name} only" : "Пошук лише у {name}", "No results for {query}" : "Немає результатів для {query}", "Press enter to start searching" : "Натисніть enter, щоб почати пошук", - "Start typing to search" : "Почніть вводити для пошуку", + "Start typing to search" : "Що шукаємо", "Loading more results …" : "Завантаження інших результатів…", "Load more results" : "Завантажити більше результатів", "Search" : "Пошук", @@ -214,8 +214,8 @@ OC.L10N.register( "No" : "Ні", "Yes" : "Так", "No files in here" : "Тут немає файлів", - "New folder" : "Нова тека", - "No more subfolders in here" : "Тут більше немає підтек", + "New folder" : "Новий каталог", + "No more subfolders in here" : "Тут більше немає вкладених каталогів", "Name" : "Ім’я", "Size" : "Розмір", "Modified" : "Змінено", @@ -309,17 +309,17 @@ OC.L10N.register( "Line: %s" : "Рядок: %s", "Trace" : "Трасування", "Security warning" : "Попередження безпеки", - "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваша тека з даними та ваші файли можуть мати доступ з інтернету, оскільки файл .htaccess не працює.", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваш каталог з даними та ваші файли можуть мати доступ з інтернету, оскільки файл .htaccess не дійсний.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Для отримання інформації про те, як правильно налаштувати свій сервер, перегляньте <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">документацію</a>.", "Create an <strong>admin account</strong>" : "Створити <strong>обліковий запис адміністратора</strong>", "Username" : "Ім'я користувача", "Show password" : "Показати пароль", "Toggle password visibility" : "Перемкнути видимість пароля", "Storage & database" : "Сховище і база даних", - "Data folder" : "Тека з даними", + "Data folder" : "Каталог з даними", "Configure the database" : "Налаштування бази даних", "Only %s is available." : "Доступно тільки %s.", - "Install and activate additional PHP modules to choose other database types." : "Встановіть та активуйте додаткові модулі PHP для того, щоб вибрати тип БД.", + "Install and activate additional PHP modules to choose other database types." : "Встановіть та активуйте додаткові модулі PHP, щоб вибрати інший тип БД.", "For more details check out the documentation." : "За подробицями зверніться до документації.", "Database user" : "Користувач бази даних", "Database password" : "Пароль для бази даних", @@ -384,14 +384,14 @@ OC.L10N.register( "The following apps will be updated:" : "Ці застосунки буде оновлено:", "These incompatible apps will be disabled:" : "Такі несумісні застосунки буде вимкнено:", "The theme %s has been disabled." : "Тему %s було вимкнено.", - "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Перед продовженням переконайтеся, що ви зробили резервну копію бази даних, теки з конфігурацією та теки з даними користувачів.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Перед продовженням переконайтеся, що ви зробили резервну копію бази даних, каталог з конфігурацією та каталоги з даними користувачів.", "Start update" : "Почати оновлення", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Щоб уникнути затримок у великих встановленнях, ви можете виконати наступну команду в каталозі встановлення:", "Detailed logs" : "Деталізований журнал", "Update needed" : "Оновлення необхідно", "Please use the command line updater because you have a big instance with more than 50 users." : "Будь ласка, скористайтеся оновленням з командного рядка, оскільки у вас є більш ніж 50 користувачів.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Щоб отримати допомогу, перегляньте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацію</a>.", - "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, що, якщо я продовжую виконувати оновлення через вебінтерфейс, існує ризик того, що запит завершиться по тайм-ауту, що може призвести до втрати даних, але я маю резервну копію та знаю, як відновити мій екземпляр у випадку невдачі.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, що, якщо я продовжую виконувати оновлення через вебінтерфейс, існує ризик того, що запит завершиться по тайм-ауту, що може призвести до втрати даних, але я маю резервну копію та знаю, як відновити мій сервер у випадку невдачі.", "Upgrade via web on my own risk" : "Оновлення через веб-інтерфейс на свій страх і ризик", "Maintenance mode" : "Режим технічного обслуговування", "This %s instance is currently in maintenance mode, which may take a while." : "Цей сервер %s перебуває в режимі технічного обслуговування, що може зайняти деякий час.", diff --git a/core/l10n/uk.json b/core/l10n/uk.json index 4cc67103f87..5cc68ff9fac 100644 --- a/core/l10n/uk.json +++ b/core/l10n/uk.json @@ -8,7 +8,7 @@ "The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form" : "Розмір завантаженого файлу перевищує директиву MAX_FILE_SIZE, зазначену у HTML-формі", "The file was only partially uploaded" : "Файл завантажено лише частково", "No file was uploaded" : "Не вивантажено жодного файлу", - "Missing a temporary folder" : "Відсутня тека для тимчасових файлів", + "Missing a temporary folder" : "Відсутній каталог тимчасових файлів", "Could not write file to disk" : "Неможливо записати файл на диск", "A PHP extension stopped the file upload" : "Розширення PHP призупинило завантаження файлу", "Invalid file provided" : "Надано невірний файл", @@ -46,7 +46,7 @@ "Repair warning:" : "Застереження щодо відновлення:", "Repair error:" : "Помилка під час відновлення:", "Please use the command line updater because automatic updating is disabled in the config.php." : "Просимо запустити процес оновлення з командного рядка, оскільки автоматичне оновлення вимкнено у файлі config.php.", - "Turned on maintenance mode" : "Увімкнено режим технічного обслуговування", + "Turned on maintenance mode" : "Активовано режим технічного обслуговування", "Turned off maintenance mode" : "Вимкнено режим технічного обслуговування", "Maintenance mode is kept active" : "Режим обслуговування залишається активним", "Updating database schema" : "Оновлення схеми бази даних", @@ -63,7 +63,7 @@ "Already up to date" : "Вже актуально", "Your web server is not yet properly set up to allow file synchronization, because the WebDAV interface seems to be broken." : "Ваш вебсервер не налаштований як треба для синхронізації файлів, схоже інтерфейс WebDAV поламаний.", "Your web server is not properly set up to resolve \"{url}\". Further information can be found in the {linkstart}documentation ↗{linkend}." : "Ваш веб-сервер неправильно налаштовано для вирішення \"{url}\". Додаткову інформацію можна знайти в {linkstart}документації ↗{linkend}.", - "Your web server is not properly set up to resolve \"{url}\". This is most likely related to a web server configuration that was not updated to deliver this folder directly. Please compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx at it's {linkstart}documentation page ↗{linkend}. On Nginx those are typically the lines starting with \"location ~\" that need an update." : "Ваш веб-сервер неправильно налаштовано для вирішення \"{url}\". Швидше за все, це пов’язано з конфігурацією веб-сервера, який не було оновлено для безпосередньої доставки цієї папки. Будь ласка, порівняйте свою конфігурацію з надісланими правилами перезапису в \".htaccess\" для Apache або наданими в документації для Nginx на його {linkstart}сторінці документації ↗{linkend}. У Nginx зазвичай це рядки, що починаються з «location ~», які потребують оновлення.", + "Your web server is not properly set up to resolve \"{url}\". This is most likely related to a web server configuration that was not updated to deliver this folder directly. Please compare your configuration against the shipped rewrite rules in \".htaccess\" for Apache or the provided one in the documentation for Nginx at it's {linkstart}documentation page ↗{linkend}. On Nginx those are typically the lines starting with \"location ~\" that need an update." : "Ваш веб-сервер неправильно налаштовано для вирішення \"{url}\". Швидше за все, це пов’язано з конфігурацією вебсервера, який не було оновлено для безпосередньої доставки цього каталогу. Будь ласка, порівняйте свою конфігурацію з надісланими правилами перезапису в \".htaccess\" для Apache або наданими в документації для Nginx на його {linkstart}сторінці документації ↗{linkend}. У Nginx зазвичай це рядки, що починаються з \"location ~\", які потребують оновлення.", "Your web server is not properly set up to deliver .woff2 files. This is typically an issue with the Nginx configuration. For Nextcloud 15 it needs an adjustement to also deliver .woff2 files. Compare your Nginx configuration to the recommended configuration in our {linkstart}documentation ↗{linkend}." : "Ваш веб-сервер неправильно налаштовано для доставки файлів .woff2. Зазвичай це проблема з конфігурацією Nginx. Для Nextcloud 15 потрібно налаштувати, щоб також надавати файли .woff2. Порівняйте свою конфігурацію Nginx із рекомендованою конфігурацією в нашій {linkstart}документації ↗{linkend}.", "PHP does not seem to be setup properly to query system environment variables. The test with getenv(\"PATH\") only returns an empty response." : "PHP не налаштований правильно для отримання змінних системного оточення. Запит getenv(\"PATH\") повертає пусті результати.", "Please check the {linkstart}installation documentation ↗{linkend} for PHP configuration notes and the PHP configuration of your server, especially when using php-fpm." : "Будь ласка, перевірте {linkstart}документацію щодо встановлення ↗{linkend}, щоб отримати примітки щодо конфігурації PHP і конфігурацію PHP вашого сервера, особливо якщо використовується php-fpm.", @@ -156,7 +156,7 @@ "Your connection is not secure" : "Ваше зʼєднання не захищене", "Passwordless authentication is only available over a secure connection." : "Авторизація без пароля можлива лише при безпечному з'єднанні.", "Reset password" : "Перевстановити пароль", - "A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Повідомлення про зміну пароля надіслано на електронну адресу цього облікового запису. Якщо ви не отримали його, перевірте папки спаму/сміття або зверніться по допомогу до місцевого адміністратора.", + "A password reset message has been sent to the email address of this account. If you do not receive it, check your spam/junk folders or ask your local administrator for help." : "Повідомлення про зміну пароля надіслано на електронну адресу цього облікового запису. Якщо ви не отримали його, перевірте \"Спам\" чи \"Кошик або зверніться по допомогу до адміністратора.", "If it is not there ask your local administrator." : "У разі відсутності зверніться до адміністратора системи", "Couldn't send reset email. Please contact your administrator." : "Не можу надіслати електронного листа для перевстановлення пароля. Будь ласка, сконтактуйте з адміністратором.", "Password cannot be changed. Please contact your administrator." : "Пароль не можна змінити. Будь ласка, зверніться до свого адміністратора.", @@ -191,10 +191,10 @@ "Search starts once you start typing" : "Пошук починається, коли ви починаєте вводити текст", "Reset search" : "Повторити пошук", "Start search" : "Розпочати пошук", - "Search for {name} only" : "Шукати лише {name}", + "Search for {name} only" : "Пошук лише у {name}", "No results for {query}" : "Немає результатів для {query}", "Press enter to start searching" : "Натисніть enter, щоб почати пошук", - "Start typing to search" : "Почніть вводити для пошуку", + "Start typing to search" : "Що шукаємо", "Loading more results …" : "Завантаження інших результатів…", "Load more results" : "Завантажити більше результатів", "Search" : "Пошук", @@ -212,8 +212,8 @@ "No" : "Ні", "Yes" : "Так", "No files in here" : "Тут немає файлів", - "New folder" : "Нова тека", - "No more subfolders in here" : "Тут більше немає підтек", + "New folder" : "Новий каталог", + "No more subfolders in here" : "Тут більше немає вкладених каталогів", "Name" : "Ім’я", "Size" : "Розмір", "Modified" : "Змінено", @@ -307,17 +307,17 @@ "Line: %s" : "Рядок: %s", "Trace" : "Трасування", "Security warning" : "Попередження безпеки", - "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваша тека з даними та ваші файли можуть мати доступ з інтернету, оскільки файл .htaccess не працює.", + "Your data directory and files are probably accessible from the internet because the .htaccess file does not work." : "Ваш каталог з даними та ваші файли можуть мати доступ з інтернету, оскільки файл .htaccess не дійсний.", "For information how to properly configure your server, please see the <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">documentation</a>." : "Для отримання інформації про те, як правильно налаштувати свій сервер, перегляньте <a href=\"%s\" target=\"_blank\" rel=\"noreferrer noopener\">документацію</a>.", "Create an <strong>admin account</strong>" : "Створити <strong>обліковий запис адміністратора</strong>", "Username" : "Ім'я користувача", "Show password" : "Показати пароль", "Toggle password visibility" : "Перемкнути видимість пароля", "Storage & database" : "Сховище і база даних", - "Data folder" : "Тека з даними", + "Data folder" : "Каталог з даними", "Configure the database" : "Налаштування бази даних", "Only %s is available." : "Доступно тільки %s.", - "Install and activate additional PHP modules to choose other database types." : "Встановіть та активуйте додаткові модулі PHP для того, щоб вибрати тип БД.", + "Install and activate additional PHP modules to choose other database types." : "Встановіть та активуйте додаткові модулі PHP, щоб вибрати інший тип БД.", "For more details check out the documentation." : "За подробицями зверніться до документації.", "Database user" : "Користувач бази даних", "Database password" : "Пароль для бази даних", @@ -382,14 +382,14 @@ "The following apps will be updated:" : "Ці застосунки буде оновлено:", "These incompatible apps will be disabled:" : "Такі несумісні застосунки буде вимкнено:", "The theme %s has been disabled." : "Тему %s було вимкнено.", - "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Перед продовженням переконайтеся, що ви зробили резервну копію бази даних, теки з конфігурацією та теки з даними користувачів.", + "Please make sure that the database, the config folder and the data folder have been backed up before proceeding." : "Перед продовженням переконайтеся, що ви зробили резервну копію бази даних, каталог з конфігурацією та каталоги з даними користувачів.", "Start update" : "Почати оновлення", "To avoid timeouts with larger installations, you can instead run the following command from your installation directory:" : "Щоб уникнути затримок у великих встановленнях, ви можете виконати наступну команду в каталозі встановлення:", "Detailed logs" : "Деталізований журнал", "Update needed" : "Оновлення необхідно", "Please use the command line updater because you have a big instance with more than 50 users." : "Будь ласка, скористайтеся оновленням з командного рядка, оскільки у вас є більш ніж 50 користувачів.", "For help, see the <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">documentation</a>." : "Щоб отримати допомогу, перегляньте <a target=\"_blank\" rel=\"noreferrer noopener\" href=\"%s\">документацію</a>.", - "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, що, якщо я продовжую виконувати оновлення через вебінтерфейс, існує ризик того, що запит завершиться по тайм-ауту, що може призвести до втрати даних, але я маю резервну копію та знаю, як відновити мій екземпляр у випадку невдачі.", + "I know that if I continue doing the update via web UI has the risk, that the request runs into a timeout and could cause data loss, but I have a backup and know how to restore my instance in case of a failure." : "Я знаю, що, якщо я продовжую виконувати оновлення через вебінтерфейс, існує ризик того, що запит завершиться по тайм-ауту, що може призвести до втрати даних, але я маю резервну копію та знаю, як відновити мій сервер у випадку невдачі.", "Upgrade via web on my own risk" : "Оновлення через веб-інтерфейс на свій страх і ризик", "Maintenance mode" : "Режим технічного обслуговування", "This %s instance is currently in maintenance mode, which may take a while." : "Цей сервер %s перебуває в режимі технічного обслуговування, що може зайняти деякий час.", diff --git a/core/templates/twofactorsetupselection.php b/core/templates/twofactorsetupselection.php index fe4e3517351..9e7946a4def 100644 --- a/core/templates/twofactorsetupselection.php +++ b/core/templates/twofactorsetupselection.php @@ -33,7 +33,6 @@ declare(strict_types=1); href="<?php p(\OC::$server->getURLGenerator()->linkToRoute('core.TwoFactorChallenge.setupProvider', [ 'providerId' => $provider->getId(), - 'redirect_url' => $_['redirect_url'], ] )) ?>"> <?php diff --git a/dist/theming-theming-settings.js b/dist/theming-theming-settings.js index 88dbefbbde9..7929e8c2073 100644 --- a/dist/theming-theming-settings.js +++ b/dist/theming-theming-settings.js @@ -1,3 +1,3 @@ /*! For license information please see theming-theming-settings.js.LICENSE.txt */ -!function(){"use strict";var n,e={94818:function(n,e,r){var a=r(20144),o=r(79753),i=r(16453),c=r(4820),s=r(20571),u=r.n(s),d=r(13299),l=r.n(d),g=r(15168),p=r.n(g),h=function(n){return(0,o.generateFilePath)("theming","","img/background/")+n},m=function(n){var e,t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=(null===(e=window.OCA)||void 0===e||null===(t=e.Theming)||void 0===t?void 0:t.enabledThemes)||[],c=0===i.length||"default"===i[0]?window.matchMedia("(prefers-color-scheme: dark)").matches:-1!==i.join("").indexOf("dark");return"default"===n?a&&"backgroundColor"!==a?(0,o.generateUrl)("/apps/theming/image/background")+"?v="+window.OCA.Theming.cacheBuster:h(c?"eduardo-neves-pedra-azul.jpg":"kamil-porembinski-clouds.jpg"):"custom"===n?(0,o.generateUrl)("/apps/theming/background")+"?v="+r:h(n)};function A(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function f(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){A(o,r,a,i,c,"next",n)}function c(n){A(o,r,a,i,c,"throw",n)}i(void 0)}))}}var b=(0,i.loadState)("theming","shippedBackgrounds"),v={name:"BackgroundSettings",directives:{Tooltip:p()},props:{background:{type:String,default:"default"},themingDefaultBackground:{type:String,default:""}},data:function(){return{backgroundImage:(0,o.generateUrl)("/apps/theming/background")+"?v="+Date.now(),loading:!1}},computed:{shippedBackgrounds:function(){return Object.keys(b).map((function(n){return{name:n,url:h(n),preview:h("preview/"+n),details:b[n]}}))}},methods:{update:function(n){var e=this;return f(regeneratorRuntime.mark((function t(){var r,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r="custom"===n.type||"default"===n.type?n.type:n.value,e.backgroundImage=m(r,n.version,e.themingDefaultBackground),"color"!==n.type&&("default"!==n.type||"backgroundColor"!==e.themingDefaultBackground)){t.next=6;break}return e.$emit("update:background",n),e.loading=!1,t.abrupt("return");case 6:(a=new Image).onload=function(){e.$emit("update:background",n),e.loading=!1},a.src=e.backgroundImage;case 9:case"end":return t.stop()}}),t)})))()},setDefault:function(){var n=this;return f(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="default",e.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/default"));case 3:t=e.sent,n.update(t.data);case 5:case"end":return e.stop()}}),e)})))()},setShipped:function(n){var e=this;return f(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=n,t.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/shipped"),{value:n});case 3:r=t.sent,e.update(r.data);case 5:case"end":return t.stop()}}),t)})))()},setFile:function(n){var e=this;return f(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading="custom",t.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/custom"),{value:n});case 3:r=t.sent,e.update(r.data);case 5:case"end":return t.stop()}}),t)})))()},pickColor:function(){var n=this;return f(regeneratorRuntime.mark((function e(){var t,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="color",t=OCA&&OCA.Theming?OCA.Theming.color:"#0082c9",e.next=4,c.default.post((0,o.generateUrl)("/apps/theming/background/color"),{value:t});case 4:r=e.sent,n.update(r.data);case 6:case"end":return e.stop()}}),e)})))()},pickFile:function(){var n=this;window.OC.dialogs.filepicker(t("theming","Insert from {productName}",{productName:OC.theme.name}),(function(e,t){t===OC.dialogs.FILEPICKER_TYPE_CHOOSE&&n.setFile(e)}),!1,["image/png","image/gif","image/jpeg","image/svg"],!0,OC.dialogs.FILEPICKER_TYPE_CHOOSE)}}},k=v,C=r(93379),y=r.n(C),w=r(7795),_=r.n(w),x=r(90569),S=r.n(x),B=r(3565),T=r.n(B),I=r(19216),E=r.n(I),O=r(44589),D=r.n(O),P=r(35684),j={};j.styleTagTransform=D(),j.setAttributes=T(),j.insert=S().bind(null,"head"),j.domAPI=_(),j.insertStyleElement=E(),y()(P.Z,j),P.Z&&P.Z.locals&&P.Z.locals;var R=r(51900),q=(0,R.Z)(k,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"background-selector"},[t("button",{staticClass:"background filepicker",class:{active:"custom"===n.background},attrs:{tabindex:"0"},on:{click:n.pickFile}},[n._v("\n\t\t"+n._s(n.t("theming","Pick from Files"))+"\n\t")]),n._v(" "),t("button",{staticClass:"background default",class:{"icon-loading":"default"===n.loading,active:"default"===n.background},attrs:{tabindex:"0"},on:{click:n.setDefault}},[n._v("\n\t\t"+n._s(n.t("theming","Default image"))+"\n\t")]),n._v(" "),t("button",{staticClass:"background color",class:{active:n.background.startsWith("#")},attrs:{tabindex:"0"},on:{click:n.pickColor}},[n._v("\n\t\t"+n._s(n.t("theming","Plain background"))+"\n\t")]),n._v(" "),n._l(n.shippedBackgrounds,(function(e){return t("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:e.details.attribution,expression:"shippedBackground.details.attribution"}],key:e.name,staticClass:"background",class:{"icon-loading":n.loading===e.name,active:n.background===e.name},style:{"background-image":"url("+e.preview+")"},attrs:{tabindex:"0"},on:{click:function(t){return n.setShipped(e.name)}}})}))],2)}),[],!1,null,"5ccad868",null).exports,U={name:"ItemPreview",components:{NcCheckboxRadioSwitch:u()},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType:function(){return this.unique?"switch":"radio"},name:function(){return this.unique?null:this.type},img:function(){return(0,o.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get:function(){return this.selected},set:function(n){console.debug("Changed theme",this.theme.id,n),this.unique?this.$emit("change",{enabled:!0===n,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle:function(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}},Z=r(83005),F={};F.styleTagTransform=D(),F.setAttributes=T(),F.insert=S().bind(null,"head"),F.domAPI=_(),F.insertStyleElement=E(),y()(Z.Z,F),Z.Z&&Z.Z.locals&&Z.Z.locals;var L=(0,R.Z)(U,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"theming__preview",class:"theming__preview--"+n.theme.id},[t("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+n.img+")"},on:{click:n.onToggle}}),n._v(" "),t("div",{staticClass:"theming__preview-description"},[t("h3",[n._v(n._s(n.theme.title))]),n._v(" "),t("p",[n._v(n._s(n.theme.description))]),n._v(" "),n.enforced?t("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[n._v("\n\t\t\t"+n._s(n.t("theming","Theme selection is enforced"))+"\n\t\t")]):n._e(),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.checked,disabled:n.enforced,name:n.name,type:n.switchType},on:{"update:checked":function(e){n.checked=e}}},[n._v("\n\t\t\t"+n._s(n.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"37ca8ab2",null).exports;function G(n){return function(n){if(Array.isArray(n))return N(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return N(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?N(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function $(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function W(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){$(o,r,a,i,c,"next",n)}function c(n){$(o,r,a,i,c,"throw",n)}i(void 0)}))}}var K=(0,i.loadState)("theming","themes",[]),M=(0,i.loadState)("theming","enforceTheme",""),z=(0,i.loadState)("theming","shortcutsDisabled",!1),Y=(0,i.loadState)("theming","background"),H=(0,i.loadState)("theming","backgroundVersion"),V=(0,i.loadState)("theming","themingDefaultBackground"),J=(0,i.loadState)("theming","shippedBackgrounds");console.debug("Available themes",K);var Q={name:"UserThemes",components:{ItemPreview:L,NcCheckboxRadioSwitch:u(),NcSettingsSection:l(),BackgroundSettings:q},data:function(){return{availableThemes:K,enforceTheme:M,shortcutsDisabled:z,background:Y,backgroundVersion:H,themingDefaultBackground:V}},computed:{themes:function(){return this.availableThemes.filter((function(n){return 1===n.type}))},fonts:function(){return this.availableThemes.filter((function(n){return 2===n.type}))},selectedTheme:function(){return this.themes.find((function(n){return!0===n.enabled}))||this.themes[0]},description:function(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:function(){return'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">'},descriptionDetail:function(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:function(){return'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">'},designteamLink:function(){return'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'}},mounted:function(){this.updateGlobalStyles()},watch:{shortcutsDisabled:function(n){this.changeShortcutsDisabled(n)}},methods:{updateBackground:function(n){this.background="custom"===n.type||"default"===n.type?n.type:n.value,this.backgroundVersion=n.version,this.updateGlobalStyles(),this.$emit("update:background")},updateGlobalStyles:function(){var n;"dark"===(null===(n=J[this.background])||void 0===n?void 0:n.theming)?(document.querySelector("#header").style.setProperty("--primary-invert-if-bright","invert(100%)"),document.querySelector("#header").style.setProperty("--color-primary-text","#000000")):(document.querySelector("#header").style.setProperty("--primary-invert-if-bright","no"),document.querySelector("#header").style.setProperty("--color-primary-text","#ffffff"))},changeTheme:function(n){var e=n.enabled,t=n.id;this.themes.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeFont:function(n){var e=n.enabled,t=n.id;this.fonts.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeShortcutsDisabled:function(n){return W(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}return e.next=3,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"});case 3:e.next=7;break;case 5:return e.next=7,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"});case 7:case"end":return e.stop()}}),e)})))()},updateBodyAttributes:function(){var n=this.themes.filter((function(n){return!0===n.enabled})).map((function(n){return n.id})),e=this.fonts.filter((function(n){return!0===n.enabled})).map((function(n){return n.id}));this.themes.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),this.fonts.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),document.body.setAttribute("data-themes",[].concat(G(n),G(e)).join(","))},selectItem:function(n,e){return W(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!n){r.next=6;break}return r.next=4,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:e}),method:"PUT"});case 4:r.next=8;break;case 6:return r.next=8,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:e}),method:"DELETE"});case 8:r.next=14;break;case 10:r.prev=10,r.t0=r.catch(0),console.error(r.t0,r.t0.response),OC.Notification.showTemporary(t("theming",r.t0.response.data.ocs.meta.message+". Unable to apply the setting."));case 14:case"end":return r.stop()}}),r,null,[[0,10]])})))()}}},X=r(41936),nn={};nn.styleTagTransform=D(),nn.setAttributes=T(),nn.insert=S().bind(null,"head"),nn.domAPI=_(),nn.insertStyleElement=E(),y()(X.Z,nn),X.Z&&X.Z.locals&&X.Z.locals;var en=(0,R.Z)(Q,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("NcSettingsSection",{staticClass:"theming",attrs:{title:n.t("theming","Appearance and accessibility"),"limit-width":!1}},[t("p",{domProps:{innerHTML:n._s(n.description)}}),n._v(" "),t("p",{domProps:{innerHTML:n._s(n.descriptionDetail)}}),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.themes,(function(e){return t("ItemPreview",{key:e.id,attrs:{enforced:e.id===n.enforceTheme,selected:n.selectedTheme.id===e.id,theme:e,unique:1===n.themes.length,type:"theme"},on:{change:n.changeTheme}})})),1),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.fonts,(function(e){return t("ItemPreview",{key:e.id,attrs:{selected:e.enabled,theme:e,unique:1===n.fonts.length,type:"font"},on:{change:n.changeFont}})})),1)]),n._v(" "),t("NcSettingsSection",{attrs:{title:n.t("theming","Keyboard shortcuts")}},[t("p",[n._v(n._s(n.t("theming","In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.shortcutsDisabled,name:"shortcuts_disabled",type:"switch"},on:{"update:checked":function(e){n.shortcutsDisabled=e},change:n.changeShortcutsDisabled}},[n._v("\n\t\t\t"+n._s(n.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),n._v(" "),t("NcSettingsSection",{staticClass:"background",attrs:{title:n.t("theming","Background")}},[t("p",[n._v(n._s(n.t("theming","Set a custom background")))]),n._v(" "),t("BackgroundSettings",{staticClass:"background__grid",attrs:{background:n.background,"theming-default-background":n.themingDefaultBackground},on:{"update:background":n.updateBackground}})],1)],1)}),[],!1,null,"a788b9b8",null).exports;function tn(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}a.ZP.prototype.OC=OC,a.ZP.prototype.t=t;var rn=new(a.ZP.extend(en));rn.$mount("#theming"),rn.$on("update:background",(function(){var n;(n=document.head.querySelectorAll("link.theme"),function(n){if(Array.isArray(n))return tn(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return tn(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?tn(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).forEach((function(n){var e=new URL(n.href);e.searchParams.set("v",Date.now());var t=n.cloneNode();t.href=e.toString(),t.onload=function(){return n.remove()},document.head.append(t)}))}))},41936:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming p[data-v-a788b9b8]{max-width:800px}.theming[data-v-a788b9b8] a{font-weight:bold}.theming[data-v-a788b9b8] a:hover,.theming[data-v-a788b9b8] a:focus{text-decoration:underline}.theming__preview-list[data-v-a788b9b8]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-a788b9b8]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-a788b9b8]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AA+RC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]),e.Z=i},35684:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,'.background-selector[data-v-5ccad868]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-5ccad868]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-5ccad868]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-5ccad868],.background-selector .background.default[data-v-5ccad868],.background-selector .background.color[data-v-5ccad868]{border-color:var(--color-border)}.background-selector .background.color[data-v-5ccad868]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-5ccad868],.background-selector .background[data-v-5ccad868]:hover,.background-selector .background[data-v-5ccad868]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-5ccad868]:not(.icon-loading):after{background-image:var(--icon-checkmark-white);background-repeat:no-repeat;background-position:center;background-size:44px;content:"";display:block;height:100%}',"",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AAoJA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,4CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=i},83005:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=i}},r={};function a(n){var t=r[n];if(void 0!==t)return t.exports;var o=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}a.m=e,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(e,t,r,o){if(!t){var i=1/0;for(d=0;d<n.length;d++){t=n[d][0],r=n[d][1],o=n[d][2];for(var c=!0,s=0;s<t.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(n){return a.O[n](t[s])}))?t.splice(s--,1):(c=!1,o<i&&(i=o));if(c){n.splice(d--,1);var u=r();void 0!==u&&(e=u)}}return e}o=o||0;for(var d=n.length;d>0&&n[d-1][2]>o;d--)n[d]=n[d-1];n[d]=[t,r,o]},a.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(e,{a:e}),e},a.d=function(n,e){for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),a.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},a.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},a.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},a.j=6755,function(){a.b=document.baseURI||self.location.href;var n={6755:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,o,i=t[0],c=t[1],s=t[2],u=0;if(i.some((function(e){return 0!==n[e]}))){for(r in c)a.o(c,r)&&(a.m[r]=c[r]);if(s)var d=s(a)}for(e&&e(t);u<i.length;u++)o=i[u],a.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return a.O(d)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),a.nc=void 0;var o=a.O(void 0,[7874],(function(){return a(94818)}));o=a.O(o)}(); -//# sourceMappingURL=theming-theming-settings.js.map?v=7c6c2a5e9a4ab6b66a54
\ No newline at end of file +!function(){"use strict";var n,e={58078:function(n,e,r){var a=r(20144),o=r(79753),i=r(16453),c=r(4820),s=r(20571),u=r.n(s),d=r(13299),l=r.n(d),g=r(15168),p=r.n(g),h=function(n){return(0,o.generateFilePath)("theming","","img/background/")+n},m=function(n){var e,t,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",i=(null===(e=window.OCA)||void 0===e||null===(t=e.Theming)||void 0===t?void 0:t.enabledThemes)||[],c=0===i.length||"default"===i[0]?window.matchMedia("(prefers-color-scheme: dark)").matches:-1!==i.join("").indexOf("dark");return"default"===n?a&&"backgroundColor"!==a?(0,o.generateUrl)("/apps/theming/image/background")+"?v="+window.OCA.Theming.cacheBuster:h(c?"eduardo-neves-pedra-azul.jpg":"kamil-porembinski-clouds.jpg"):"custom"===n?(0,o.generateUrl)("/apps/theming/background")+"?v="+r:h(n)};function A(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function f(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){A(o,r,a,i,c,"next",n)}function c(n){A(o,r,a,i,c,"throw",n)}i(void 0)}))}}var b=(0,i.loadState)("theming","shippedBackgrounds"),v={name:"BackgroundSettings",directives:{Tooltip:p()},props:{background:{type:String,default:"default"},themingDefaultBackground:{type:String,default:""}},data:function(){return{backgroundImage:(0,o.generateUrl)("/apps/theming/background")+"?v="+Date.now(),loading:!1}},computed:{shippedBackgrounds:function(){return Object.keys(b).map((function(n){return{name:n,url:h(n),preview:h("preview/"+n),details:b[n]}}))}},methods:{update:function(n){var e=this;return f(regeneratorRuntime.mark((function t(){var r,a;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:if(r="custom"===n.type||"default"===n.type?n.type:n.value,e.backgroundImage=m(r,n.version,e.themingDefaultBackground),"color"!==n.type&&("default"!==n.type||"backgroundColor"!==e.themingDefaultBackground)){t.next=6;break}return e.$emit("update:background",n),e.loading=!1,t.abrupt("return");case 6:(a=new Image).onload=function(){e.$emit("update:background",n),e.loading=!1},a.src=e.backgroundImage;case 9:case"end":return t.stop()}}),t)})))()},setDefault:function(){var n=this;return f(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="default",e.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/default"));case 3:t=e.sent,n.update(t.data);case 5:case"end":return e.stop()}}),e)})))()},setShipped:function(n){var e=this;return f(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading=n,t.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/shipped"),{value:n});case 3:r=t.sent,e.update(r.data);case 5:case"end":return t.stop()}}),t)})))()},setFile:function(n){var e=this;return f(regeneratorRuntime.mark((function t(){var r;return regeneratorRuntime.wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return e.loading="custom",t.next=3,c.default.post((0,o.generateUrl)("/apps/theming/background/custom"),{value:n});case 3:r=t.sent,e.update(r.data);case 5:case"end":return t.stop()}}),t)})))()},pickColor:function(){var n=this;return f(regeneratorRuntime.mark((function e(){var t,r;return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n.loading="color",t=OCA&&OCA.Theming?OCA.Theming.color:"#0082c9",e.next=4,c.default.post((0,o.generateUrl)("/apps/theming/background/color"),{value:t});case 4:r=e.sent,n.update(r.data);case 6:case"end":return e.stop()}}),e)})))()},pickFile:function(){var n=this;window.OC.dialogs.filepicker(t("theming","Insert from {productName}",{productName:OC.theme.name}),(function(e,t){t===OC.dialogs.FILEPICKER_TYPE_CHOOSE&&n.setFile(e)}),!1,["image/png","image/gif","image/jpeg","image/svg"],!0,OC.dialogs.FILEPICKER_TYPE_CHOOSE)}}},k=v,C=r(93379),y=r.n(C),w=r(7795),_=r.n(w),x=r(90569),S=r.n(x),B=r(3565),T=r.n(B),I=r(19216),E=r.n(I),O=r(44589),D=r.n(O),P=r(79993),j={};j.styleTagTransform=D(),j.setAttributes=T(),j.insert=S().bind(null,"head"),j.domAPI=_(),j.insertStyleElement=E(),y()(P.Z,j),P.Z&&P.Z.locals&&P.Z.locals;var R=r(51900),U=(0,R.Z)(k,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"background-selector"},[t("button",{staticClass:"background filepicker",class:{active:"custom"===n.background},attrs:{tabindex:"0"},on:{click:n.pickFile}},[n._v("\n\t\t"+n._s(n.t("theming","Pick from Files"))+"\n\t")]),n._v(" "),t("button",{staticClass:"background default",class:{"icon-loading":"default"===n.loading,active:"default"===n.background},attrs:{tabindex:"0"},on:{click:n.setDefault}},[n._v("\n\t\t"+n._s(n.t("theming","Default image"))+"\n\t")]),n._v(" "),t("button",{staticClass:"background color",class:{active:n.background.startsWith("#")},attrs:{tabindex:"0"},on:{click:n.pickColor}},[n._v("\n\t\t"+n._s(n.t("theming","Plain background"))+"\n\t")]),n._v(" "),n._l(n.shippedBackgrounds,(function(e){return t("button",{directives:[{name:"tooltip",rawName:"v-tooltip",value:e.details.attribution,expression:"shippedBackground.details.attribution"}],key:e.name,staticClass:"background",class:{"icon-loading":n.loading===e.name,active:n.background===e.name},style:{"background-image":"url("+e.preview+")"},attrs:{tabindex:"0"},on:{click:function(t){return n.setShipped(e.name)}}})}))],2)}),[],!1,null,"48e565ba",null).exports,q={name:"ItemPreview",components:{NcCheckboxRadioSwitch:u()},props:{enforced:{type:Boolean,default:!1},selected:{type:Boolean,default:!1},theme:{type:Object,required:!0},type:{type:String,default:""},unique:{type:Boolean,default:!1}},computed:{switchType:function(){return this.unique?"switch":"radio"},name:function(){return this.unique?null:this.type},img:function(){return(0,o.generateFilePath)("theming","img",this.theme.id+".jpg")},checked:{get:function(){return this.selected},set:function(n){console.debug("Changed theme",this.theme.id,n),this.unique?this.$emit("change",{enabled:!0===n,id:this.theme.id}):this.$emit("change",{enabled:!0,id:this.theme.id})}}},methods:{onToggle:function(){"radio"!==this.switchType?this.checked=!this.checked:this.checked=!0}}},Z=r(83005),F={};F.styleTagTransform=D(),F.setAttributes=T(),F.insert=S().bind(null,"head"),F.domAPI=_(),F.insertStyleElement=E(),y()(Z.Z,F),Z.Z&&Z.Z.locals&&Z.Z.locals;var L=(0,R.Z)(q,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("div",{staticClass:"theming__preview",class:"theming__preview--"+n.theme.id},[t("div",{staticClass:"theming__preview-image",style:{backgroundImage:"url("+n.img+")"},on:{click:n.onToggle}}),n._v(" "),t("div",{staticClass:"theming__preview-description"},[t("h3",[n._v(n._s(n.theme.title))]),n._v(" "),t("p",[n._v(n._s(n.theme.description))]),n._v(" "),n.enforced?t("span",{staticClass:"theming__preview-warning",attrs:{role:"note"}},[n._v("\n\t\t\t"+n._s(n.t("theming","Theme selection is enforced"))+"\n\t\t")]):n._e(),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.checked,disabled:n.enforced,name:n.name,type:n.switchType},on:{"update:checked":function(e){n.checked=e}}},[n._v("\n\t\t\t"+n._s(n.theme.enableLabel)+"\n\t\t")])],1)])}),[],!1,null,"37ca8ab2",null).exports;function G(n){return function(n){if(Array.isArray(n))return N(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return N(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?N(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function N(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}function $(n,e,t,r,a,o,i){try{var c=n[o](i),s=c.value}catch(n){return void t(n)}c.done?e(s):Promise.resolve(s).then(r,a)}function W(n){return function(){var e=this,t=arguments;return new Promise((function(r,a){var o=n.apply(e,t);function i(n){$(o,r,a,i,c,"next",n)}function c(n){$(o,r,a,i,c,"throw",n)}i(void 0)}))}}var K=(0,i.loadState)("theming","themes",[]),M=(0,i.loadState)("theming","enforceTheme",""),z=(0,i.loadState)("theming","shortcutsDisabled",!1),Y=(0,i.loadState)("theming","background"),H=(0,i.loadState)("theming","backgroundVersion"),V=(0,i.loadState)("theming","themingDefaultBackground"),J=(0,i.loadState)("theming","shippedBackgrounds");console.debug("Available themes",K);var Q={name:"UserThemes",components:{ItemPreview:L,NcCheckboxRadioSwitch:u(),NcSettingsSection:l(),BackgroundSettings:U},data:function(){return{availableThemes:K,enforceTheme:M,shortcutsDisabled:z,background:Y,backgroundVersion:H,themingDefaultBackground:V}},computed:{themes:function(){return this.availableThemes.filter((function(n){return 1===n.type}))},fonts:function(){return this.availableThemes.filter((function(n){return 2===n.type}))},selectedTheme:function(){return this.themes.find((function(n){return!0===n.enabled}))||this.themes[0]},description:function(){return t("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.").replace("{guidelines}",this.guidelinesLink).replace("{linkend}","</a>")},guidelinesLink:function(){return'<a target="_blank" href="https://www.w3.org/WAI/standards-guidelines/wcag/" rel="noreferrer nofollow">'},descriptionDetail:function(){return t("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!").replace("{issuetracker}",this.issuetrackerLink).replace("{designteam}",this.designteamLink).replace(/\{linkend\}/g,"</a>")},issuetrackerLink:function(){return'<a target="_blank" href="https://github.com/nextcloud/server/issues/" rel="noreferrer nofollow">'},designteamLink:function(){return'<a target="_blank" href="https://nextcloud.com/design" rel="noreferrer nofollow">'}},mounted:function(){this.updateGlobalStyles()},watch:{shortcutsDisabled:function(n){this.changeShortcutsDisabled(n)}},methods:{updateBackground:function(n){this.background="custom"===n.type||"default"===n.type?n.type:n.value,this.backgroundVersion=n.version,this.updateGlobalStyles(),this.$emit("update:background")},updateGlobalStyles:function(){var n;"dark"===(null===(n=J[this.background])||void 0===n?void 0:n.theming)?(document.querySelector("#header").style.setProperty("--primary-invert-if-bright","invert(100%)"),document.querySelector("#header").style.setProperty("--color-primary-text","#000000")):(document.querySelector("#header").style.setProperty("--primary-invert-if-bright","no"),document.querySelector("#header").style.setProperty("--color-primary-text","#ffffff"))},changeTheme:function(n){var e=n.enabled,t=n.id;this.themes.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeFont:function(n){var e=n.enabled,t=n.id;this.fonts.forEach((function(n){n.id===t&&e?n.enabled=!0:n.enabled=!1})),this.updateBodyAttributes(),this.selectItem(e,t)},changeShortcutsDisabled:function(n){return W(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!n){e.next=5;break}return e.next=3,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),data:{configValue:"yes"},method:"POST"});case 3:e.next=7;break;case 5:return e.next=7,(0,c.default)({url:(0,o.generateOcsUrl)("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"}),method:"DELETE"});case 7:case"end":return e.stop()}}),e)})))()},updateBodyAttributes:function(){var n=this.themes.filter((function(n){return!0===n.enabled})).map((function(n){return n.id})),e=this.fonts.filter((function(n){return!0===n.enabled})).map((function(n){return n.id}));this.themes.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),this.fonts.forEach((function(n){document.body.toggleAttribute("data-theme-".concat(n.id),n.enabled)})),document.body.setAttribute("data-themes",[].concat(G(n),G(e)).join(","))},selectItem:function(n,e){return W(regeneratorRuntime.mark((function r(){return regeneratorRuntime.wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(r.prev=0,!n){r.next=6;break}return r.next=4,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}/enable",{themeId:e}),method:"PUT"});case 4:r.next=8;break;case 6:return r.next=8,(0,c.default)({url:(0,o.generateOcsUrl)("apps/theming/api/v1/theme/{themeId}",{themeId:e}),method:"DELETE"});case 8:r.next=14;break;case 10:r.prev=10,r.t0=r.catch(0),console.error(r.t0,r.t0.response),OC.Notification.showTemporary(t("theming",r.t0.response.data.ocs.meta.message+". Unable to apply the setting."));case 14:case"end":return r.stop()}}),r,null,[[0,10]])})))()}}},X=r(41936),nn={};nn.styleTagTransform=D(),nn.setAttributes=T(),nn.insert=S().bind(null,"head"),nn.domAPI=_(),nn.insertStyleElement=E(),y()(X.Z,nn),X.Z&&X.Z.locals&&X.Z.locals;var en=(0,R.Z)(Q,(function(){var n=this,e=n.$createElement,t=n._self._c||e;return t("section",[t("NcSettingsSection",{staticClass:"theming",attrs:{title:n.t("theming","Appearance and accessibility"),"limit-width":!1}},[t("p",{domProps:{innerHTML:n._s(n.description)}}),n._v(" "),t("p",{domProps:{innerHTML:n._s(n.descriptionDetail)}}),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.themes,(function(e){return t("ItemPreview",{key:e.id,attrs:{enforced:e.id===n.enforceTheme,selected:n.selectedTheme.id===e.id,theme:e,unique:1===n.themes.length,type:"theme"},on:{change:n.changeTheme}})})),1),n._v(" "),t("div",{staticClass:"theming__preview-list"},n._l(n.fonts,(function(e){return t("ItemPreview",{key:e.id,attrs:{selected:e.enabled,theme:e,unique:1===n.fonts.length,type:"font"},on:{change:n.changeFont}})})),1)]),n._v(" "),t("NcSettingsSection",{attrs:{title:n.t("theming","Keyboard shortcuts")}},[t("p",[n._v(n._s(n.t("theming","In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")))]),n._v(" "),t("NcCheckboxRadioSwitch",{staticClass:"theming__preview-toggle",attrs:{checked:n.shortcutsDisabled,name:"shortcuts_disabled",type:"switch"},on:{"update:checked":function(e){n.shortcutsDisabled=e},change:n.changeShortcutsDisabled}},[n._v("\n\t\t\t"+n._s(n.t("theming","Disable all keyboard shortcuts"))+"\n\t\t")])],1),n._v(" "),t("NcSettingsSection",{staticClass:"background",attrs:{title:n.t("theming","Background")}},[t("p",[n._v(n._s(n.t("theming","Set a custom background")))]),n._v(" "),t("BackgroundSettings",{staticClass:"background__grid",attrs:{background:n.background,"theming-default-background":n.themingDefaultBackground},on:{"update:background":n.updateBackground}})],1)],1)}),[],!1,null,"a788b9b8",null).exports;function tn(n,e){(null==e||e>n.length)&&(e=n.length);for(var t=0,r=new Array(e);t<e;t++)r[t]=n[t];return r}a.ZP.prototype.OC=OC,a.ZP.prototype.t=t;var rn=new(a.ZP.extend(en));rn.$mount("#theming"),rn.$on("update:background",(function(){var n;(n=document.head.querySelectorAll("link.theme"),function(n){if(Array.isArray(n))return tn(n)}(n)||function(n){if("undefined"!=typeof Symbol&&null!=n[Symbol.iterator]||null!=n["@@iterator"])return Array.from(n)}(n)||function(n,e){if(n){if("string"==typeof n)return tn(n,e);var t=Object.prototype.toString.call(n).slice(8,-1);return"Object"===t&&n.constructor&&(t=n.constructor.name),"Map"===t||"Set"===t?Array.from(n):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?tn(n,e):void 0}}(n)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()).forEach((function(n){var e=new URL(n.href);e.searchParams.set("v",Date.now());var t=n.cloneNode();t.href=e.toString(),t.onload=function(){return n.remove()},document.head.append(t)}))}))},41936:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming p[data-v-a788b9b8]{max-width:800px}.theming[data-v-a788b9b8] a{font-weight:bold}.theming[data-v-a788b9b8] a:hover,.theming[data-v-a788b9b8] a:focus{text-decoration:underline}.theming__preview-list[data-v-a788b9b8]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-a788b9b8]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-a788b9b8]{display:flex;flex-direction:column}}","",{version:3,sources:["webpack://./apps/theming/src/UserThemes.vue"],names:[],mappings:"AA+RC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n"],sourceRoot:""}]),e.Z=i},79993:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,'.background-selector[data-v-48e565ba]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-48e565ba]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-48e565ba]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-48e565ba],.background-selector .background.default[data-v-48e565ba],.background-selector .background.color[data-v-48e565ba]{border-color:var(--color-border)}.background-selector .background.color[data-v-48e565ba]{background-color:var(--color-main-background-not-plain, var(--color-primary));color:var(--color-primary-text)}.background-selector .background.active[data-v-48e565ba],.background-selector .background[data-v-48e565ba]:hover,.background-selector .background[data-v-48e565ba]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-48e565ba]:not(.icon-loading):after{background-image:var(--icon-checkmark-white);background-repeat:no-repeat;background-position:center;background-size:44px;content:"";display:block;height:100%}',"",{version:3,sources:["webpack://./apps/theming/src/components/BackgroundSettings.vue"],names:[],mappings:"AAoJA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,6EAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,4CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-main-background-not-plain, var(--color-primary));\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\t\t}\n\t}\n}\n"],sourceRoot:""}]),e.Z=i},83005:function(n,e,t){var r=t(87537),a=t.n(r),o=t(23645),i=t.n(o)()(a());i.push([n.id,".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}","",{version:3,sources:["webpack://./apps/theming/src/components/ItemPreview.vue"],names:[],mappings:"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA",sourcesContent:["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n"],sourceRoot:""}]),e.Z=i}},r={};function a(n){var t=r[n];if(void 0!==t)return t.exports;var o=r[n]={id:n,loaded:!1,exports:{}};return e[n].call(o.exports,o,o.exports,a),o.loaded=!0,o.exports}a.m=e,a.amdD=function(){throw new Error("define cannot be used indirect")},a.amdO={},n=[],a.O=function(e,t,r,o){if(!t){var i=1/0;for(d=0;d<n.length;d++){t=n[d][0],r=n[d][1],o=n[d][2];for(var c=!0,s=0;s<t.length;s++)(!1&o||i>=o)&&Object.keys(a.O).every((function(n){return a.O[n](t[s])}))?t.splice(s--,1):(c=!1,o<i&&(i=o));if(c){n.splice(d--,1);var u=r();void 0!==u&&(e=u)}}return e}o=o||0;for(var d=n.length;d>0&&n[d-1][2]>o;d--)n[d]=n[d-1];n[d]=[t,r,o]},a.n=function(n){var e=n&&n.__esModule?function(){return n.default}:function(){return n};return a.d(e,{a:e}),e},a.d=function(n,e){for(var t in e)a.o(e,t)&&!a.o(n,t)&&Object.defineProperty(n,t,{enumerable:!0,get:e[t]})},a.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(n){if("object"==typeof window)return window}}(),a.o=function(n,e){return Object.prototype.hasOwnProperty.call(n,e)},a.r=function(n){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})},a.nmd=function(n){return n.paths=[],n.children||(n.children=[]),n},a.j=6755,function(){a.b=document.baseURI||self.location.href;var n={6755:0};a.O.j=function(e){return 0===n[e]};var e=function(e,t){var r,o,i=t[0],c=t[1],s=t[2],u=0;if(i.some((function(e){return 0!==n[e]}))){for(r in c)a.o(c,r)&&(a.m[r]=c[r]);if(s)var d=s(a)}for(e&&e(t);u<i.length;u++)o=i[u],a.o(n,o)&&n[o]&&n[o][0](),n[o]=0;return a.O(d)},t=self.webpackChunknextcloud=self.webpackChunknextcloud||[];t.forEach(e.bind(null,0)),t.push=e.bind(null,t.push.bind(t))}(),a.nc=void 0;var o=a.O(void 0,[7874],(function(){return a(58078)}));o=a.O(o)}(); +//# sourceMappingURL=theming-theming-settings.js.map?v=478aa74ec2979a9203af
\ No newline at end of file diff --git a/dist/theming-theming-settings.js.map b/dist/theming-theming-settings.js.map index 5b32270cc3d..7a624787221 100644 --- a/dist/theming-theming-settings.js.map +++ b/dist/theming-theming-settings.js.map @@ -1 +1 @@ -{"version":3,"file":"theming-theming-settings.js?v=7c6c2a5e9a4ab6b66a54","mappings":";6BAAIA,sICwBSC,EAAoB,SAACC,GAAD,OAASC,EAAAA,EAAAA,kBAAiB,UAAW,GAAI,mBAAqBD,GCGlFE,EAAmB,SAACC,GAAwD,QAA5CC,EAA4C,uDAArC,EAAGC,EAAkC,uDAAP,GAC3EC,GAAgB,UAAAC,OAAOC,WAAP,mBAAYC,eAAZ,eAAqBH,gBAAiB,GACtDI,EAAwC,IAAzBJ,EAAcK,QAAqC,YAArBL,EAAc,GAC9DC,OAAOK,WAAW,gCAAgCC,SACN,IAA5CP,EAAcQ,KAAK,IAAIC,QAAQ,QAElC,MAAmB,YAAfZ,EACCE,GAAyD,oBAA7BA,GACxBW,EAAAA,EAAAA,aAAY,kCAAoC,MAAQT,OAAOC,IAAIC,QAAQQ,YAI3ElB,EADJW,EACsB,+BAGD,gCACA,WAAfP,GACHa,EAAAA,EAAAA,aAAY,4BAA8B,MAAQZ,EAGnDL,EAAkBI,gUCiB1B,sDAEA,GACA,0BACA,YACA,aAEA,OACA,YACA,YACA,mBAEA,0BACA,YACA,aAGA,KAfA,WAgBA,OACA,+EACA,aAGA,UACA,mBADA,WAEA,uCACA,OACA,OACA,SACA,wBACA,mBAKA,SACA,OADA,SACA,wJACA,uDACA,4DACA,uFAHA,uBAIA,+BACA,aALA,2BAQA,aACA,kBACA,+BACA,cAEA,wBAbA,8CAeA,WAhBA,WAgBA,uJACA,oBADA,SAEA,sEAFA,OAEA,EAFA,OAGA,iBAHA,8CAKA,WArBA,SAqBA,0JACA,YADA,SAEA,gFAFA,OAEA,EAFA,OAGA,iBAHA,8CAKA,QA1BA,SA0BA,0JACA,mBADA,SAEA,+EAFA,OAEA,EAFA,OAGA,iBAHA,8CAKA,UA/BA,WA+BA,yJACA,kBACA,+CAFA,SAGA,8EAHA,OAGA,EAHA,OAIA,iBAJA,8CAMA,SArCA,WAqCA,WACA,iHACA,uCACA,gBAEA,8FC7I+L,qICW3Le,EAAU,GAEdA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,eCFA,GAXgB,OACd,GCTW,WAAa,IAAIM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,SAAS,CAACE,YAAY,wBAAwBC,MAAM,CAAEC,OAA2B,WAAnBR,EAAIrB,YAA0B8B,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQV,EAAIW,WAAW,CAACX,EAAIY,GAAG,SAASZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,oBAAoB,UAAUd,EAAIY,GAAG,KAAKR,EAAG,SAAS,CAACE,YAAY,qBAAqBC,MAAM,CAAE,eAAgC,YAAhBP,EAAIe,QAAuBP,OAA2B,YAAnBR,EAAIrB,YAA2B8B,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQV,EAAIgB,aAAa,CAAChB,EAAIY,GAAG,SAASZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,kBAAkB,UAAUd,EAAIY,GAAG,KAAKR,EAAG,SAAS,CAACE,YAAY,mBAAmBC,MAAM,CAAEC,OAAQR,EAAIrB,WAAWsC,WAAW,MAAOR,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQV,EAAIkB,YAAY,CAAClB,EAAIY,GAAG,SAASZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,qBAAqB,UAAUd,EAAIY,GAAG,KAAKZ,EAAImB,GAAInB,EAAsB,oBAAE,SAASoB,GAAmB,OAAOhB,EAAG,SAAS,CAACiB,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,YAAYC,MAAOJ,EAAkBK,QAAmB,YAAEC,WAAW,0CAA0CC,IAAIP,EAAkBE,KAAKhB,YAAY,aAAaC,MAAM,CAAE,eAAgBP,EAAIe,UAAYK,EAAkBE,KAAMd,OAAQR,EAAIrB,aAAeyC,EAAkBE,MAAOM,MAAM,CAAG,mBAAoB,OAASR,EAAkBS,QAAU,KAAOpB,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQ,SAASoB,GAAQ,OAAO9B,EAAI+B,WAAWX,EAAkBE,cAAa,KAC14C,IDWpB,EACA,KACA,WACA,MAI8B,QEnBwJ,ECwBxL,CACA,mBACA,YACA,2BAEA,OACA,UACA,aACA,YAEA,UACA,aACA,YAEA,OACA,YACA,aAEA,MACA,YACA,YAEA,QACA,aACA,aAGA,UACA,WADA,WAEA,qCAGA,KALA,WAMA,mCAGA,IATA,WAUA,oEAGA,SACA,IADA,WAEA,sBAEA,IAJA,SAIA,GACA,+CAGA,YAMA,uDALA,sDAUA,SACA,SADA,WAEA,0BAMA,2BALA,8BC3EI,EAAU,GAEd,EAAQ3B,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,GAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,mBAAmBC,MAAM,qBAAuBP,EAAIgC,MAAMC,IAAI,CAAC7B,EAAG,MAAM,CAACE,YAAY,yBAAyBsB,MAAM,CAAGM,gBAAiB,OAASlC,EAAImC,IAAM,KAAOzB,GAAG,CAAC,MAAQV,EAAIoC,YAAYpC,EAAIY,GAAG,KAAKR,EAAG,MAAM,CAACE,YAAY,gCAAgC,CAACF,EAAG,KAAK,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIgC,MAAMK,UAAUrC,EAAIY,GAAG,KAAKR,EAAG,IAAI,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIgC,MAAMM,gBAAgBtC,EAAIY,GAAG,KAAMZ,EAAY,SAAEI,EAAG,OAAO,CAACE,YAAY,2BAA2BG,MAAM,CAAC,KAAO,SAAS,CAACT,EAAIY,GAAG,WAAWZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,gCAAgC,YAAYd,EAAIuC,KAAKvC,EAAIY,GAAG,KAAKR,EAAG,wBAAwB,CAACE,YAAY,0BAA0BG,MAAM,CAAC,QAAUT,EAAIwC,QAAQ,SAAWxC,EAAIyC,SAAS,KAAOzC,EAAIsB,KAAK,KAAOtB,EAAI0C,YAAYhC,GAAG,CAAC,iBAAiB,SAASoB,GAAQ9B,EAAIwC,QAAQV,KAAU,CAAC9B,EAAIY,GAAG,WAAWZ,EAAIa,GAAGb,EAAIgC,MAAMW,aAAa,aAAa,OACh7B,IDWpB,EACA,KACA,WACA,MAI8B,ojCEkEhC,6CACA,+CACA,oDAEA,0CACA,iDACA,wDACA,kDAEAC,QAAQC,MAAM,mBAAoBC,GAElC,IChGiL,EDgGjL,CACA,kBACA,YACA,cACA,0BACA,sBACA,sBAGA,KATA,WAUA,OACA,kBACA,eACA,oBACA,aACA,oBACA,6BAIA,UACA,OADA,WAEA,sEAEA,MAJA,WAKA,sEAIA,cATA,WAUA,8EAGA,YAbA,WAeA,SACA,UACA,sUAEA,4CACA,6BAEA,eAtBA,WAuBA,gHAEA,kBAzBA,WA0BA,SACA,UACA,wLAEA,gDACA,4CACA,gCAEA,iBAlCA,WAmCA,0GAEA,eArCA,WAsCA,4FAIA,QA9DA,WA+DA,2BAGA,OACA,kBADA,SACA,GACA,kCAIA,SACA,iBADA,SACA,GACA,qEACA,iCACA,0BACA,iCAEA,mBAPA,WAOA,MAEA,uEAEA,iGACA,wFAIA,uFACA,wFAKA,YAtBA,YAsBA,uBAEA,iCACA,YACA,aAGA,gBAGA,4BACA,sBAEA,WAnCA,YAmCA,uBAEA,gCACA,YACA,aAGA,gBAGA,4BACA,sBAGA,wBAjDA,SAiDA,sIACA,EADA,iCAEA,cACA,0FACA,gBACA,iCAEA,MACA,mBAEA,gBAVA,8CAaA,cACA,0FACA,gBACA,iCAEA,kBAlBA,8CAuBA,qBAxEA,WAyEA,8FACA,yFAEA,iCACA,uEAEA,gCACA,uEAGA,0EAUA,WA7FA,SA6FA,iJAEA,EAFA,iCAGA,cACA,mFACA,eALA,8CAQA,cACA,4EACA,kBAVA,yDAeA,kCACA,iHAhBA,0EE1PI,GAAU,GAEd,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,IAAS,IAKJ,KAAW,YAAiB,WALlD,ICFA,IAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACA,EAAG,oBAAoB,CAACE,YAAY,UAAUG,MAAM,CAAC,MAAQT,EAAIc,EAAE,UAAW,gCAAgC,eAAc,IAAQ,CAACV,EAAG,IAAI,CAAC2C,SAAS,CAAC,UAAY/C,EAAIa,GAAGb,EAAIsC,gBAAgBtC,EAAIY,GAAG,KAAKR,EAAG,IAAI,CAAC2C,SAAS,CAAC,UAAY/C,EAAIa,GAAGb,EAAIgD,sBAAsBhD,EAAIY,GAAG,KAAKR,EAAG,MAAM,CAACE,YAAY,yBAAyBN,EAAImB,GAAInB,EAAU,QAAE,SAASgC,GAAO,OAAO5B,EAAG,cAAc,CAACuB,IAAIK,EAAMC,GAAGxB,MAAM,CAAC,SAAWuB,EAAMC,KAAOjC,EAAIiD,aAAa,SAAWjD,EAAIkD,cAAcjB,KAAOD,EAAMC,GAAG,MAAQD,EAAM,OAA+B,IAAtBhC,EAAImD,OAAOhE,OAAa,KAAO,SAASuB,GAAG,CAAC,OAASV,EAAIoD,kBAAiB,GAAGpD,EAAIY,GAAG,KAAKR,EAAG,MAAM,CAACE,YAAY,yBAAyBN,EAAImB,GAAInB,EAAS,OAAE,SAASgC,GAAO,OAAO5B,EAAG,cAAc,CAACuB,IAAIK,EAAMC,GAAGxB,MAAM,CAAC,SAAWuB,EAAMqB,QAAQ,MAAQrB,EAAM,OAA8B,IAArBhC,EAAIsD,MAAMnE,OAAa,KAAO,QAAQuB,GAAG,CAAC,OAASV,EAAIuD,iBAAgB,KAAKvD,EAAIY,GAAG,KAAKR,EAAG,oBAAoB,CAACK,MAAM,CAAC,MAAQT,EAAIc,EAAE,UAAW,wBAAwB,CAACV,EAAG,IAAI,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,sOAAsOd,EAAIY,GAAG,KAAKR,EAAG,wBAAwB,CAACE,YAAY,0BAA0BG,MAAM,CAAC,QAAUT,EAAIwD,kBAAkB,KAAO,qBAAqB,KAAO,UAAU9C,GAAG,CAAC,iBAAiB,SAASoB,GAAQ9B,EAAIwD,kBAAkB1B,GAAQ,OAAS9B,EAAIyD,0BAA0B,CAACzD,EAAIY,GAAG,WAAWZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,mCAAmC,aAAa,GAAGd,EAAIY,GAAG,KAAKR,EAAG,oBAAoB,CAACE,YAAY,aAAaG,MAAM,CAAC,MAAQT,EAAIc,EAAE,UAAW,gBAAgB,CAACV,EAAG,IAAI,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,+BAA+Bd,EAAIY,GAAG,KAAKR,EAAG,qBAAqB,CAACE,YAAY,mBAAmBG,MAAM,CAAC,WAAaT,EAAIrB,WAAW,6BAA6BqB,EAAInB,0BAA0B6B,GAAG,CAAC,oBAAoBV,EAAI0D,qBAAqB,IAAI,KAC9gE,IDWpB,EACA,KACA,WACA,MAI8B,mHEOhCC,EAAAA,GAAAA,UAAAA,GAAmBC,GACnBD,EAAAA,GAAAA,UAAAA,EAAkB7C,EAElB,IACM+C,GAAU,IADHF,EAAAA,GAAAA,OAAWG,KAExBD,GAAQE,OAAO,YAEfF,GAAQG,IAAI,qBAAqB,oBAE5BC,SAASC,KAAKC,iBAAiB,moBAAeC,SAAQ,SAAApC,GACzD,IAAMxD,EAAM,IAAI6F,IAAIrC,EAAMsC,MAC1B9F,EAAI+F,aAAaC,IAAI,IAAKC,KAAKC,OAC/B,IAAMC,EAAW3C,EAAM4C,YACvBD,EAASL,KAAO9F,EAAIqG,WACpBF,EAASG,OAAS,kBAAM9C,EAAM+C,UAC9Bd,SAASC,KAAKc,OAAOL,mECtCnBM,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOlD,GAAI,ifAAkf,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,iLAAiL,eAAiB,CAAC,msCAAmsC,WAAa,MAE9gE,gECJIgD,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOlD,GAAI,utCAA0tC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,4SAA4S,eAAiB,CAAC,m0CAAm0C,WAAa,MAEpgG,gECJIgD,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOlD,GAAI,k5BAAm5B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,8SAA8S,eAAiB,CAAC,olCAAolC,WAAa,MAEz8E,QCNImD,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjDrD,GAAIqD,EACJI,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,QAIfJ,EAAoBQ,EAAIF,EC5BxBN,EAAoBS,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBV,EAAoBW,KAAO,GxBAvB1H,EAAW,GACf+G,EAAoBY,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIlI,EAASa,OAAQqH,IAAK,CACrCL,EAAW7H,EAASkI,GAAG,GACvBJ,EAAK9H,EAASkI,GAAG,GACjBH,EAAW/H,EAASkI,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAShH,OAAQuH,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKvB,EAAoBY,GAAGY,OAAM,SAASlF,GAAO,OAAO0D,EAAoBY,EAAEtE,GAAKwE,EAASO,OAC3JP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbnI,EAASwI,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACEZ,IAANuB,IAAiBb,EAASa,IAGhC,OAAOb,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIlI,EAASa,OAAQqH,EAAI,GAAKlI,EAASkI,EAAI,GAAG,GAAKH,EAAUG,IAAKlI,EAASkI,GAAKlI,EAASkI,EAAI,GACrGlI,EAASkI,GAAK,CAACL,EAAUC,EAAIC,IyBJ/BhB,EAAoB2B,EAAI,SAAS7B,GAChC,IAAI8B,EAAS9B,GAAUA,EAAO+B,WAC7B,WAAa,OAAO/B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoB8B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR5B,EAAoB8B,EAAI,SAAS1B,EAAS4B,GACzC,IAAI,IAAI1F,KAAO0F,EACXhC,EAAoBiC,EAAED,EAAY1F,KAAS0D,EAAoBiC,EAAE7B,EAAS9D,IAC5EgF,OAAOY,eAAe9B,EAAS9D,EAAK,CAAE6F,YAAY,EAAMC,IAAKJ,EAAW1F,MCJ3E0D,EAAoBqC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO1H,MAAQ,IAAI2H,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAX9I,OAAqB,OAAOA,QALjB,GCAxBsG,EAAoBiC,EAAI,SAASQ,EAAKC,GAAQ,OAAOpB,OAAOqB,UAAUC,eAAerC,KAAKkC,EAAKC,ICC/F1C,EAAoB0B,EAAI,SAAStB,GACX,oBAAXyC,QAA0BA,OAAOC,aAC1CxB,OAAOY,eAAe9B,EAASyC,OAAOC,YAAa,CAAE3G,MAAO,WAE7DmF,OAAOY,eAAe9B,EAAS,aAAc,CAAEjE,OAAO,KCLvD6D,EAAoB+C,IAAM,SAASjD,GAGlC,OAFAA,EAAOkD,MAAQ,GACVlD,EAAOmD,WAAUnD,EAAOmD,SAAW,IACjCnD,GCHRE,EAAoBqB,EAAI,gBCAxBrB,EAAoBkD,EAAItE,SAASuE,SAAWC,KAAKC,SAASpE,KAK1D,IAAIqE,EAAkB,CACrB,KAAM,GAaPtD,EAAoBY,EAAES,EAAI,SAASkC,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BC,GAC/D,IAKIzD,EAAUsD,EALVzC,EAAW4C,EAAK,GAChBC,EAAcD,EAAK,GACnBE,EAAUF,EAAK,GAGIvC,EAAI,EAC3B,GAAGL,EAAS+C,MAAK,SAASjH,GAAM,OAA+B,IAAxB0G,EAAgB1G,MAAe,CACrE,IAAIqD,KAAY0D,EACZ3D,EAAoBiC,EAAE0B,EAAa1D,KACrCD,EAAoBQ,EAAEP,GAAY0D,EAAY1D,IAGhD,GAAG2D,EAAS,IAAI/C,EAAS+C,EAAQ5D,GAGlC,IADGyD,GAA4BA,EAA2BC,GACrDvC,EAAIL,EAAShH,OAAQqH,IACzBoC,EAAUzC,EAASK,GAChBnB,EAAoBiC,EAAEqB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOvD,EAAoBY,EAAEC,IAG1BiD,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmB/E,QAAQyE,EAAqBO,KAAK,KAAM,IAC3DD,EAAmBjE,KAAO2D,EAAqBO,KAAK,KAAMD,EAAmBjE,KAAKkE,KAAKD,OClDvF9D,EAAoBgE,QAAK7D,ECGzB,IAAI8D,EAAsBjE,EAAoBY,OAAET,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,UAC3GiE,EAAsBjE,EAAoBY,EAAEqD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/theming/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?8c38","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=template&id=5ccad868&scoped=true&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?f1c6","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/UserThemes.vue?52b2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=template&id=a788b9b8&scoped=true&","webpack:///nextcloud/apps/theming/src/settings.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=5ccad868&scoped=true&lang=scss&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateFilePath } from '@nextcloud/router'\n\nexport const prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { prefixWithBaseUrl } from './prefixWithBaseUrl.js'\n\nexport const getBackgroundUrl = (background, time = 0, themingDefaultBackground = '') => {\n\tconst enabledThemes = window.OCA?.Theming?.enabledThemes || []\n\tconst isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default')\n\t\t? window.matchMedia('(prefers-color-scheme: dark)').matches\n\t\t: enabledThemes.join('').indexOf('dark') !== -1\n\n\tif (background === 'default') {\n\t\tif (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n\t\t\treturn generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster\n\t\t}\n\n\t\tif (isDarkTheme) {\n\t\t\treturn prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')\n\t\t}\n\n\t\treturn prefixWithBaseUrl('kamil-porembinski-clouds.jpg')\n\t} else if (background === 'custom') {\n\t\treturn generateUrl('/apps/theming/background') + '?v=' + time\n\t}\n\n\treturn prefixWithBaseUrl(background)\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\">\n\t\t<button class=\"background filepicker\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Pick from Files') }}\n\t\t</button>\n\t\t<button class=\"background default\"\n\t\t\ttabindex=\"0\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', active: background === 'default' }\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default image') }}\n\t\t</button>\n\t\t<button class=\"background color\"\n\t\t\t:class=\"{ active: background.startsWith('#') }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickColor\">\n\t\t\t{{ t('theming', 'Plain background') }}\n\t\t</button>\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, active: background === shippedBackground.name }\"\n\t\t\ttabindex=\"0\"\n\t\t\tclass=\"background\"\n\t\t\t:style=\"{ 'background-image': 'url(' + shippedBackground.preview + ')' }\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getBackgroundUrl } from '../helpers/getBackgroundUrl.js'\nimport { prefixWithBaseUrl } from '../helpers/prefixWithBaseUrl.js'\n\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\n\nexport default {\n\tname: 'BackgroundSettings',\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\tbackground: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default',\n\t\t},\n\t\tthemingDefaultBackground: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundImage: generateUrl('/apps/theming/background') + '?v=' + Date.now(),\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList).map(fileName => {\n\t\t\t\treturn {\n\t\t\t\t\tname: fileName,\n\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\tasync update(data) {\n\t\t\tconst background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)\n\t\t\tif (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t\timage.src = this.backgroundImage\n\t\t},\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setFile(path) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync pickColor() {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = OCA && OCA.Theming ? OCA.Theming.color : '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { value: color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tpickFile() {\n\t\t\twindow.OC.dialogs.filepicker(t('theming', 'Insert from {productName}', { productName: OC.theme.name }), (path, type) => {\n\t\t\t\tif (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\t\tthis.setFile(path)\n\t\t\t\t}\n\t\t\t}, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-primary);\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=5ccad868&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=5ccad868&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=5ccad868&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=5ccad868&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"5ccad868\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"background-selector\"},[_c('button',{staticClass:\"background filepicker\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Pick from Files'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background default\",class:{ 'icon-loading': _vm.loading === 'default', active: _vm.background === 'default' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default image'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background color\",class:{ active: _vm.background.startsWith('#') },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickColor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Plain background'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, active: _vm.background === shippedBackground.name },style:({ 'background-image': 'url(' + shippedBackground.preview + ')' }),attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p>{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37ca8ab2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Appearance and accessibility')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<p v-html=\"description\" />\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\tname=\"shortcuts_disabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\">\n\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t<BackgroundSettings class=\"background__grid\"\n\t\t\t\t:background=\"background\"\n\t\t\t\t:theming-default-background=\"themingDefaultBackground\"\n\t\t\t\t@update:background=\"updateBackground\" />\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\n\nconst background = loadState('theming', 'background')\nconst backgroundVersion = loadState('theming', 'backgroundVersion')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\n\nconsole.debug('Available themes', availableThemes)\n\nexport default {\n\tname: 'UserThemes',\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tbackground,\n\t\t\tbackgroundVersion,\n\t\t\tthemingDefaultBackground,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.updateGlobalStyles()\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.backgroundVersion = data.version\n\t\t\tthis.updateGlobalStyles()\n\t\t\tthis.$emit('update:background')\n\t\t},\n\t\tupdateGlobalStyles() {\n\t\t\t// Override primary-invert-if-bright and color-primary-text if background is set\n\t\t\tconst isBackgroundBright = shippedBackgroundList[this.background]?.theming === 'dark'\n\t\t\tif (isBackgroundBright) {\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'invert(100%)')\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--color-primary-text', '#000000')\n\t\t\t\t// document.body.removeAttribute('data-theme-dark')\n\t\t\t\t// document.body.setAttribute('data-theme-light', 'true')\n\t\t\t} else {\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'no')\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--color-primary-text', '#ffffff')\n\t\t\t\t// document.body.removeAttribute('data-theme-light')\n\t\t\t\t// document.body.setAttribute('data-theme-dark', 'true')\n\t\t\t}\n\t\t},\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=a788b9b8&scoped=true&\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js&\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a788b9b8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"title\":_vm.t('theming', 'Appearance and accessibility'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"name\":\"shortcuts_disabled\",\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"title\":_vm.t('theming', 'Background')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",attrs:{\"background\":_vm.background,\"theming-default-background\":_vm.themingDefaultBackground},on:{\"update:background\":_vm.updateBackground}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './UserThemes.vue'\n\n// bind to window\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\n\ntheming.$on('update:background', () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming p[data-v-a788b9b8]{max-width:800px}.theming[data-v-a788b9b8] a{font-weight:bold}.theming[data-v-a788b9b8] a:hover,.theming[data-v-a788b9b8] a:focus{text-decoration:underline}.theming__preview-list[data-v-a788b9b8]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-a788b9b8]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-a788b9b8]{display:flex;flex-direction:column}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AA+RC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-5ccad868]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-5ccad868]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-5ccad868]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-5ccad868],.background-selector .background.default[data-v-5ccad868],.background-selector .background.color[data-v-5ccad868]{border-color:var(--color-border)}.background-selector .background.color[data-v-5ccad868]{background-color:var(--color-primary);color:var(--color-primary-text)}.background-selector .background.active[data-v-5ccad868],.background-selector .background[data-v-5ccad868]:hover,.background-selector .background[data-v-5ccad868]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-5ccad868]:not(.icon-loading):after{background-image:var(--icon-checkmark-white);background-repeat:no-repeat;background-position:center;background-size:44px;content:\\\"\\\";display:block;height:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AAoJA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,qCAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,4CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center center;\\n\\t\\ttext-align: center;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&.current {\\n\\t\\t\\tbackground-image: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t&.filepicker, &.default, &.color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&.color {\\n\\t\\t\\tbackground-color: var(--color-primary);\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t}\\n\\n\\t\\t&.active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&.active:not(.icon-loading):after {\\n\\t\\t\\tbackground-image: var(--icon-checkmark-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: (1024px / 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6755;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6755: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(94818); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","prefixWithBaseUrl","url","generateFilePath","getBackgroundUrl","background","time","themingDefaultBackground","enabledThemes","window","OCA","Theming","isDarkTheme","length","matchMedia","matches","join","indexOf","generateUrl","cacheBuster","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","class","active","attrs","on","pickFile","_v","_s","t","loading","setDefault","startsWith","pickColor","_l","shippedBackground","directives","name","rawName","value","details","expression","key","style","preview","$event","setShipped","theme","id","backgroundImage","img","onToggle","title","description","_e","checked","enforced","switchType","enableLabel","console","debug","availableThemes","domProps","descriptionDetail","enforceTheme","selectedTheme","themes","changeTheme","enabled","fonts","changeFont","shortcutsDisabled","changeShortcutsDisabled","updateBackground","Vue","OC","theming","App","$mount","$on","document","head","querySelectorAll","forEach","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","append","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file +{"version":3,"file":"theming-theming-settings.js?v=478aa74ec2979a9203af","mappings":";6BAAIA,sICwBSC,EAAoB,SAACC,GAAD,OAASC,EAAAA,EAAAA,kBAAiB,UAAW,GAAI,mBAAqBD,GCGlFE,EAAmB,SAACC,GAAwD,QAA5CC,EAA4C,uDAArC,EAAGC,EAAkC,uDAAP,GAC3EC,GAAgB,UAAAC,OAAOC,WAAP,mBAAYC,eAAZ,eAAqBH,gBAAiB,GACtDI,EAAwC,IAAzBJ,EAAcK,QAAqC,YAArBL,EAAc,GAC9DC,OAAOK,WAAW,gCAAgCC,SACN,IAA5CP,EAAcQ,KAAK,IAAIC,QAAQ,QAElC,MAAmB,YAAfZ,EACCE,GAAyD,oBAA7BA,GACxBW,EAAAA,EAAAA,aAAY,kCAAoC,MAAQT,OAAOC,IAAIC,QAAQQ,YAI3ElB,EADJW,EACsB,+BAGD,gCACA,WAAfP,GACHa,EAAAA,EAAAA,aAAY,4BAA8B,MAAQZ,EAGnDL,EAAkBI,gUCiB1B,sDAEA,GACA,0BACA,YACA,aAEA,OACA,YACA,YACA,mBAEA,0BACA,YACA,aAGA,KAfA,WAgBA,OACA,+EACA,aAGA,UACA,mBADA,WAEA,uCACA,OACA,OACA,SACA,wBACA,mBAKA,SACA,OADA,SACA,wJACA,uDACA,4DACA,uFAHA,uBAIA,+BACA,aALA,2BAQA,aACA,kBACA,+BACA,cAEA,wBAbA,8CAeA,WAhBA,WAgBA,uJACA,oBADA,SAEA,sEAFA,OAEA,EAFA,OAGA,iBAHA,8CAKA,WArBA,SAqBA,0JACA,YADA,SAEA,gFAFA,OAEA,EAFA,OAGA,iBAHA,8CAKA,QA1BA,SA0BA,0JACA,mBADA,SAEA,+EAFA,OAEA,EAFA,OAGA,iBAHA,8CAKA,UA/BA,WA+BA,yJACA,kBACA,+CAFA,SAGA,8EAHA,OAGA,EAHA,OAIA,iBAJA,8CAMA,SArCA,WAqCA,WACA,iHACA,uCACA,gBAEA,8FC7I+L,qICW3Le,EAAU,GAEdA,EAAQC,kBAAoB,IAC5BD,EAAQE,cAAgB,IAElBF,EAAQG,OAAS,SAAc,KAAM,QAE3CH,EAAQI,OAAS,IACjBJ,EAAQK,mBAAqB,IAEhB,IAAI,IAASL,GAKJ,KAAW,YAAiB,WALlD,eCFA,GAXgB,OACd,GCTW,WAAa,IAAIM,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,uBAAuB,CAACF,EAAG,SAAS,CAACE,YAAY,wBAAwBC,MAAM,CAAEC,OAA2B,WAAnBR,EAAIrB,YAA0B8B,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQV,EAAIW,WAAW,CAACX,EAAIY,GAAG,SAASZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,oBAAoB,UAAUd,EAAIY,GAAG,KAAKR,EAAG,SAAS,CAACE,YAAY,qBAAqBC,MAAM,CAAE,eAAgC,YAAhBP,EAAIe,QAAuBP,OAA2B,YAAnBR,EAAIrB,YAA2B8B,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQV,EAAIgB,aAAa,CAAChB,EAAIY,GAAG,SAASZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,kBAAkB,UAAUd,EAAIY,GAAG,KAAKR,EAAG,SAAS,CAACE,YAAY,mBAAmBC,MAAM,CAAEC,OAAQR,EAAIrB,WAAWsC,WAAW,MAAOR,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQV,EAAIkB,YAAY,CAAClB,EAAIY,GAAG,SAASZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,qBAAqB,UAAUd,EAAIY,GAAG,KAAKZ,EAAImB,GAAInB,EAAsB,oBAAE,SAASoB,GAAmB,OAAOhB,EAAG,SAAS,CAACiB,WAAW,CAAC,CAACC,KAAK,UAAUC,QAAQ,YAAYC,MAAOJ,EAAkBK,QAAmB,YAAEC,WAAW,0CAA0CC,IAAIP,EAAkBE,KAAKhB,YAAY,aAAaC,MAAM,CAAE,eAAgBP,EAAIe,UAAYK,EAAkBE,KAAMd,OAAQR,EAAIrB,aAAeyC,EAAkBE,MAAOM,MAAM,CAAG,mBAAoB,OAASR,EAAkBS,QAAU,KAAOpB,MAAM,CAAC,SAAW,KAAKC,GAAG,CAAC,MAAQ,SAASoB,GAAQ,OAAO9B,EAAI+B,WAAWX,EAAkBE,cAAa,KAC14C,IDWpB,EACA,KACA,WACA,MAI8B,QEnBwJ,ECwBxL,CACA,mBACA,YACA,2BAEA,OACA,UACA,aACA,YAEA,UACA,aACA,YAEA,OACA,YACA,aAEA,MACA,YACA,YAEA,QACA,aACA,aAGA,UACA,WADA,WAEA,qCAGA,KALA,WAMA,mCAGA,IATA,WAUA,oEAGA,SACA,IADA,WAEA,sBAEA,IAJA,SAIA,GACA,+CAGA,YAMA,uDALA,sDAUA,SACA,SADA,WAEA,0BAMA,2BALA,8BC3EI,EAAU,GAEd,EAAQ3B,kBAAoB,IAC5B,EAAQC,cAAgB,IAElB,EAAQC,OAAS,SAAc,KAAM,QAE3C,EAAQC,OAAS,IACjB,EAAQC,mBAAqB,IAEhB,IAAI,IAAS,GAKJ,KAAW,YAAiB,WALlD,ICFA,GAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,MAAM,CAACE,YAAY,mBAAmBC,MAAM,qBAAuBP,EAAIgC,MAAMC,IAAI,CAAC7B,EAAG,MAAM,CAACE,YAAY,yBAAyBsB,MAAM,CAAGM,gBAAiB,OAASlC,EAAImC,IAAM,KAAOzB,GAAG,CAAC,MAAQV,EAAIoC,YAAYpC,EAAIY,GAAG,KAAKR,EAAG,MAAM,CAACE,YAAY,gCAAgC,CAACF,EAAG,KAAK,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIgC,MAAMK,UAAUrC,EAAIY,GAAG,KAAKR,EAAG,IAAI,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIgC,MAAMM,gBAAgBtC,EAAIY,GAAG,KAAMZ,EAAY,SAAEI,EAAG,OAAO,CAACE,YAAY,2BAA2BG,MAAM,CAAC,KAAO,SAAS,CAACT,EAAIY,GAAG,WAAWZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,gCAAgC,YAAYd,EAAIuC,KAAKvC,EAAIY,GAAG,KAAKR,EAAG,wBAAwB,CAACE,YAAY,0BAA0BG,MAAM,CAAC,QAAUT,EAAIwC,QAAQ,SAAWxC,EAAIyC,SAAS,KAAOzC,EAAIsB,KAAK,KAAOtB,EAAI0C,YAAYhC,GAAG,CAAC,iBAAiB,SAASoB,GAAQ9B,EAAIwC,QAAQV,KAAU,CAAC9B,EAAIY,GAAG,WAAWZ,EAAIa,GAAGb,EAAIgC,MAAMW,aAAa,aAAa,OACh7B,IDWpB,EACA,KACA,WACA,MAI8B,ojCEkEhC,6CACA,+CACA,oDAEA,0CACA,iDACA,wDACA,kDAEAC,QAAQC,MAAM,mBAAoBC,GAElC,IChGiL,EDgGjL,CACA,kBACA,YACA,cACA,0BACA,sBACA,sBAGA,KATA,WAUA,OACA,kBACA,eACA,oBACA,aACA,oBACA,6BAIA,UACA,OADA,WAEA,sEAEA,MAJA,WAKA,sEAIA,cATA,WAUA,8EAGA,YAbA,WAeA,SACA,UACA,sUAEA,4CACA,6BAEA,eAtBA,WAuBA,gHAEA,kBAzBA,WA0BA,SACA,UACA,wLAEA,gDACA,4CACA,gCAEA,iBAlCA,WAmCA,0GAEA,eArCA,WAsCA,4FAIA,QA9DA,WA+DA,2BAGA,OACA,kBADA,SACA,GACA,kCAIA,SACA,iBADA,SACA,GACA,qEACA,iCACA,0BACA,iCAEA,mBAPA,WAOA,MAEA,uEAEA,iGACA,wFAIA,uFACA,wFAKA,YAtBA,YAsBA,uBAEA,iCACA,YACA,aAGA,gBAGA,4BACA,sBAEA,WAnCA,YAmCA,uBAEA,gCACA,YACA,aAGA,gBAGA,4BACA,sBAGA,wBAjDA,SAiDA,sIACA,EADA,iCAEA,cACA,0FACA,gBACA,iCAEA,MACA,mBAEA,gBAVA,8CAaA,cACA,0FACA,gBACA,iCAEA,kBAlBA,8CAuBA,qBAxEA,WAyEA,8FACA,yFAEA,iCACA,uEAEA,gCACA,uEAGA,0EAUA,WA7FA,SA6FA,iJAEA,EAFA,iCAGA,cACA,mFACA,eALA,8CAQA,cACA,4EACA,kBAVA,yDAeA,kCACA,iHAhBA,0EE1PI,GAAU,GAEd,GAAQnD,kBAAoB,IAC5B,GAAQC,cAAgB,IAElB,GAAQC,OAAS,SAAc,KAAM,QAE3C,GAAQC,OAAS,IACjB,GAAQC,mBAAqB,IAEhB,IAAI,IAAS,IAKJ,KAAW,YAAiB,WALlD,ICFA,IAXgB,OACd,GCTW,WAAa,IAAIC,EAAIC,KAASC,EAAGF,EAAIG,eAAmBC,EAAGJ,EAAIK,MAAMD,IAAIF,EAAG,OAAOE,EAAG,UAAU,CAACA,EAAG,oBAAoB,CAACE,YAAY,UAAUG,MAAM,CAAC,MAAQT,EAAIc,EAAE,UAAW,gCAAgC,eAAc,IAAQ,CAACV,EAAG,IAAI,CAAC2C,SAAS,CAAC,UAAY/C,EAAIa,GAAGb,EAAIsC,gBAAgBtC,EAAIY,GAAG,KAAKR,EAAG,IAAI,CAAC2C,SAAS,CAAC,UAAY/C,EAAIa,GAAGb,EAAIgD,sBAAsBhD,EAAIY,GAAG,KAAKR,EAAG,MAAM,CAACE,YAAY,yBAAyBN,EAAImB,GAAInB,EAAU,QAAE,SAASgC,GAAO,OAAO5B,EAAG,cAAc,CAACuB,IAAIK,EAAMC,GAAGxB,MAAM,CAAC,SAAWuB,EAAMC,KAAOjC,EAAIiD,aAAa,SAAWjD,EAAIkD,cAAcjB,KAAOD,EAAMC,GAAG,MAAQD,EAAM,OAA+B,IAAtBhC,EAAImD,OAAOhE,OAAa,KAAO,SAASuB,GAAG,CAAC,OAASV,EAAIoD,kBAAiB,GAAGpD,EAAIY,GAAG,KAAKR,EAAG,MAAM,CAACE,YAAY,yBAAyBN,EAAImB,GAAInB,EAAS,OAAE,SAASgC,GAAO,OAAO5B,EAAG,cAAc,CAACuB,IAAIK,EAAMC,GAAGxB,MAAM,CAAC,SAAWuB,EAAMqB,QAAQ,MAAQrB,EAAM,OAA8B,IAArBhC,EAAIsD,MAAMnE,OAAa,KAAO,QAAQuB,GAAG,CAAC,OAASV,EAAIuD,iBAAgB,KAAKvD,EAAIY,GAAG,KAAKR,EAAG,oBAAoB,CAACK,MAAM,CAAC,MAAQT,EAAIc,EAAE,UAAW,wBAAwB,CAACV,EAAG,IAAI,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,sOAAsOd,EAAIY,GAAG,KAAKR,EAAG,wBAAwB,CAACE,YAAY,0BAA0BG,MAAM,CAAC,QAAUT,EAAIwD,kBAAkB,KAAO,qBAAqB,KAAO,UAAU9C,GAAG,CAAC,iBAAiB,SAASoB,GAAQ9B,EAAIwD,kBAAkB1B,GAAQ,OAAS9B,EAAIyD,0BAA0B,CAACzD,EAAIY,GAAG,WAAWZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,mCAAmC,aAAa,GAAGd,EAAIY,GAAG,KAAKR,EAAG,oBAAoB,CAACE,YAAY,aAAaG,MAAM,CAAC,MAAQT,EAAIc,EAAE,UAAW,gBAAgB,CAACV,EAAG,IAAI,CAACJ,EAAIY,GAAGZ,EAAIa,GAAGb,EAAIc,EAAE,UAAW,+BAA+Bd,EAAIY,GAAG,KAAKR,EAAG,qBAAqB,CAACE,YAAY,mBAAmBG,MAAM,CAAC,WAAaT,EAAIrB,WAAW,6BAA6BqB,EAAInB,0BAA0B6B,GAAG,CAAC,oBAAoBV,EAAI0D,qBAAqB,IAAI,KAC9gE,IDWpB,EACA,KACA,WACA,MAI8B,mHEOhCC,EAAAA,GAAAA,UAAAA,GAAmBC,GACnBD,EAAAA,GAAAA,UAAAA,EAAkB7C,EAElB,IACM+C,GAAU,IADHF,EAAAA,GAAAA,OAAWG,KAExBD,GAAQE,OAAO,YAEfF,GAAQG,IAAI,qBAAqB,oBAE5BC,SAASC,KAAKC,iBAAiB,moBAAeC,SAAQ,SAAApC,GACzD,IAAMxD,EAAM,IAAI6F,IAAIrC,EAAMsC,MAC1B9F,EAAI+F,aAAaC,IAAI,IAAKC,KAAKC,OAC/B,IAAMC,EAAW3C,EAAM4C,YACvBD,EAASL,KAAO9F,EAAIqG,WACpBF,EAASG,OAAS,kBAAM9C,EAAM+C,UAC9Bd,SAASC,KAAKc,OAAOL,mECtCnBM,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOlD,GAAI,ifAAkf,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,+CAA+C,MAAQ,GAAG,SAAW,iLAAiL,eAAiB,CAAC,msCAAmsC,WAAa,MAE9gE,gECJIgD,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOlD,GAAI,+vCAAkwC,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,kEAAkE,MAAQ,GAAG,SAAW,4SAA4S,eAAiB,CAAC,22CAA22C,WAAa,MAEplG,gECJIgD,QAA0B,GAA4B,KAE1DA,EAAwBC,KAAK,CAACC,EAAOlD,GAAI,k5BAAm5B,GAAG,CAAC,QAAU,EAAE,QAAU,CAAC,2DAA2D,MAAQ,GAAG,SAAW,8SAA8S,eAAiB,CAAC,olCAAolC,WAAa,MAEz8E,QCNImD,EAA2B,GAG/B,SAASC,EAAoBC,GAE5B,IAAIC,EAAeH,EAAyBE,GAC5C,QAAqBE,IAAjBD,EACH,OAAOA,EAAaE,QAGrB,IAAIN,EAASC,EAAyBE,GAAY,CACjDrD,GAAIqD,EACJI,QAAQ,EACRD,QAAS,IAUV,OANAE,EAAoBL,GAAUM,KAAKT,EAAOM,QAASN,EAAQA,EAAOM,QAASJ,GAG3EF,EAAOO,QAAS,EAGTP,EAAOM,QAIfJ,EAAoBQ,EAAIF,EC5BxBN,EAAoBS,KAAO,WAC1B,MAAM,IAAIC,MAAM,mCCDjBV,EAAoBW,KAAO,GxBAvB1H,EAAW,GACf+G,EAAoBY,EAAI,SAASC,EAAQC,EAAUC,EAAIC,GACtD,IAAGF,EAAH,CAMA,IAAIG,EAAeC,EAAAA,EACnB,IAASC,EAAI,EAAGA,EAAIlI,EAASa,OAAQqH,IAAK,CACrCL,EAAW7H,EAASkI,GAAG,GACvBJ,EAAK9H,EAASkI,GAAG,GACjBH,EAAW/H,EAASkI,GAAG,GAE3B,IAJA,IAGIC,GAAY,EACPC,EAAI,EAAGA,EAAIP,EAAShH,OAAQuH,MACpB,EAAXL,GAAsBC,GAAgBD,IAAaM,OAAOC,KAAKvB,EAAoBY,GAAGY,OAAM,SAASlF,GAAO,OAAO0D,EAAoBY,EAAEtE,GAAKwE,EAASO,OAC3JP,EAASW,OAAOJ,IAAK,IAErBD,GAAY,EACTJ,EAAWC,IAAcA,EAAeD,IAG7C,GAAGI,EAAW,CACbnI,EAASwI,OAAON,IAAK,GACrB,IAAIO,EAAIX,SACEZ,IAANuB,IAAiBb,EAASa,IAGhC,OAAOb,EAzBNG,EAAWA,GAAY,EACvB,IAAI,IAAIG,EAAIlI,EAASa,OAAQqH,EAAI,GAAKlI,EAASkI,EAAI,GAAG,GAAKH,EAAUG,IAAKlI,EAASkI,GAAKlI,EAASkI,EAAI,GACrGlI,EAASkI,GAAK,CAACL,EAAUC,EAAIC,IyBJ/BhB,EAAoB2B,EAAI,SAAS7B,GAChC,IAAI8B,EAAS9B,GAAUA,EAAO+B,WAC7B,WAAa,OAAO/B,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAE,EAAoB8B,EAAEF,EAAQ,CAAEG,EAAGH,IAC5BA,GCLR5B,EAAoB8B,EAAI,SAAS1B,EAAS4B,GACzC,IAAI,IAAI1F,KAAO0F,EACXhC,EAAoBiC,EAAED,EAAY1F,KAAS0D,EAAoBiC,EAAE7B,EAAS9D,IAC5EgF,OAAOY,eAAe9B,EAAS9D,EAAK,CAAE6F,YAAY,EAAMC,IAAKJ,EAAW1F,MCJ3E0D,EAAoBqC,EAAI,WACvB,GAA0B,iBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAO1H,MAAQ,IAAI2H,SAAS,cAAb,GACd,MAAOC,GACR,GAAsB,iBAAX9I,OAAqB,OAAOA,QALjB,GCAxBsG,EAAoBiC,EAAI,SAASQ,EAAKC,GAAQ,OAAOpB,OAAOqB,UAAUC,eAAerC,KAAKkC,EAAKC,ICC/F1C,EAAoB0B,EAAI,SAAStB,GACX,oBAAXyC,QAA0BA,OAAOC,aAC1CxB,OAAOY,eAAe9B,EAASyC,OAAOC,YAAa,CAAE3G,MAAO,WAE7DmF,OAAOY,eAAe9B,EAAS,aAAc,CAAEjE,OAAO,KCLvD6D,EAAoB+C,IAAM,SAASjD,GAGlC,OAFAA,EAAOkD,MAAQ,GACVlD,EAAOmD,WAAUnD,EAAOmD,SAAW,IACjCnD,GCHRE,EAAoBqB,EAAI,gBCAxBrB,EAAoBkD,EAAItE,SAASuE,SAAWC,KAAKC,SAASpE,KAK1D,IAAIqE,EAAkB,CACrB,KAAM,GAaPtD,EAAoBY,EAAES,EAAI,SAASkC,GAAW,OAAoC,IAA7BD,EAAgBC,IAGrE,IAAIC,EAAuB,SAASC,EAA4BC,GAC/D,IAKIzD,EAAUsD,EALVzC,EAAW4C,EAAK,GAChBC,EAAcD,EAAK,GACnBE,EAAUF,EAAK,GAGIvC,EAAI,EAC3B,GAAGL,EAAS+C,MAAK,SAASjH,GAAM,OAA+B,IAAxB0G,EAAgB1G,MAAe,CACrE,IAAIqD,KAAY0D,EACZ3D,EAAoBiC,EAAE0B,EAAa1D,KACrCD,EAAoBQ,EAAEP,GAAY0D,EAAY1D,IAGhD,GAAG2D,EAAS,IAAI/C,EAAS+C,EAAQ5D,GAGlC,IADGyD,GAA4BA,EAA2BC,GACrDvC,EAAIL,EAAShH,OAAQqH,IACzBoC,EAAUzC,EAASK,GAChBnB,EAAoBiC,EAAEqB,EAAiBC,IAAYD,EAAgBC,IACrED,EAAgBC,GAAS,KAE1BD,EAAgBC,GAAW,EAE5B,OAAOvD,EAAoBY,EAAEC,IAG1BiD,EAAqBV,KAA4B,sBAAIA,KAA4B,uBAAK,GAC1FU,EAAmB/E,QAAQyE,EAAqBO,KAAK,KAAM,IAC3DD,EAAmBjE,KAAO2D,EAAqBO,KAAK,KAAMD,EAAmBjE,KAAKkE,KAAKD,OClDvF9D,EAAoBgE,QAAK7D,ECGzB,IAAI8D,EAAsBjE,EAAoBY,OAAET,EAAW,CAAC,OAAO,WAAa,OAAOH,EAAoB,UAC3GiE,EAAsBjE,EAAoBY,EAAEqD","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/theming/src/helpers/prefixWithBaseUrl.js","webpack:///nextcloud/apps/theming/src/helpers/getBackgroundUrl.js","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?b3fe","webpack://nextcloud/./apps/theming/src/components/BackgroundSettings.vue?65db","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=template&id=48e565ba&scoped=true&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=script&lang=js&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?f1c6","webpack://nextcloud/./apps/theming/src/components/ItemPreview.vue?8797","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&","webpack:///nextcloud/apps/theming/src/UserThemes.vue","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=script&lang=js&","webpack://nextcloud/./apps/theming/src/UserThemes.vue?52b2","webpack://nextcloud/./apps/theming/src/UserThemes.vue?7eb2","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=template&id=a788b9b8&scoped=true&","webpack:///nextcloud/apps/theming/src/settings.js","webpack:///nextcloud/apps/theming/src/UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&","webpack:///nextcloud/apps/theming/src/components/BackgroundSettings.vue?vue&type=style&index=0&id=48e565ba&scoped=true&lang=scss&","webpack:///nextcloud/apps/theming/src/components/ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/amd define","webpack:///nextcloud/webpack/runtime/amd options","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateFilePath } from '@nextcloud/router'\n\nexport const prefixWithBaseUrl = (url) => generateFilePath('theming', '', 'img/background/') + url\n","/**\n * @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n *\n * @author Avior <florian.bouillon@delta-wings.net>\n * @author Julien Veyssier <eneiluj@posteo.net>\n * @author Julius Härtl <jus@bitgrid.net>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport { generateUrl } from '@nextcloud/router'\nimport { prefixWithBaseUrl } from './prefixWithBaseUrl.js'\n\nexport const getBackgroundUrl = (background, time = 0, themingDefaultBackground = '') => {\n\tconst enabledThemes = window.OCA?.Theming?.enabledThemes || []\n\tconst isDarkTheme = (enabledThemes.length === 0 || enabledThemes[0] === 'default')\n\t\t? window.matchMedia('(prefers-color-scheme: dark)').matches\n\t\t: enabledThemes.join('').indexOf('dark') !== -1\n\n\tif (background === 'default') {\n\t\tif (themingDefaultBackground && themingDefaultBackground !== 'backgroundColor') {\n\t\t\treturn generateUrl('/apps/theming/image/background') + '?v=' + window.OCA.Theming.cacheBuster\n\t\t}\n\n\t\tif (isDarkTheme) {\n\t\t\treturn prefixWithBaseUrl('eduardo-neves-pedra-azul.jpg')\n\t\t}\n\n\t\treturn prefixWithBaseUrl('kamil-porembinski-clouds.jpg')\n\t} else if (background === 'custom') {\n\t\treturn generateUrl('/apps/theming/background') + '?v=' + time\n\t}\n\n\treturn prefixWithBaseUrl(background)\n}\n","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Julius Härtl <jus@bitgrid.net>\n - @author Greta Doci <gretadoci@gmail.com>\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license GNU AGPL version 3 or any later version\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n -->\n\n<template>\n\t<div class=\"background-selector\">\n\t\t<button class=\"background filepicker\"\n\t\t\t:class=\"{ active: background === 'custom' }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickFile\">\n\t\t\t{{ t('theming', 'Pick from Files') }}\n\t\t</button>\n\t\t<button class=\"background default\"\n\t\t\ttabindex=\"0\"\n\t\t\t:class=\"{ 'icon-loading': loading === 'default', active: background === 'default' }\"\n\t\t\t@click=\"setDefault\">\n\t\t\t{{ t('theming', 'Default image') }}\n\t\t</button>\n\t\t<button class=\"background color\"\n\t\t\t:class=\"{ active: background.startsWith('#') }\"\n\t\t\ttabindex=\"0\"\n\t\t\t@click=\"pickColor\">\n\t\t\t{{ t('theming', 'Plain background') }}\n\t\t</button>\n\t\t<button v-for=\"shippedBackground in shippedBackgrounds\"\n\t\t\t:key=\"shippedBackground.name\"\n\t\t\tv-tooltip=\"shippedBackground.details.attribution\"\n\t\t\t:class=\"{ 'icon-loading': loading === shippedBackground.name, active: background === shippedBackground.name }\"\n\t\t\ttabindex=\"0\"\n\t\t\tclass=\"background\"\n\t\t\t:style=\"{ 'background-image': 'url(' + shippedBackground.preview + ')' }\"\n\t\t\t@click=\"setShipped(shippedBackground.name)\" />\n\t</div>\n</template>\n\n<script>\nimport axios from '@nextcloud/axios'\nimport Tooltip from '@nextcloud/vue/dist/Directives/Tooltip'\nimport { generateUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport { getBackgroundUrl } from '../helpers/getBackgroundUrl.js'\nimport { prefixWithBaseUrl } from '../helpers/prefixWithBaseUrl.js'\n\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\n\nexport default {\n\tname: 'BackgroundSettings',\n\tdirectives: {\n\t\tTooltip,\n\t},\n\tprops: {\n\t\tbackground: {\n\t\t\ttype: String,\n\t\t\tdefault: 'default',\n\t\t},\n\t\tthemingDefaultBackground: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t},\n\tdata() {\n\t\treturn {\n\t\t\tbackgroundImage: generateUrl('/apps/theming/background') + '?v=' + Date.now(),\n\t\t\tloading: false,\n\t\t}\n\t},\n\tcomputed: {\n\t\tshippedBackgrounds() {\n\t\t\treturn Object.keys(shippedBackgroundList).map(fileName => {\n\t\t\t\treturn {\n\t\t\t\t\tname: fileName,\n\t\t\t\t\turl: prefixWithBaseUrl(fileName),\n\t\t\t\t\tpreview: prefixWithBaseUrl('preview/' + fileName),\n\t\t\t\t\tdetails: shippedBackgroundList[fileName],\n\t\t\t\t}\n\t\t\t})\n\t\t},\n\t},\n\tmethods: {\n\t\tasync update(data) {\n\t\t\tconst background = data.type === 'custom' || data.type === 'default' ? data.type : data.value\n\t\t\tthis.backgroundImage = getBackgroundUrl(background, data.version, this.themingDefaultBackground)\n\t\t\tif (data.type === 'color' || (data.type === 'default' && this.themingDefaultBackground === 'backgroundColor')) {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t\treturn\n\t\t\t}\n\t\t\tconst image = new Image()\n\t\t\timage.onload = () => {\n\t\t\t\tthis.$emit('update:background', data)\n\t\t\t\tthis.loading = false\n\t\t\t}\n\t\t\timage.src = this.backgroundImage\n\t\t},\n\t\tasync setDefault() {\n\t\t\tthis.loading = 'default'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/default'))\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setShipped(shipped) {\n\t\t\tthis.loading = shipped\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/shipped'), { value: shipped })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync setFile(path) {\n\t\t\tthis.loading = 'custom'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/custom'), { value: path })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tasync pickColor() {\n\t\t\tthis.loading = 'color'\n\t\t\tconst color = OCA && OCA.Theming ? OCA.Theming.color : '#0082c9'\n\t\t\tconst result = await axios.post(generateUrl('/apps/theming/background/color'), { value: color })\n\t\t\tthis.update(result.data)\n\t\t},\n\t\tpickFile() {\n\t\t\twindow.OC.dialogs.filepicker(t('theming', 'Insert from {productName}', { productName: OC.theme.name }), (path, type) => {\n\t\t\t\tif (type === OC.dialogs.FILEPICKER_TYPE_CHOOSE) {\n\t\t\t\t\tthis.setFile(path)\n\t\t\t\t}\n\t\t\t}, false, ['image/png', 'image/gif', 'image/jpeg', 'image/svg'], true, OC.dialogs.FILEPICKER_TYPE_CHOOSE)\n\t\t},\n\t},\n}\n</script>\n\n<style scoped lang=\"scss\">\n.background-selector {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: center;\n\n\t.background {\n\t\twidth: 176px;\n\t\theight: 96px;\n\t\tmargin: 8px;\n\t\tbackground-size: cover;\n\t\tbackground-position: center center;\n\t\ttext-align: center;\n\t\tborder-radius: var(--border-radius-large);\n\t\tborder: 2px solid var(--color-main-background);\n\t\toverflow: hidden;\n\n\t\t&.current {\n\t\t\tbackground-image: var(--color-background-dark);\n\t\t}\n\n\t\t&.filepicker, &.default, &.color {\n\t\t\tborder-color: var(--color-border);\n\t\t}\n\n\t\t&.color {\n\t\t\tbackground-color: var(--color-main-background-not-plain, var(--color-primary));\n\t\t\tcolor: var(--color-primary-text);\n\t\t}\n\n\t\t&.active,\n\t\t&:hover,\n\t\t&:focus {\n\t\t\tborder: 2px solid var(--color-primary);\n\t\t}\n\n\t\t&.active:not(.icon-loading):after {\n\t\t\tbackground-image: var(--icon-checkmark-white);\n\t\t\tbackground-repeat: no-repeat;\n\t\t\tbackground-position: center;\n\t\t\tbackground-size: 44px;\n\t\t\tcontent: '';\n\t\t\tdisplay: block;\n\t\t\theight: 100%;\n\t\t}\n\t}\n}\n</style>\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=48e565ba&scoped=true&lang=scss&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BackgroundSettings.vue?vue&type=style&index=0&id=48e565ba&scoped=true&lang=scss&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./BackgroundSettings.vue?vue&type=template&id=48e565ba&scoped=true&\"\nimport script from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nexport * from \"./BackgroundSettings.vue?vue&type=script&lang=js&\"\nimport style0 from \"./BackgroundSettings.vue?vue&type=style&index=0&id=48e565ba&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48e565ba\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"background-selector\"},[_c('button',{staticClass:\"background filepicker\",class:{ active: _vm.background === 'custom' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickFile}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Pick from Files'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background default\",class:{ 'icon-loading': _vm.loading === 'default', active: _vm.background === 'default' },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.setDefault}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Default image'))+\"\\n\\t\")]),_vm._v(\" \"),_c('button',{staticClass:\"background color\",class:{ active: _vm.background.startsWith('#') },attrs:{\"tabindex\":\"0\"},on:{\"click\":_vm.pickColor}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_vm.t('theming', 'Plain background'))+\"\\n\\t\")]),_vm._v(\" \"),_vm._l((_vm.shippedBackgrounds),function(shippedBackground){return _c('button',{directives:[{name:\"tooltip\",rawName:\"v-tooltip\",value:(shippedBackground.details.attribution),expression:\"shippedBackground.details.attribution\"}],key:shippedBackground.name,staticClass:\"background\",class:{ 'icon-loading': _vm.loading === shippedBackground.name, active: _vm.background === shippedBackground.name },style:({ 'background-image': 'url(' + shippedBackground.preview + ')' }),attrs:{\"tabindex\":\"0\"},on:{\"click\":function($event){return _vm.setShipped(shippedBackground.name)}}})})],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=script&lang=js&\"","<template>\n\t<div :class=\"'theming__preview--' + theme.id\" class=\"theming__preview\">\n\t\t<div class=\"theming__preview-image\" :style=\"{ backgroundImage: 'url(' + img + ')' }\" @click=\"onToggle\" />\n\t\t<div class=\"theming__preview-description\">\n\t\t\t<h3>{{ theme.title }}</h3>\n\t\t\t<p>{{ theme.description }}</p>\n\t\t\t<span v-if=\"enforced\" class=\"theming__preview-warning\" role=\"note\">\n\t\t\t\t{{ t('theming', 'Theme selection is enforced') }}\n\t\t\t</span>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"checked\"\n\t\t\t\t:disabled=\"enforced\"\n\t\t\t\t:name=\"name\"\n\t\t\t\t:type=\"switchType\">\n\t\t\t\t{{ theme.enableLabel }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nimport { generateFilePath } from '@nextcloud/router'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\n\nexport default {\n\tname: 'ItemPreview',\n\tcomponents: {\n\t\tNcCheckboxRadioSwitch,\n\t},\n\tprops: {\n\t\tenforced: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\tselected: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\ttheme: {\n\t\t\ttype: Object,\n\t\t\trequired: true,\n\t\t},\n\t\ttype: {\n\t\t\ttype: String,\n\t\t\tdefault: '',\n\t\t},\n\t\tunique: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\tcomputed: {\n\t\tswitchType() {\n\t\t\treturn this.unique ? 'switch' : 'radio'\n\t\t},\n\n\t\tname() {\n\t\t\treturn !this.unique ? this.type : null\n\t\t},\n\n\t\timg() {\n\t\t\treturn generateFilePath('theming', 'img', this.theme.id + '.jpg')\n\t\t},\n\n\t\tchecked: {\n\t\t\tget() {\n\t\t\t\treturn this.selected\n\t\t\t},\n\t\t\tset(checked) {\n\t\t\t\tconsole.debug('Changed theme', this.theme.id, checked)\n\n\t\t\t\t// If this is a radio, we can only enable\n\t\t\t\tif (!this.unique) {\n\t\t\t\t\tthis.$emit('change', { enabled: true, id: this.theme.id })\n\t\t\t\t\treturn\n\t\t\t\t}\n\n\t\t\t\t// If this is a switch, we can disable the theme\n\t\t\t\tthis.$emit('change', { enabled: checked === true, id: this.theme.id })\n\t\t\t},\n\t\t},\n\t},\n\n\tmethods: {\n\t\tonToggle() {\n\t\t\tif (this.switchType === 'radio') {\n\t\t\t\tthis.checked = true\n\t\t\t\treturn\n\t\t\t}\n\n\t\t\t// Invert state\n\t\t\tthis.checked = !this.checked\n\t\t},\n\t},\n}\n</script>\n<style lang=\"scss\" scoped>\n.theming__preview {\n\t// We make previews on 16/10 screens\n\t--ratio: 16;\n\n\tposition: relative;\n\tdisplay: flex;\n\tjustify-content: flex-start;\n\tmax-width: 800px;\n\n\t&,\n\t* {\n\t\tuser-select: none;\n\t}\n\n\t&-image {\n\t\tflex-basis: calc(16px * var(--ratio));\n\t\tflex-shrink: 0;\n\t\theight: calc(10px * var(--ratio));\n\t\tmargin-right: var(--gap);\n\t\tcursor: pointer;\n\t\tborder-radius: var(--border-radius);\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-position: top left;\n\t\tbackground-size: cover;\n\t}\n\n\t&-description {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\n\t\tlabel {\n\t\t\tpadding: 12px 0;\n\t\t}\n\t}\n\n\t&--default {\n\t\tgrid-column: span 2;\n\t}\n\n\t&-warning {\n\t\tcolor: var(--color-warning);\n\t}\n}\n\n@media (max-width: (1024px / 1.5)) {\n\t.theming__preview {\n\t\tflex-direction: column;\n\n\t\t&-image {\n\t\t\tmargin: 0;\n\t\t}\n\t}\n}\n\n</style>\n","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./ItemPreview.vue?vue&type=template&id=37ca8ab2&scoped=true&\"\nimport script from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nexport * from \"./ItemPreview.vue?vue&type=script&lang=js&\"\nimport style0 from \"./ItemPreview.vue?vue&type=style&index=0&id=37ca8ab2&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"37ca8ab2\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"theming__preview\",class:'theming__preview--' + _vm.theme.id},[_c('div',{staticClass:\"theming__preview-image\",style:({ backgroundImage: 'url(' + _vm.img + ')' }),on:{\"click\":_vm.onToggle}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-description\"},[_c('h3',[_vm._v(_vm._s(_vm.theme.title))]),_vm._v(\" \"),_c('p',[_vm._v(_vm._s(_vm.theme.description))]),_vm._v(\" \"),(_vm.enforced)?_c('span',{staticClass:\"theming__preview-warning\",attrs:{\"role\":\"note\"}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Theme selection is enforced'))+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.checked,\"disabled\":_vm.enforced,\"name\":_vm.name,\"type\":_vm.switchType},on:{\"update:checked\":function($event){_vm.checked=$event}}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.theme.enableLabel)+\"\\n\\t\\t\")])],1)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<!--\n - @copyright Copyright (c) 2020 Julius Härtl <jus@bitgrid.net>\n - @copyright Copyright (c) 2022 Greta Doci <gretadoci@gmail.com>\n -\n - @author Christopher Ng <chrng8@gmail.com>\n -\n - @license AGPL-3.0-or-later\n -\n - This program is free software: you can redistribute it and/or modify\n - it under the terms of the GNU Affero General Public License as\n - published by the Free Software Foundation, either version 3 of the\n - License, or (at your option) any later version.\n -\n - This program is distributed in the hope that it will be useful,\n - but WITHOUT ANY WARRANTY; without even the implied warranty of\n - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n - GNU Affero General Public License for more details.\n -\n - You should have received a copy of the GNU Affero General Public License\n - along with this program. If not, see <http://www.gnu.org/licenses/>.\n -\n-->\n\n<template>\n\t<section>\n\t\t<NcSettingsSection :title=\"t('theming', 'Appearance and accessibility')\"\n\t\t\t:limit-width=\"false\"\n\t\t\tclass=\"theming\">\n\t\t\t<p v-html=\"description\" />\n\t\t\t<p v-html=\"descriptionDetail\" />\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in themes\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:enforced=\"theme.id === enforceTheme\"\n\t\t\t\t\t:selected=\"selectedTheme.id === theme.id\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"themes.length === 1\"\n\t\t\t\t\ttype=\"theme\"\n\t\t\t\t\t@change=\"changeTheme\" />\n\t\t\t</div>\n\n\t\t\t<div class=\"theming__preview-list\">\n\t\t\t\t<ItemPreview v-for=\"theme in fonts\"\n\t\t\t\t\t:key=\"theme.id\"\n\t\t\t\t\t:selected=\"theme.enabled\"\n\t\t\t\t\t:theme=\"theme\"\n\t\t\t\t\t:unique=\"fonts.length === 1\"\n\t\t\t\t\ttype=\"font\"\n\t\t\t\t\t@change=\"changeFont\" />\n\t\t\t</div>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Keyboard shortcuts')\">\n\t\t\t<p>{{ t('theming', 'In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.') }}</p>\n\t\t\t<NcCheckboxRadioSwitch class=\"theming__preview-toggle\"\n\t\t\t\t:checked.sync=\"shortcutsDisabled\"\n\t\t\t\tname=\"shortcuts_disabled\"\n\t\t\t\ttype=\"switch\"\n\t\t\t\t@change=\"changeShortcutsDisabled\">\n\t\t\t\t{{ t('theming', 'Disable all keyboard shortcuts') }}\n\t\t\t</NcCheckboxRadioSwitch>\n\t\t</NcSettingsSection>\n\n\t\t<NcSettingsSection :title=\"t('theming', 'Background')\"\n\t\t\tclass=\"background\">\n\t\t\t<p>{{ t('theming', 'Set a custom background') }}</p>\n\t\t\t<BackgroundSettings class=\"background__grid\"\n\t\t\t\t:background=\"background\"\n\t\t\t\t:theming-default-background=\"themingDefaultBackground\"\n\t\t\t\t@update:background=\"updateBackground\" />\n\t\t</NcSettingsSection>\n\t</section>\n</template>\n\n<script>\nimport { generateOcsUrl } from '@nextcloud/router'\nimport { loadState } from '@nextcloud/initial-state'\nimport axios from '@nextcloud/axios'\nimport NcCheckboxRadioSwitch from '@nextcloud/vue/dist/Components/NcCheckboxRadioSwitch'\nimport NcSettingsSection from '@nextcloud/vue/dist/Components/NcSettingsSection'\n\nimport BackgroundSettings from './components/BackgroundSettings.vue'\nimport ItemPreview from './components/ItemPreview.vue'\n\nconst availableThemes = loadState('theming', 'themes', [])\nconst enforceTheme = loadState('theming', 'enforceTheme', '')\nconst shortcutsDisabled = loadState('theming', 'shortcutsDisabled', false)\n\nconst background = loadState('theming', 'background')\nconst backgroundVersion = loadState('theming', 'backgroundVersion')\nconst themingDefaultBackground = loadState('theming', 'themingDefaultBackground')\nconst shippedBackgroundList = loadState('theming', 'shippedBackgrounds')\n\nconsole.debug('Available themes', availableThemes)\n\nexport default {\n\tname: 'UserThemes',\n\tcomponents: {\n\t\tItemPreview,\n\t\tNcCheckboxRadioSwitch,\n\t\tNcSettingsSection,\n\t\tBackgroundSettings,\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\tavailableThemes,\n\t\t\tenforceTheme,\n\t\t\tshortcutsDisabled,\n\t\t\tbackground,\n\t\t\tbackgroundVersion,\n\t\t\tthemingDefaultBackground,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tthemes() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 1)\n\t\t},\n\t\tfonts() {\n\t\t\treturn this.availableThemes.filter(theme => theme.type === 2)\n\t\t},\n\n\t\t// Selected theme, fallback on first (default) if none\n\t\tselectedTheme() {\n\t\t\treturn this.themes.find(theme => theme.enabled === true) || this.themes[0]\n\t\t},\n\n\t\tdescription() {\n\t\t\t// using the `t` replace method escape html, we have to do it manually :/\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {guidelines}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.'\n\t\t\t)\n\t\t\t\t.replace('{guidelines}', this.guidelinesLink)\n\t\t\t\t.replace('{linkend}', '</a>')\n\t\t},\n\t\tguidelinesLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://www.w3.org/WAI/standards-guidelines/wcag/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdescriptionDetail() {\n\t\t\treturn t(\n\t\t\t\t'theming',\n\t\t\t\t'If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!'\n\t\t\t)\n\t\t\t\t.replace('{issuetracker}', this.issuetrackerLink)\n\t\t\t\t.replace('{designteam}', this.designteamLink)\n\t\t\t\t.replace(/\\{linkend\\}/g, '</a>')\n\t\t},\n\t\tissuetrackerLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://github.com/nextcloud/server/issues/\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t\tdesignteamLink() {\n\t\t\treturn '<a target=\"_blank\" href=\"https://nextcloud.com/design\" rel=\"noreferrer nofollow\">'\n\t\t},\n\t},\n\n\tmounted() {\n\t\tthis.updateGlobalStyles()\n\t},\n\n\twatch: {\n\t\tshortcutsDisabled(newState) {\n\t\t\tthis.changeShortcutsDisabled(newState)\n\t\t},\n\t},\n\n\tmethods: {\n\t\tupdateBackground(data) {\n\t\t\tthis.background = (data.type === 'custom' || data.type === 'default') ? data.type : data.value\n\t\t\tthis.backgroundVersion = data.version\n\t\t\tthis.updateGlobalStyles()\n\t\t\tthis.$emit('update:background')\n\t\t},\n\t\tupdateGlobalStyles() {\n\t\t\t// Override primary-invert-if-bright and color-primary-text if background is set\n\t\t\tconst isBackgroundBright = shippedBackgroundList[this.background]?.theming === 'dark'\n\t\t\tif (isBackgroundBright) {\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'invert(100%)')\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--color-primary-text', '#000000')\n\t\t\t\t// document.body.removeAttribute('data-theme-dark')\n\t\t\t\t// document.body.setAttribute('data-theme-light', 'true')\n\t\t\t} else {\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--primary-invert-if-bright', 'no')\n\t\t\t\tdocument.querySelector('#header').style.setProperty('--color-primary-text', '#ffffff')\n\t\t\t\t// document.body.removeAttribute('data-theme-light')\n\t\t\t\t// document.body.setAttribute('data-theme-dark', 'true')\n\t\t\t}\n\t\t},\n\t\tchangeTheme({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tif (theme.id === id && enabled) {\n\t\t\t\t\ttheme.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\ttheme.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\t\tchangeFont({ enabled, id }) {\n\t\t\t// Reset selected and select new one\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tif (font.id === id && enabled) {\n\t\t\t\t\tfont.enabled = true\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\tfont.enabled = false\n\t\t\t})\n\n\t\t\tthis.updateBodyAttributes()\n\t\t\tthis.selectItem(enabled, id)\n\t\t},\n\n\t\tasync changeShortcutsDisabled(newState) {\n\t\t\tif (newState) {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tdata: {\n\t\t\t\t\t\tconfigValue: 'yes',\n\t\t\t\t\t},\n\t\t\t\t\tmethod: 'POST',\n\t\t\t\t})\n\t\t\t} else {\n\t\t\t\tawait axios({\n\t\t\t\t\turl: generateOcsUrl('apps/provisioning_api/api/v1/config/users/{appId}/{configKey}', {\n\t\t\t\t\t\tappId: 'theming',\n\t\t\t\t\t\tconfigKey: 'shortcuts_disabled',\n\t\t\t\t\t}),\n\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t})\n\t\t\t}\n\t\t},\n\n\t\tupdateBodyAttributes() {\n\t\t\tconst enabledThemesIDs = this.themes.filter(theme => theme.enabled === true).map(theme => theme.id)\n\t\t\tconst enabledFontsIDs = this.fonts.filter(font => font.enabled === true).map(font => font.id)\n\n\t\t\tthis.themes.forEach(theme => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${theme.id}`, theme.enabled)\n\t\t\t})\n\t\t\tthis.fonts.forEach(font => {\n\t\t\t\tdocument.body.toggleAttribute(`data-theme-${font.id}`, font.enabled)\n\t\t\t})\n\n\t\t\tdocument.body.setAttribute('data-themes', [...enabledThemesIDs, ...enabledFontsIDs].join(','))\n\t\t},\n\n\t\t/**\n\t\t * Commit a change and force reload css\n\t\t * Fetching the file again will trigger the server update\n\t\t *\n\t\t * @param {boolean} enabled the theme state\n\t\t * @param {string} themeId the theme ID to change\n\t\t */\n\t\tasync selectItem(enabled, themeId) {\n\t\t\ttry {\n\t\t\t\tif (enabled) {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}/enable', { themeId }),\n\t\t\t\t\t\tmethod: 'PUT',\n\t\t\t\t\t})\n\t\t\t\t} else {\n\t\t\t\t\tawait axios({\n\t\t\t\t\t\turl: generateOcsUrl('apps/theming/api/v1/theme/{themeId}', { themeId }),\n\t\t\t\t\t\tmethod: 'DELETE',\n\t\t\t\t\t})\n\t\t\t\t}\n\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(err, err.response)\n\t\t\t\tOC.Notification.showTemporary(t('theming', err.response.data.ocs.meta.message + '. Unable to apply the setting.'))\n\t\t\t}\n\t\t},\n\t},\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.theming {\n\t// Limit width of settings sections for readability\n\tp {\n\t\tmax-width: 800px;\n\t}\n\n\t// Proper highlight for links and focus feedback\n\t&::v-deep a {\n\t\tfont-weight: bold;\n\n\t\t&:hover,\n\t\t&:focus {\n\t\t\ttext-decoration: underline;\n\t\t}\n\t}\n\n\t&__preview-list {\n\t\t--gap: 30px;\n\n\t\tdisplay: grid;\n\t\tmargin-top: var(--gap);\n\t\tcolumn-gap: var(--gap);\n\t\trow-gap: var(--gap);\n\t\tgrid-template-columns: 1fr 1fr;\n\t}\n}\n\n.background {\n\t&__grid {\n\t\tmargin-top: 30px;\n\t}\n}\n\n@media (max-width: 1440px) {\n\t.theming__preview-list {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n}\n</style>\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=script&lang=js&\"","\n import API from \"!../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/sass-loader/dist/cjs.js!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./UserThemes.vue?vue&type=template&id=a788b9b8&scoped=true&\"\nimport script from \"./UserThemes.vue?vue&type=script&lang=js&\"\nexport * from \"./UserThemes.vue?vue&type=script&lang=js&\"\nimport style0 from \"./UserThemes.vue?vue&type=style&index=0&id=a788b9b8&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"a788b9b8\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('NcSettingsSection',{staticClass:\"theming\",attrs:{\"title\":_vm.t('theming', 'Appearance and accessibility'),\"limit-width\":false}},[_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.description)}}),_vm._v(\" \"),_c('p',{domProps:{\"innerHTML\":_vm._s(_vm.descriptionDetail)}}),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.themes),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"enforced\":theme.id === _vm.enforceTheme,\"selected\":_vm.selectedTheme.id === theme.id,\"theme\":theme,\"unique\":_vm.themes.length === 1,\"type\":\"theme\"},on:{\"change\":_vm.changeTheme}})}),1),_vm._v(\" \"),_c('div',{staticClass:\"theming__preview-list\"},_vm._l((_vm.fonts),function(theme){return _c('ItemPreview',{key:theme.id,attrs:{\"selected\":theme.enabled,\"theme\":theme,\"unique\":_vm.fonts.length === 1,\"type\":\"font\"},on:{\"change\":_vm.changeFont}})}),1)]),_vm._v(\" \"),_c('NcSettingsSection',{attrs:{\"title\":_vm.t('theming', 'Keyboard shortcuts')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'In some cases keyboard shortcuts can interfer with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.')))]),_vm._v(\" \"),_c('NcCheckboxRadioSwitch',{staticClass:\"theming__preview-toggle\",attrs:{\"checked\":_vm.shortcutsDisabled,\"name\":\"shortcuts_disabled\",\"type\":\"switch\"},on:{\"update:checked\":function($event){_vm.shortcutsDisabled=$event},\"change\":_vm.changeShortcutsDisabled}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('theming', 'Disable all keyboard shortcuts'))+\"\\n\\t\\t\")])],1),_vm._v(\" \"),_c('NcSettingsSection',{staticClass:\"background\",attrs:{\"title\":_vm.t('theming', 'Background')}},[_c('p',[_vm._v(_vm._s(_vm.t('theming', 'Set a custom background')))]),_vm._v(\" \"),_c('BackgroundSettings',{staticClass:\"background__grid\",attrs:{\"background\":_vm.background,\"theming-default-background\":_vm.themingDefaultBackground},on:{\"update:background\":_vm.updateBackground}})],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2018 John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @author John Molakvoæ <skjnldsv@protonmail.com>\n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see <http://www.gnu.org/licenses/>.\n *\n */\n\nimport Vue from 'vue'\nimport App from './UserThemes.vue'\n\n// bind to window\nVue.prototype.OC = OC\nVue.prototype.t = t\n\nconst View = Vue.extend(App)\nconst theming = new View()\ntheming.$mount('#theming')\n\ntheming.$on('update:background', () => {\n\t// Refresh server-side generated theming CSS\n\t[...document.head.querySelectorAll('link.theme')].forEach(theme => {\n\t\tconst url = new URL(theme.href)\n\t\turl.searchParams.set('v', Date.now())\n\t\tconst newTheme = theme.cloneNode()\n\t\tnewTheme.href = url.toString()\n\t\tnewTheme.onload = () => theme.remove()\n\t\tdocument.head.append(newTheme)\n\t})\n})\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming p[data-v-a788b9b8]{max-width:800px}.theming[data-v-a788b9b8] a{font-weight:bold}.theming[data-v-a788b9b8] a:hover,.theming[data-v-a788b9b8] a:focus{text-decoration:underline}.theming__preview-list[data-v-a788b9b8]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap);grid-template-columns:1fr 1fr}.background__grid[data-v-a788b9b8]{margin-top:30px}@media(max-width: 1440px){.theming__preview-list[data-v-a788b9b8]{display:flex;flex-direction:column}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/UserThemes.vue\"],\"names\":[],\"mappings\":\"AA+RC,4BACC,eAAA,CAID,4BACC,gBAAA,CAEA,oEAEC,yBAAA,CAIF,wCACC,WAAA,CAEA,YAAA,CACA,qBAAA,CACA,qBAAA,CACA,kBAAA,CACA,6BAAA,CAKD,mCACC,eAAA,CAIF,0BACC,wCACC,YAAA,CACA,qBAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.theming {\\n\\t// Limit width of settings sections for readability\\n\\tp {\\n\\t\\tmax-width: 800px;\\n\\t}\\n\\n\\t// Proper highlight for links and focus feedback\\n\\t&::v-deep a {\\n\\t\\tfont-weight: bold;\\n\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\ttext-decoration: underline;\\n\\t\\t}\\n\\t}\\n\\n\\t&__preview-list {\\n\\t\\t--gap: 30px;\\n\\n\\t\\tdisplay: grid;\\n\\t\\tmargin-top: var(--gap);\\n\\t\\tcolumn-gap: var(--gap);\\n\\t\\trow-gap: var(--gap);\\n\\t\\tgrid-template-columns: 1fr 1fr;\\n\\t}\\n}\\n\\n.background {\\n\\t&__grid {\\n\\t\\tmargin-top: 30px;\\n\\t}\\n}\\n\\n@media (max-width: 1440px) {\\n\\t.theming__preview-list {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".background-selector[data-v-48e565ba]{display:flex;flex-wrap:wrap;justify-content:center}.background-selector .background[data-v-48e565ba]{width:176px;height:96px;margin:8px;background-size:cover;background-position:center center;text-align:center;border-radius:var(--border-radius-large);border:2px solid var(--color-main-background);overflow:hidden}.background-selector .background.current[data-v-48e565ba]{background-image:var(--color-background-dark)}.background-selector .background.filepicker[data-v-48e565ba],.background-selector .background.default[data-v-48e565ba],.background-selector .background.color[data-v-48e565ba]{border-color:var(--color-border)}.background-selector .background.color[data-v-48e565ba]{background-color:var(--color-main-background-not-plain, var(--color-primary));color:var(--color-primary-text)}.background-selector .background.active[data-v-48e565ba],.background-selector .background[data-v-48e565ba]:hover,.background-selector .background[data-v-48e565ba]:focus{border:2px solid var(--color-primary)}.background-selector .background.active[data-v-48e565ba]:not(.icon-loading):after{background-image:var(--icon-checkmark-white);background-repeat:no-repeat;background-position:center;background-size:44px;content:\\\"\\\";display:block;height:100%}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/BackgroundSettings.vue\"],\"names\":[],\"mappings\":\"AAoJA,sCACC,YAAA,CACA,cAAA,CACA,sBAAA,CAEA,kDACC,WAAA,CACA,WAAA,CACA,UAAA,CACA,qBAAA,CACA,iCAAA,CACA,iBAAA,CACA,wCAAA,CACA,6CAAA,CACA,eAAA,CAEA,0DACC,6CAAA,CAGD,+KACC,gCAAA,CAGD,wDACC,6EAAA,CACA,+BAAA,CAGD,yKAGC,qCAAA,CAGD,kFACC,4CAAA,CACA,2BAAA,CACA,0BAAA,CACA,oBAAA,CACA,UAAA,CACA,aAAA,CACA,WAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.background-selector {\\n\\tdisplay: flex;\\n\\tflex-wrap: wrap;\\n\\tjustify-content: center;\\n\\n\\t.background {\\n\\t\\twidth: 176px;\\n\\t\\theight: 96px;\\n\\t\\tmargin: 8px;\\n\\t\\tbackground-size: cover;\\n\\t\\tbackground-position: center center;\\n\\t\\ttext-align: center;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tborder: 2px solid var(--color-main-background);\\n\\t\\toverflow: hidden;\\n\\n\\t\\t&.current {\\n\\t\\t\\tbackground-image: var(--color-background-dark);\\n\\t\\t}\\n\\n\\t\\t&.filepicker, &.default, &.color {\\n\\t\\t\\tborder-color: var(--color-border);\\n\\t\\t}\\n\\n\\t\\t&.color {\\n\\t\\t\\tbackground-color: var(--color-main-background-not-plain, var(--color-primary));\\n\\t\\t\\tcolor: var(--color-primary-text);\\n\\t\\t}\\n\\n\\t\\t&.active,\\n\\t\\t&:hover,\\n\\t\\t&:focus {\\n\\t\\t\\tborder: 2px solid var(--color-primary);\\n\\t\\t}\\n\\n\\t\\t&.active:not(.icon-loading):after {\\n\\t\\t\\tbackground-image: var(--icon-checkmark-white);\\n\\t\\t\\tbackground-repeat: no-repeat;\\n\\t\\t\\tbackground-position: center;\\n\\t\\t\\tbackground-size: 44px;\\n\\t\\t\\tcontent: '';\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\t}\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, \".theming__preview[data-v-37ca8ab2]{--ratio: 16;position:relative;display:flex;justify-content:flex-start;max-width:800px}.theming__preview[data-v-37ca8ab2],.theming__preview *[data-v-37ca8ab2]{user-select:none}.theming__preview-image[data-v-37ca8ab2]{flex-basis:calc(16px*var(--ratio));flex-shrink:0;height:calc(10px*var(--ratio));margin-right:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-description[data-v-37ca8ab2]{display:flex;flex-direction:column}.theming__preview-description label[data-v-37ca8ab2]{padding:12px 0}.theming__preview--default[data-v-37ca8ab2]{grid-column:span 2}.theming__preview-warning[data-v-37ca8ab2]{color:var(--color-warning)}@media(max-width: 682.6666666667px){.theming__preview[data-v-37ca8ab2]{flex-direction:column}.theming__preview-image[data-v-37ca8ab2]{margin:0}}\", \"\",{\"version\":3,\"sources\":[\"webpack://./apps/theming/src/components/ItemPreview.vue\"],\"names\":[],\"mappings\":\"AAiGA,mCAEC,WAAA,CAEA,iBAAA,CACA,YAAA,CACA,0BAAA,CACA,eAAA,CAEA,wEAEC,gBAAA,CAGD,yCACC,kCAAA,CACA,aAAA,CACA,8BAAA,CACA,uBAAA,CACA,cAAA,CACA,kCAAA,CACA,2BAAA,CACA,4BAAA,CACA,qBAAA,CAGD,+CACC,YAAA,CACA,qBAAA,CAEA,qDACC,cAAA,CAIF,4CACC,kBAAA,CAGD,2CACC,0BAAA,CAIF,oCACC,mCACC,qBAAA,CAEA,yCACC,QAAA,CAAA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n.theming__preview {\\n\\t// We make previews on 16/10 screens\\n\\t--ratio: 16;\\n\\n\\tposition: relative;\\n\\tdisplay: flex;\\n\\tjustify-content: flex-start;\\n\\tmax-width: 800px;\\n\\n\\t&,\\n\\t* {\\n\\t\\tuser-select: none;\\n\\t}\\n\\n\\t&-image {\\n\\t\\tflex-basis: calc(16px * var(--ratio));\\n\\t\\tflex-shrink: 0;\\n\\t\\theight: calc(10px * var(--ratio));\\n\\t\\tmargin-right: var(--gap);\\n\\t\\tcursor: pointer;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t\\tbackground-repeat: no-repeat;\\n\\t\\tbackground-position: top left;\\n\\t\\tbackground-size: cover;\\n\\t}\\n\\n\\t&-description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\n\\t\\tlabel {\\n\\t\\t\\tpadding: 12px 0;\\n\\t\\t}\\n\\t}\\n\\n\\t&--default {\\n\\t\\tgrid-column: span 2;\\n\\t}\\n\\n\\t&-warning {\\n\\t\\tcolor: var(--color-warning);\\n\\t}\\n}\\n\\n@media (max-width: (1024px / 1.5)) {\\n\\t.theming__preview {\\n\\t\\tflex-direction: column;\\n\\n\\t\\t&-image {\\n\\t\\t\\tmargin: 0;\\n\\t\\t}\\n\\t}\\n}\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdD = function () {\n\tthrow new Error('define cannot be used indirect');\n};","__webpack_require__.amdO = {};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = function(module) {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 6755;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t6755: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [7874], function() { return __webpack_require__(58078); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","prefixWithBaseUrl","url","generateFilePath","getBackgroundUrl","background","time","themingDefaultBackground","enabledThemes","window","OCA","Theming","isDarkTheme","length","matchMedia","matches","join","indexOf","generateUrl","cacheBuster","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","_vm","this","_h","$createElement","_c","_self","staticClass","class","active","attrs","on","pickFile","_v","_s","t","loading","setDefault","startsWith","pickColor","_l","shippedBackground","directives","name","rawName","value","details","expression","key","style","preview","$event","setShipped","theme","id","backgroundImage","img","onToggle","title","description","_e","checked","enforced","switchType","enableLabel","console","debug","availableThemes","domProps","descriptionDetail","enforceTheme","selectedTheme","themes","changeTheme","enabled","fonts","changeFont","shortcutsDisabled","changeShortcutsDisabled","updateBackground","Vue","OC","theming","App","$mount","$on","document","head","querySelectorAll","forEach","URL","href","searchParams","set","Date","now","newTheme","cloneNode","toString","onload","remove","append","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","loaded","__webpack_modules__","call","m","amdD","Error","amdO","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","get","g","globalThis","Function","e","obj","prop","prototype","hasOwnProperty","Symbol","toStringTag","nmd","paths","children","b","baseURI","self","location","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","data","moreModules","runtime","some","chunkLoadingGlobal","bind","nc","__webpack_exports__"],"sourceRoot":""}
\ No newline at end of file diff --git a/lib/l10n/el.js b/lib/l10n/el.js index f14b4a14d10..cdbf79ee7a2 100644 --- a/lib/l10n/el.js +++ b/lib/l10n/el.js @@ -90,8 +90,10 @@ OC.L10N.register( "__language_name__" : "Ελληνικά", "This is an automatically sent email, please do not reply." : "Αυτό είναι ένα μήνυμα ηλεκτρονικού ταχυδρομείου που στάλθηκε αυτόματα, παρακαλούμε μην απαντήσετε.", "Help" : "Βοήθεια", + "Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα", "Apps" : "Εφαρμογές", "Personal settings" : "Προσωπικές ρυθμίσεις", + "Administration settings" : "Ρυθμίσεις διαχείρισης", "Settings" : "Ρυθμίσεις", "Log out" : "Έξοδος", "Users" : "Χρήστες", @@ -204,6 +206,7 @@ OC.L10N.register( "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Η εφαρμογή \"%1$s\" δεν μπορεί να εγκατασταθεί επειδή δεν πληρούνται τα προαπαιτούμενα: %2$s", "a safe home for all your data" : "ένα ασφαλές μέρος για όλα τα δεδομένα σας", "File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλούμε προσπαθήστε αργότερα", + "Cannot download file" : "Δεν είναι δυνατή η λήψη του αρχείου", "Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή", "Authentication error" : "Σφάλμα πιστοποίησης", "Token expired. Please reload page." : "Το αναγνωριστικό έληξε. Παρακαλούμε φορτώστε ξανά την σελίδα.", @@ -231,6 +234,7 @@ OC.L10N.register( "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Κάποια αρθρώματα της PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως εκλιπόντα;", "Please ask your server administrator to restart the web server." : "Παρακαλούμε ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.", + "Please ask your server administrator to check the Nextcloud configuration." : "Παρακαλούμε ζητήστε από το διαχειριστή του διακομιστή σας να ελέγξει τη διαμόρφωση του Nextcloud.", "PostgreSQL >= 9 required." : "Απαιτείται PostgreSQL >= 9.", "Please upgrade your database version." : "Παρακαλούμε αναβαθμίστε την έκδοση της βάσης δεδομένων σας.", "Your data directory is readable by other users." : "Ο κατάλογος δεδομένων σας είναι αναγνώσιμος από άλλους χρήστες.", diff --git a/lib/l10n/el.json b/lib/l10n/el.json index 692c3911529..3e572f51092 100644 --- a/lib/l10n/el.json +++ b/lib/l10n/el.json @@ -88,8 +88,10 @@ "__language_name__" : "Ελληνικά", "This is an automatically sent email, please do not reply." : "Αυτό είναι ένα μήνυμα ηλεκτρονικού ταχυδρομείου που στάλθηκε αυτόματα, παρακαλούμε μην απαντήσετε.", "Help" : "Βοήθεια", + "Appearance and accessibility" : "Εμφάνιση και προσβασιμότητα", "Apps" : "Εφαρμογές", "Personal settings" : "Προσωπικές ρυθμίσεις", + "Administration settings" : "Ρυθμίσεις διαχείρισης", "Settings" : "Ρυθμίσεις", "Log out" : "Έξοδος", "Users" : "Χρήστες", @@ -202,6 +204,7 @@ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Η εφαρμογή \"%1$s\" δεν μπορεί να εγκατασταθεί επειδή δεν πληρούνται τα προαπαιτούμενα: %2$s", "a safe home for all your data" : "ένα ασφαλές μέρος για όλα τα δεδομένα σας", "File is currently busy, please try again later" : "Το αρχείο χρησιμοποιείται αυτή τη στιγμή, παρακαλούμε προσπαθήστε αργότερα", + "Cannot download file" : "Δεν είναι δυνατή η λήψη του αρχείου", "Application is not enabled" : "Δεν ενεργοποιήθηκε η εφαρμογή", "Authentication error" : "Σφάλμα πιστοποίησης", "Token expired. Please reload page." : "Το αναγνωριστικό έληξε. Παρακαλούμε φορτώστε ξανά την σελίδα.", @@ -229,6 +232,7 @@ "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Αυτό πιθανόν προκλήθηκε από προσωρινή μνήμη (cache)/επιταχυντή όπως τη Zend OPcache ή τον eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Κάποια αρθρώματα της PHP έχουν εγκατασταθεί, αλλά είναι ακόμα καταγεγραμμένες ως εκλιπόντα;", "Please ask your server administrator to restart the web server." : "Παρακαλούμε ζητήστε από το διαχειριστή του διακομιστή σας να επανεκκινήσει το διακομιστή δικτύου σας.", + "Please ask your server administrator to check the Nextcloud configuration." : "Παρακαλούμε ζητήστε από το διαχειριστή του διακομιστή σας να ελέγξει τη διαμόρφωση του Nextcloud.", "PostgreSQL >= 9 required." : "Απαιτείται PostgreSQL >= 9.", "Please upgrade your database version." : "Παρακαλούμε αναβαθμίστε την έκδοση της βάσης δεδομένων σας.", "Your data directory is readable by other users." : "Ο κατάλογος δεδομένων σας είναι αναγνώσιμος από άλλους χρήστες.", diff --git a/lib/l10n/sk.js b/lib/l10n/sk.js index dd7491a93cf..0b41da87d2f 100644 --- a/lib/l10n/sk.js +++ b/lib/l10n/sk.js @@ -92,6 +92,8 @@ OC.L10N.register( "Help" : "Pomoc", "Appearance and accessibility" : "Vzhľad a správanie", "Apps" : "Aplikácie", + "Personal settings" : "Osobné nastavenia", + "Administration settings" : "Nastavenia administrácie", "Settings" : "Nastavenia", "Log out" : "Odhlásiť sa", "Users" : "Používatelia", @@ -112,6 +114,10 @@ OC.L10N.register( "Role" : "Rola", "Unknown user" : "Neznámy používateľ", "Additional settings" : "Ďalšie nastavenia", + "Enter the database username and name for %s" : "Zadajte užívateľské meno a názov databázy pre %s", + "Enter the database username for %s" : "Zadajte užívateľské meno databázy pre %s", + "Enter the database name for %s" : "Zadajte názov databázy pre %s", + "You cannot use dots in the database name %s" : "V názve databázy %s nemôžete používať bodky", "MySQL username and/or password not valid" : "Neplatné užívateľské meno a/alebo heslo do MySQL", "You need to enter details of an existing account." : "Musíte zadať údaje existujúceho účtu.", "Oracle connection could not be established" : "Nie je možné pripojiť sa k Oracle", @@ -204,6 +210,7 @@ OC.L10N.register( "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Aplikáciu \"%1$s\" nie je možné inštalovať, pretože nie sú splnené nasledovné závislosti: %2$s", "a safe home for all your data" : "bezpečný domov pre všetky vaše dáta", "File is currently busy, please try again later" : "Súbor sa práve používa, skúste prosím neskôr", + "Cannot download file" : "Nemožno stiahnuť súbor", "Application is not enabled" : "Aplikácia nie je zapnutá", "Authentication error" : "Chyba autentifikácie", "Token expired. Please reload page." : "Token vypršal. Obnovte, prosím, stránku.", diff --git a/lib/l10n/sk.json b/lib/l10n/sk.json index 9338813cec9..60431429c35 100644 --- a/lib/l10n/sk.json +++ b/lib/l10n/sk.json @@ -90,6 +90,8 @@ "Help" : "Pomoc", "Appearance and accessibility" : "Vzhľad a správanie", "Apps" : "Aplikácie", + "Personal settings" : "Osobné nastavenia", + "Administration settings" : "Nastavenia administrácie", "Settings" : "Nastavenia", "Log out" : "Odhlásiť sa", "Users" : "Používatelia", @@ -110,6 +112,10 @@ "Role" : "Rola", "Unknown user" : "Neznámy používateľ", "Additional settings" : "Ďalšie nastavenia", + "Enter the database username and name for %s" : "Zadajte užívateľské meno a názov databázy pre %s", + "Enter the database username for %s" : "Zadajte užívateľské meno databázy pre %s", + "Enter the database name for %s" : "Zadajte názov databázy pre %s", + "You cannot use dots in the database name %s" : "V názve databázy %s nemôžete používať bodky", "MySQL username and/or password not valid" : "Neplatné užívateľské meno a/alebo heslo do MySQL", "You need to enter details of an existing account." : "Musíte zadať údaje existujúceho účtu.", "Oracle connection could not be established" : "Nie je možné pripojiť sa k Oracle", @@ -202,6 +208,7 @@ "App \"%1$s\" cannot be installed because the following dependencies are not fulfilled: %2$s" : "Aplikáciu \"%1$s\" nie je možné inštalovať, pretože nie sú splnené nasledovné závislosti: %2$s", "a safe home for all your data" : "bezpečný domov pre všetky vaše dáta", "File is currently busy, please try again later" : "Súbor sa práve používa, skúste prosím neskôr", + "Cannot download file" : "Nemožno stiahnuť súbor", "Application is not enabled" : "Aplikácia nie je zapnutá", "Authentication error" : "Chyba autentifikácie", "Token expired. Please reload page." : "Token vypršal. Obnovte, prosím, stránku.", diff --git a/lib/l10n/uk.js b/lib/l10n/uk.js index 636cdffe96d..ed50b9c41a9 100644 --- a/lib/l10n/uk.js +++ b/lib/l10n/uk.js @@ -125,7 +125,7 @@ OC.L10N.register( "PostgreSQL username and/or password not valid" : "PostgreSQL ім'я користувача та/або пароль не дійсні", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу", - "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Здається що екземпляр цього %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Ймовірно, що сервер %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, вилучіть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.", "Set an admin username." : "Встановіть ім'я адміністратора.", "Set an admin password." : "Встановіть пароль адміністратора.", @@ -234,7 +234,7 @@ OC.L10N.register( "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini." : "Щоб вирішити цю проблему, установіть для <code>mbstring.func_overload</code> значення <code>0</code> у вашому php.ini.", "libxml2 2.7.0 is at least required. Currently %s is installed." : "Необхідно libxml2 версії принаймні 2.7.0. На разі встановлена %s.", "To fix this issue update your libxml2 version and restart your web server." : "Що виправити це оновіть версію libxml2 та перезапустіть веб-сервер.", - "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Схоже, що PHP налаштовано на вичищення блоків вбудованої документації. Це зробить кілька основних додатків недоступними.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Схоже, що PHP налаштовано на обрізання блоків вбудованих документів. Це зробить кілька головних застосунків недоступними.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Це, ймовірно, обумовлено використанням кеша/прискорювача такого як Zend OPcache або eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Модулі PHP були встановлені, але вони все ще перераховані як відсутні?", "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.", @@ -265,9 +265,9 @@ OC.L10N.register( "%s enter the database name." : "%s введіть назву бази даних.", "%s you may not use dots in the database name" : "%s не можна використовувати крапки в назві бази даних", "Cannot read file" : "Неможливо прочитати файл", - "Cannot write into \"config\" directory" : "Не можу писати у теку \"config\"", + "Cannot write into \"config\" directory" : "Неможливо записувати до каталгу \"config\"", "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Зазвичай це можна виправити, надавши веб-серверу доступ для запису до каталогу конфігурації. Побачити %s", - "Cannot write into \"apps\" directory" : "Не можу писати у теку \"apps\"", + "Cannot write into \"apps\" directory" : "Неможливо записувати до каталогу \"apps\"", "This can usually be fixed by giving the webserver write access to the apps directory or disabling the App Store in the config file." : "Зазвичай це можна виправити, надавши веб-серверу доступ для запису до каталогу програм або вимкнувши App Store у файлі конфігурації.", "Cannot create \"data\" directory" : "Неможливо створити каталог даних", "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Зазвичай це можна виправити, надавши веб-серверу доступ на запис до кореневого каталогу. Побачити %s", diff --git a/lib/l10n/uk.json b/lib/l10n/uk.json index b31359775d1..cd827cb7145 100644 --- a/lib/l10n/uk.json +++ b/lib/l10n/uk.json @@ -123,7 +123,7 @@ "PostgreSQL username and/or password not valid" : "PostgreSQL ім'я користувача та/або пароль не дійсні", "Mac OS X is not supported and %s will not work properly on this platform. Use it at your own risk! " : "Mac OS X не підтримується і %s не буде коректно працювати на цій платформі. Випробовуєте на свій риск!", "For the best results, please consider using a GNU/Linux server instead." : "Для кращих результатів розгляньте можливість використання GNU/Linux серверу", - "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Здається що екземпляр цього %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.", + "It seems that this %s instance is running on a 32-bit PHP environment and the open_basedir has been configured in php.ini. This will lead to problems with files over 4 GB and is highly discouraged." : "Ймовірно, що сервер %s працює в 32-бітному PHP середовищі і open_basedir повинен бути налаштований в php.ini. Це призведе до проблем з файлами більше 4 ГБ і це дуже не рекомендується.", "Please remove the open_basedir setting within your php.ini or switch to 64-bit PHP." : "Будь ласка, вилучіть параметр open_basedir у вашому php.ini або перейдіть на 64-бітний PHP.", "Set an admin username." : "Встановіть ім'я адміністратора.", "Set an admin password." : "Встановіть пароль адміністратора.", @@ -232,7 +232,7 @@ "To fix this issue set <code>mbstring.func_overload</code> to <code>0</code> in your php.ini." : "Щоб вирішити цю проблему, установіть для <code>mbstring.func_overload</code> значення <code>0</code> у вашому php.ini.", "libxml2 2.7.0 is at least required. Currently %s is installed." : "Необхідно libxml2 версії принаймні 2.7.0. На разі встановлена %s.", "To fix this issue update your libxml2 version and restart your web server." : "Що виправити це оновіть версію libxml2 та перезапустіть веб-сервер.", - "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Схоже, що PHP налаштовано на вичищення блоків вбудованої документації. Це зробить кілька основних додатків недоступними.", + "PHP is apparently set up to strip inline doc blocks. This will make several core apps inaccessible." : "Схоже, що PHP налаштовано на обрізання блоків вбудованих документів. Це зробить кілька головних застосунків недоступними.", "This is probably caused by a cache/accelerator such as Zend OPcache or eAccelerator." : "Це, ймовірно, обумовлено використанням кеша/прискорювача такого як Zend OPcache або eAccelerator.", "PHP modules have been installed, but they are still listed as missing?" : "Модулі PHP були встановлені, але вони все ще перераховані як відсутні?", "Please ask your server administrator to restart the web server." : "Будь ласка, зверніться до адміністратора, щоб перезавантажити сервер.", @@ -263,9 +263,9 @@ "%s enter the database name." : "%s введіть назву бази даних.", "%s you may not use dots in the database name" : "%s не можна використовувати крапки в назві бази даних", "Cannot read file" : "Неможливо прочитати файл", - "Cannot write into \"config\" directory" : "Не можу писати у теку \"config\"", + "Cannot write into \"config\" directory" : "Неможливо записувати до каталгу \"config\"", "This can usually be fixed by giving the webserver write access to the config directory. See %s" : "Зазвичай це можна виправити, надавши веб-серверу доступ для запису до каталогу конфігурації. Побачити %s", - "Cannot write into \"apps\" directory" : "Не можу писати у теку \"apps\"", + "Cannot write into \"apps\" directory" : "Неможливо записувати до каталогу \"apps\"", "This can usually be fixed by giving the webserver write access to the apps directory or disabling the App Store in the config file." : "Зазвичай це можна виправити, надавши веб-серверу доступ для запису до каталогу програм або вимкнувши App Store у файлі конфігурації.", "Cannot create \"data\" directory" : "Неможливо створити каталог даних", "This can usually be fixed by giving the webserver write access to the root directory. See %s" : "Зазвичай це можна виправити, надавши веб-серверу доступ на запис до кореневого каталогу. Побачити %s", diff --git a/lib/private/Authentication/WebAuthn/Manager.php b/lib/private/Authentication/WebAuthn/Manager.php index 1edfb6a85ed..de22fd6d450 100644 --- a/lib/private/Authentication/WebAuthn/Manager.php +++ b/lib/private/Authentication/WebAuthn/Manager.php @@ -145,6 +145,7 @@ class Manager { $tokenBindingHandler, $extensionOutputCheckerHandler ); + $authenticatorAttestationResponseValidator->setLogger($this->logger); try { // Load the data @@ -212,7 +213,9 @@ class Manager { $this->repository, $tokenBindingHandler, $extensionOutputCheckerHandler, - $algorithmManager + $algorithmManager, + null, + $this->logger, ); try { diff --git a/lib/private/Collaboration/Reference/File/FileReferenceProvider.php b/lib/private/Collaboration/Reference/File/FileReferenceProvider.php index 9109cbf7377..4e6c7ea623f 100644 --- a/lib/private/Collaboration/Reference/File/FileReferenceProvider.php +++ b/lib/private/Collaboration/Reference/File/FileReferenceProvider.php @@ -28,6 +28,7 @@ use OC\User\NoUserException; use OCP\Collaboration\Reference\IReference; use OCP\Collaboration\Reference\IReferenceProvider; use OCP\Collaboration\Reference\Reference; +use OCP\Files\IMimeTypeDetector; use OCP\Files\InvalidPathException; use OCP\Files\IRootFolder; use OCP\Files\Node; @@ -42,12 +43,18 @@ class FileReferenceProvider implements IReferenceProvider { private IRootFolder $rootFolder; private ?string $userId; private IPreview $previewManager; + private IMimeTypeDetector $mimeTypeDetector; - public function __construct(IURLGenerator $urlGenerator, IRootFolder $rootFolder, IUserSession $userSession, IPreview $previewManager) { + public function __construct(IURLGenerator $urlGenerator, + IRootFolder $rootFolder, + IUserSession $userSession, + IMimeTypeDetector $mimeTypeDetector, + IPreview $previewManager) { $this->urlGenerator = $urlGenerator; $this->rootFolder = $rootFolder; $this->userId = $userSession->getUser() ? $userSession->getUser()->getUID() : null; $this->previewManager = $previewManager; + $this->mimeTypeDetector = $mimeTypeDetector; } public function matchReference(string $referenceText): bool { @@ -127,7 +134,12 @@ class FileReferenceProvider implements IReferenceProvider { $reference->setTitle($file->getName()); $reference->setDescription($file->getMimetype()); $reference->setUrl($this->urlGenerator->getAbsoluteURL('/index.php/f/' . $fileId)); - $reference->setImageUrl($this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 1600, 'y' => 630, 'fileId' => $fileId])); + if ($this->previewManager->isMimeSupported($file->getMimeType())) { + $reference->setImageUrl($this->urlGenerator->linkToRouteAbsolute('core.Preview.getPreviewByFileId', ['x' => 1600, 'y' => 630, 'fileId' => $fileId])); + } else { + $fileTypeIconUrl = $this->mimeTypeDetector->mimeTypeIcon($file->getMimeType()); + $reference->setImageUrl($fileTypeIconUrl); + } $reference->setRichObject('file', [ 'id' => $file->getId(), diff --git a/lib/private/Contacts/ContactsMenu/ContactsStore.php b/lib/private/Contacts/ContactsMenu/ContactsStore.php index dd4bd973fa9..a0a14cd9cbd 100644 --- a/lib/private/Contacts/ContactsMenu/ContactsStore.php +++ b/lib/private/Contacts/ContactsMenu/ContactsStore.php @@ -284,8 +284,11 @@ class ContactsStore implements IContactsStore { private function contactArrayToEntry(array $contact): Entry { $entry = new Entry(); - if (isset($contact['id'])) { - $entry->setId($contact['id']); + if (isset($contact['UID'])) { + $uid = $contact['UID']; + $entry->setId($uid); + $avatar = $this->urlGenerator->linkToRouteAbsolute('core.avatar.getAvatar', ['userId' => $uid, 'size' => 64]); + $entry->setAvatar($avatar); } if (isset($contact['FN'])) { diff --git a/lib/private/Server.php b/lib/private/Server.php index e7f4019e00b..a94e0d568b0 100644 --- a/lib/private/Server.php +++ b/lib/private/Server.php @@ -1222,6 +1222,7 @@ class Server extends ServerContainer implements IServerContainer { return new ThemingDefaults( $c->get(\OCP\IConfig::class), $c->getL10N('theming'), + $c->get(IUserSession::class), $c->get(IURLGenerator::class), $c->get(ICacheFactory::class), new Util($c->get(\OCP\IConfig::class), $this->get(IAppManager::class), $c->getAppDataDir('theming')), diff --git a/lib/public/Calendar/ICalendar.php b/lib/public/Calendar/ICalendar.php index f1f2d5eb6f1..e1644ca82aa 100644 --- a/lib/public/Calendar/ICalendar.php +++ b/lib/public/Calendar/ICalendar.php @@ -75,4 +75,10 @@ interface ICalendar { * @since 13.0.0 */ public function getPermissions(): int; + + /** + * Whether the calendar is deleted + * @since 26.0.0 + */ + public function isDeleted(): bool; } diff --git a/tests/acceptance/features/app-theming.feature b/tests/acceptance/features/app-theming.feature index 1da12679d04..6f11a61455f 100644 --- a/tests/acceptance/features/app-theming.feature +++ b/tests/acceptance/features/app-theming.feature @@ -9,10 +9,12 @@ Feature: app-theming # The "eventually" part is not really needed here, as the colour is not # being animated at this point, but there is no need to create a specific # step just for this. - And I see that the primary color is eventually "#0082C9" + And I see that the primary color is eventually "#00639a" + And I see that the non-plain background color variable is eventually "#0082c9" When I set the "Color" parameter in the Theming app to "#C9C9C9" Then I see that the parameters in the Theming app are eventually saved And I see that the primary color is eventually "#C9C9C9" + And I see that the non-plain background color variable is eventually "#C9C9C9" Scenario: resetting the color updates the primary color Given I am logged in as the admin @@ -22,6 +24,8 @@ Feature: app-theming And I set the "Color" parameter in the Theming app to "#C9C9C9" And I see that the parameters in the Theming app are eventually saved And I see that the primary color is eventually "#C9C9C9" + And I see that the non-plain background color variable is eventually "#C9C9C9" When I reset the "Color" parameter in the Theming app to its default value Then I see that the parameters in the Theming app are eventually saved - And I see that the primary color is eventually "#0082C9" + And I see that the primary color is eventually "#00639a" + And I see that the non-plain background color variable is eventually "#0082c9" diff --git a/tests/acceptance/features/bootstrap/ThemingAppContext.php b/tests/acceptance/features/bootstrap/ThemingAppContext.php index de5da5950d2..adf04eaca00 100644 --- a/tests/acceptance/features/bootstrap/ThemingAppContext.php +++ b/tests/acceptance/features/bootstrap/ThemingAppContext.php @@ -142,6 +142,23 @@ class ThemingAppContext implements Context, ActorAwareInterface { } /** + * @Then I see that the non-plain background color variable is eventually :color + */ + public function iSeeThatTheNonPlainBackgroundColorVariableIsEventually($color) { + $colorVariableMatchesCallback = function () use ($color) { + $colorVariable = $this->actor->getSession()->evaluateScript("return getComputedStyle(document.documentElement).getPropertyValue('--color-main-background-not-plain').trim();"); + $colorVariable = $this->getRGBArray($colorVariable); + $color = $this->getRGBArray($color); + + return $colorVariable == $color; + }; + + if (!Utils::waitFor($colorVariableMatchesCallback, $timeout = 10 * $this->actor->getFindTimeoutMultiplier(), $timeoutStep = 1)) { + Assert::fail("The non-plain background color variable is not $color yet after $timeout seconds"); + } + } + + /** * @Then I see that the parameters in the Theming app are eventually saved */ public function iSeeThatTheParametersInTheThemingAppAreEventuallySaved() { diff --git a/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php b/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php index aa609aedbb9..dfdd67fbb23 100644 --- a/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php +++ b/tests/lib/Contacts/ContactsMenu/ContactsStoreTest.php @@ -140,6 +140,10 @@ class ContactsStoreTest extends TestCase { public function testGetContactsWithoutBinaryImage() { /** @var IUser|MockObject $user */ $user = $this->createMock(IUser::class); + $this->urlGenerator->expects($this->any()) + ->method('linkToRouteAbsolute') + ->with('core.avatar.getAvatar', $this->anything()) + ->willReturn('https://urlToNcAvatar.test'); $this->contactsManager->expects($this->once()) ->method('search') ->with($this->equalTo(''), $this->equalTo(['FN', 'EMAIL'])) @@ -163,7 +167,7 @@ class ContactsStoreTest extends TestCase { $entries = $this->contactsStore->getContacts($user, ''); $this->assertCount(2, $entries); - $this->assertNull($entries[1]->getAvatar()); + $this->assertSame('https://urlToNcAvatar.test', $entries[1]->getAvatar()); } public function testGetContactsWithoutAvatarURI() { |